[gray]#!/usr/bin/perl -w[/gray]
[url=http://perldoc.perl.org/functions/use.html][black][b]use[/b][/black][/url] [green]strict[/green][red];[/red]
[url=http://perldoc.perl.org/functions/my.html][black][b]my[/b][/black][/url] [blue]@dateorder[/blue][red];[/red]
[black][b]my[/b][/black] [blue]%data[/blue][red];[/red]
[olive][b]while[/b][/olive] [red]([/red]<>[red])[/red] [red]{[/red]
[url=http://perldoc.perl.org/functions/chomp.html][black][b]chomp[/b][/black][/url][red];[/red]
[black][b]my[/b][/black] [red]([/red][blue]$date[/blue],[blue]$val[/blue][red])[/red] = [url=http://perldoc.perl.org/functions/split.html][black][b]split[/b][/black][/url][red];[/red]
[gray][i]# keep track of the order in which dates appeared[/i][/gray]
[gray][i]# (hash keys are not necessarily sorted)[/i][/gray]
[olive][b]if[/b][/olive] [red]([/red]![url=http://perldoc.perl.org/functions/defined.html][black][b]defined[/b][/black][/url][red]([/red][blue]$data[/blue][red]{[/red][blue]$date[/blue][red]}[/red][red])[/red][red])[/red] [red]{[/red] [url=http://perldoc.perl.org/functions/push.html][black][b]push[/b][/black][/url] [blue]@dateorder[/blue],[blue]$date[/blue] [red]}[/red]
[black][b]push[/b][/black] [blue]@[/blue][red]{[/red][blue]$data[/blue][red]{[/red][blue]$date[/blue][red]}[/red][red]}[/red],[blue]$val[/blue][red];[/red]
[red]}[/red]
[gray][i]# print headings[/i][/gray]
[olive][b]foreach[/b][/olive] [black][b]my[/b][/black] [blue]$d[/blue] [red]([/red][blue]@dateorder[/blue][red])[/red] [red]{[/red] [url=http://perldoc.perl.org/functions/printf.html][black][b]printf[/b][/black][/url] [red]"[/red][purple]%-12s[/purple][red]"[/red],[blue]$d[/blue] [red]}[/red]
[url=http://perldoc.perl.org/functions/print.html][black][b]print[/b][/black][/url] [red]"[/red][purple][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
[gray][i]# print data[/i][/gray]
[olive][b]for[/b][/olive] [red]([/red][black][b]my[/b][/black] [blue]$i[/blue]=[fuchsia]0[/fuchsia][red];[/red] [black][b]defined[/b][/black][red]([/red][blue]$data[/blue][red]{[/red][blue]$dateorder[/blue][red][[/red][fuchsia]0[/fuchsia][red]][/red][red]}[/red][red][[/red][blue]$i[/blue][red]][/red][red])[/red][red];[/red] [blue]$i[/blue]++[red])[/red] [red]{[/red]
[olive][b]foreach[/b][/olive] [black][b]my[/b][/black] [blue]$d[/blue] [red]([/red][blue]@dateorder[/blue][red])[/red] [red]{[/red] [black][b]printf[/b][/black] [red]"[/red][purple]%-12d[/purple][red]"[/red],[blue]$data[/blue][red]{[/red][blue]$d[/blue][red]}[/red][red][[/red][blue]$i[/blue][red]][/red] [red]}[/red]
[black][b]print[/b][/black] [red]"[/red][purple][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
[red]}[/red]