use warnings; use strict; use Time::Piece; use List::Util qw/shuffle/; my @input = shuffle( "Wed Oct 5 04:08:28 2018", "Fri Nov 2 14:11:28 2018", "Tue Oct 16 17:10:00 2018", "Fri Nov 2 14:11:03 2018", ); my @output = map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [$_, Time::Piece->strptime($_, '%a %b %d %H:%M:%S %Y') ->epoch ] } @input; print "$_\n" for @output; __END__ Wed Oct 5 04:08:28 2018 Tue Oct 16 17:10:00 2018 Fri Nov 2 14:11:03 2018 Fri Nov 2 14:11:28 2018