- 论坛徽章:
- 307
|
我的代码如下:- #!/usr/bin/perl
- use strict;
- use warnings;
- sub get_min_item{
- my ($luck, $hash, $min, %hData) = (@_, 0);
- my $fmt = "'px' = %d, 'dt' = '%d'\n";
- foreach my $k (keys %$hash){
- my ($num, $item) = map {$_, $hash->{$k}{$_}} sort {$a <=> $b} keys %{$hash->{$k}};
- $hData{$k} = [$num, $item->{'px'}, $item->{'dt'}];
- }
- my ($px, $dt);
- foreach (map { $min = $_->[-1] if (!$min); $min eq $_->[-1] ? $_->[0] : () } sort {$a->[1] <=> $b->[1]} map {[$_, @{$hData{$_}}]} keys %hData){
- return sprintf($fmt,@{$hData{$_}}[1,-1]) if ($luck eq $_);
- if ($_ ne $luck and !$px){
- ($px, $dt) = @{$hData{$_}}[1, -1];
- #print "IN!<$px|$dt>\n";
- }
- }
- print "OUT!<$px|$dt>\n"; # 执行不到这里, 为啥呀!!!
- #return sprintf($fmt,$px,$dt);
- }
- my $hash1 = +{
- 'CSH' => { '3' => {'px' => 20, 'dt' => '20161221'}, '4' => {'px' => 10, 'dt' => '20161221'} },
- 'OTH' => { '1' => {'px' => 30, 'dt' => '20161221'}, '2' => {'px' => 40, 'dt' => '20171221'} },
- 'ABC' => { '2' => {'px' => 10, 'dt' => '20191221'}, '3' => {'px' => 25, 'dt' => '20201221'} },
- };
- my $hash2 = +{
- 'CSH' => {'3' => {'px' => 10, 'dt' => '20161221'}, '4' => {'px' => 10, 'dt' => '20161221'}},
- 'OTH' => {'1' => {'px' => 30, 'dt' => '20161221'}, '2' => {'px' => 40, 'dt' => '20171221'}},
- 'ABC' => {'2' => {'px' => 10, 'dt' => '20191221'}, '3' => {'px' => 25, 'dt' => '20201221'}},
- };
- get_min_item ('CSH', $hash2);
复制代码 |
|