一个hash排序问题,请赐教!

一个hash排序问题,请赐教!

#!/usr/bin/perl

use strict;
my %hash=(
         John => "1982.1.5",
         Caul => "1978.11.3",
         Lee => "1976.3.2",
         Mary => '1980.6.23',
         );
$hash{Kayle} = '1984.6.12';
$hash{Ray} = '1978.5.29';
while ((my $key, my $value) = each %hash) {
    print "$key, $value\n" if ($value gt "1980");
}

上面的程序列出了1980年以后出生的人员名字和对应的生日。
现在,我想把上面的结果按生日排序输出,请问如何修改?谢谢!

搜, 以前的贴子有, 不止一贴.

另外, (my $key, my $value)怪怪的
foreach my $k (sort { $hash{$a} cmp $hash{$b} } keys %hash) {
    my $key = $k;
    my $value = $hash{$k};

    print "$key, $value\n" if ($value gt "1980");
}