http://qs321.pair.com?node_id=560146


in reply to Re: How to get minimum start date in these start dates ?
in thread How to get minimum start date in these start dates ?

cog While I agree that a Schwartzian transfrom is a good idea here, I would like to make two small comments.

1. Rather than doing three comparisons, first on year, then month, then day, I believe (though I haven't benchmarked it) that it would be faster to do a single comaprison of a string in the form yyyymmdd, which can be easily created with a regex.

2. Depending on your data set, it maybe considerable faster to use an Orcish manouver. Especially if the same date may appear multiple time in the list (and I didn't nessicarily see anthing in the post to indicate that that wouldn't happen).

my(%date_hash) = (); my(@start_date) = qw(01-06-2007 01-08-2006 01-06-2006 01-07-2007 06-01 +-2007); my @sorted_dates = sort({ ($date_has{$a} ||= &trans_date($a)) <=> ($date_has{$b} ||= &trans_date($b)) } @start_date); print join("\n", @sorted_dates); sub trans_date { my $date = shift; $date =~ s/(\d{2})-(\d{2})-(\d{4})/$3$2$1/; return $date; }

They say that time changes things, but you actually have to change them yourself.

—Andy Warhol