Thanks apl !
Here is the updated code (still does not work), I get nothing from the print.
#! perl -slw
use strict;
use diagnostics;
use Data::Dump qw[ pp ];
sub by_hour{
my ($a,$b) = @_;
my $h_a;
my $mn_a;
my $h_b;
my $mn_b;
print STDOUT "a is $a\n";
print STDOUT "b is $b\n";
my $res;
if ($a =~ /(\d\d):(\d\d)/){
$h_a = $1;
$mn_a = $2;
}
else{
$res = 0;
}
if ($b =~ /(\d\d):(\d\d)/){
$h_a = $1;
$mn_a = $2;
}
else{
$res = 0;
}
print STDOUT "h_a is $h_a\n";
print STDOUT "h_b is $h_b\n";
print STDOUT "mn_a is $mn_a\n";
print STDOUT "mn_b is $mn_b\n";
if ($h_a < $h_b){
$res = -1;
}
if ($h_a > $h_b){
$res = 1;
}
if ($h_a == $h_b){
if ($mn_a < $mn_b){
$res = -1;
}
if ($mn_a > $mn_b){
$res =1;
}
if ($mn_a == $mn_b){
$res = 0;
}
}
return $res;
}
my %in;
while (<DATA>){
m[(\d\d:\d\d) (.+)$] and push @{ $in{ $1 } }, $2;
}
for my $hr ( sort by_hour keys %in) {
print STDOUT "$hr\n";
}
__DATA__
11:10 A1
12:30 E4
11:30 Z4
15:50 H5
12:02 H6
12:25 B2
11:25 A8
12:30 F3
14:30 E7
12:50 E15
12:55 E16