質問編集履歴

1 一部、変数名を間違っていました

circus55

circus55 score 66

2015/07/30 23:02  投稿

三項演算子の挙動についてお教えください
```perl
use strict;
use warnings;
my %hash = ('1'=>10, '3'=>9, '5'=>8, '7'=>7, '9'=>6);
my ($one, $other) = (0, 0);
for my $k (sort { $b cmp $a } keys %hash) {
   ($k ne '1') ? $other += $hash{$k} : $one = $hash{$k};
}
print $one, " と ", $other;
```
上記のようなコードの時、
感覚的には、「10と30」のように表示してほしいのですが、
どうしてか、「10と9」と表示されます。
```perl
#($k ne '1') ? $other += $hash{$k} : $one = $hash{$k};
if ($k ne '1') {
   $other += $hash{$k};
} else {
   $other = $hash{$k};
   $one = $hash{$k};
}
```
三項演算子の部分を、上記のように変更すると期待通りの結果が表示されるのですが、
今ひとつ理解に苦しんでいます・・・
初歩的な質問ですが、三項演算子でなぜ「10と30」とならないのかお教えください。
perlのバージョンは、5.18.2です。
よろしくお願いします。
  • Perl

    598 questions

    Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る