2017-04-17 4 views
1

PerlのList::Utilモジュールを使用して、実際の値とともに変数名をmax()から返す方法はありますか?例:Perlのmax関数から変数名を返す方法はありますか?

my $a = 1; 
my $b = 2; 
my $c = 3; 

my $max = max($a,$b,$c); 

どのように私は3変数名$cと同様、得ることができますか?

#psuedocode 
if(max is from $c) { 
print "Max from C"; 
} 

それとも/ O List::Util wがこれを行う方法:私の意図は、のような何かをするのですか?

+1

あなたがキーを介して、ハッシュ、例えば '%、H =(=> 1、B => 2、C => 3)'、ループを作成し、最大値と対応するキー値の両方を節約できる –

+2

List :: Utilは変数がまったくないことを知りません。それはただリストを見るだけです。ソート/チェックのために得られる値は、1つ以上の配列、または関数の戻り値でもあります。私は恐れています。 – simbabque

答えて

3
sub pairmax { 
    my $name = shift; 
    my $max = shift; 
    while (@_) { 
     if ($_[1] > $max) { 
      $name = shift; 
      $max = shift; 
     } else { 
      shift; 
      shift; 
     } 
    } 

    return wantarray ? ($name,$max) : $name; 
} 

my $key_of_max = pairmax(a=>$a, b=>$b, c=>$c); 

my ($key_of_max, $max) = pairmax(a=>$a, b=>$b, c=>$c); 
関連する問題