Thanks a lot apl
Here is the program to take into account your remarks.
However, there is still a problem.
#! 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;
my $res;
if ($a =~ /(\d\d):(\d\d)/){
$h_a = $1;
$mn_a = $2;
}
if ($b =~ /(\d\d):(\d\d)/){
$h_a = $1;
$mn_a = $2;
}
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;
}
my @keys = keys %in;
my @times = sort @keys;
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