use strict; use DateTime::Format::Strptime; my $dtf = new DateTime::Format::Strptime( pattern => '%a %d-%b-%y', locale => 'en_US'); my @events = ; my @sorted_events = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [ $_, $dtf->parse_datetime( (split /\|/)[14])->ymd ] } @events; print @sorted_events; # now you save the array of sorted events and "feed" that to your script __DATA__ |Puerto Rico||Santiago Apostol Catholic School|Las Croabas Road, Urb Santa Isidra|Fajardo|PR||00738|Modesto|Garcia|Counselor|787/863-0524|787/863-6655|Sat 09-DEC-06| |Puerto Rico||Santiago Apostol Catholic School|Las Croabas Road, Urb Santa Isidra|Fajardo|PR||00738|Modesto|Garcia|Counselor|787/863-0524|787/863-6655|Sat 09-JUN-07| |Puerto Rico||Santiago Apostol Catholic School|Las Croabas Road, Urb Santa Isidra|Fajardo|PR||00738|Modesto|Garcia|Counselor|787/863-0524|787/863-6655|Sat 10-FEB-07| |Puerto Rico||Santiago Apostol Catholic School|Las Croabas Road, Urb Santa Isidra|Fajardo|PR||00738|Modesto|Garcia|Counselor|787/863-0524|787/863-6655|Sat 14-APR-07| |Puerto Rico||Santiago Apostol Catholic School|Las Croabas Road, Urb Santa Isidra|Fajardo|PR||00738|Modesto|Garcia|Counselor|787/863-0524|787/863-6655|Sat 28-OCT-06| |Puerto Rico||Santiago Apostol Catholic School|Las Croabas Road, Urb Santa Isidra|Fajardo|PR||00738|Modesto|Garcia|Counselor|787/863-0524|787/863-6655|Sun 10-DEC-06| |Puerto Rico||Santiago Apostol Catholic School|Las Croabas Road, Urb Santa Isidra|Fajardo|PR||00738|Modesto|Garcia|Counselor|787/863-0524|787/863-6655|Sun 10-JUN-07| |Puerto Rico||Santiago Apostol Catholic School|Las Croabas Road, Urb Santa Isidra|Fajardo|PR||00738|Modesto|Garcia|Counselor|787/863-0524|787/863-6655|Sun 15-APR-07| |Puerto Rico||Santiago Apostol Catholic School|Las Croabas Road, Urb Santa Isidra|Fajardo|PR||00738|Modesto|Garcia|Counselor|787/863-0524|787/863-6655|Sun 29-OCT-06|