use strict; use warnings; use Date::Parse; open my $csv,'<','unsorteddates.csv' or die "Unable to open for read"; my @unsorted = map { chomp; my @parts = split ',',$_; [ str2time($parts[0]),$parts[1] ] } <$csv>; print join "\n", map {scalar localtime ($$_[0]).",$$_[1]"} sort {$$a[0] <=> $$b[0]} @unsorted; # output Sun Apr 2 00:44:00 2000,mttsmshub1 Wed Feb 2 00:44:00 2005,mttsmshub1 Fri Feb 3 00:32:00 2012,tttsmshub1 Mon Feb 4 00:24:00 2013,mttsmshub1 Fri Feb 5 00:39:00 2016,mttsmshub1