my ($aDate) = $a =~ /\bdate:\s*"(\d{4}-\d{2}-\d{2})"/; my ($bDate) = $b =~ /\bdate:\s*"(\d{4}-\d{2}-\d{2})"/; #### use JSON::XS qw( decode_json ); my @sorted = map { substr($_, 10) } sort map { decode_json($_)->{date} . $_ } @events; #### @events = grep /\S/, @events;