It works, so long as each element is 0 padded, and you're using consistent delimiters between the two items to be compared. The following won't work:
'2004-9-1' lt '2004-10-1'
'2004/09/01' lt '2004-09-01'
I typically get around the second issue by stripping out all non-digits, and then comparing. The first one I haven't found a simple one-line solution for, as I get stuff that's both delimited and run together. If it was always delimited:
sub normalize_date { return join( '', map { sprintf( '%02i', $_ ) } sp
+lit (/\D+/, $_[0]) ) }
sub compare_dates { return normalize_date($_[0]) cmp normalize_date($_
+[1]) }
hmm ... I guess this _would_ work for me, as the non-delimited stuff I get is always 0 padded.