perl
1use strict; 2use warnings; 3 4my %hash = ('1'=>10, '3'=>9, '5'=>8, '7'=>7, '9'=>6); 5my ($one, $other) = (0, 0); 6 7for my $k (sort { $b cmp $a } keys %hash) { 8 ($k ne '1') ? $other += $hash{$k} : $one = $hash{$k}; 9} 10 11print $one, " と ", $other;
上記のようなコードの時、
感覚的には、「10と30」のように表示してほしいのですが、
どうしてか、「10と9」と表示されます。
perl
1#($k ne '1') ? $other += $hash{$k} : $one = $hash{$k}; 2if ($k ne '1') { 3 $other += $hash{$k}; 4} else { 5 $one = $hash{$k}; 6}
三項演算子の部分を、上記のように変更すると期待通りの結果が表示されるのですが、
今ひとつ理解に苦しんでいます・・・
初歩的な質問ですが、三項演算子でなぜ「10と30」とならないのかお教えください。
perlのバージョンは、5.18.2です。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/30 14:17