#cat unsorteddates.csv 2016-02-05:00:39,mttsmshub1 2005-02-02:00:44,mttsmshub1 2012-02-03:00:32,tttsmshub1 2013-02-04:00:24,mttsmshub1 2000-04-02:00:44,mttsmshub1 #### ( [1454629140, "mttsmshub1"], [1107301440, "mttsmshub1"], [1328225520, "tttsmshub1"], [1359933840, "mttsmshub1"], [954629040, "mttsmshub1"], ) #### 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