[perl] mapではまり中
二つの違いがよく分からない
0が返るときと返らないときの違いは何?
perl -le 'print map { $_ if (!$seen{$_}++) } qw(1 1 2 2);' 12
perl -le 'print map { $_ if ($_%2) } qw(1 1 2 2);' 1100
分かった! 単純に論理否定(!)演算子が値を返さないからだ
$ perl -le 'map {print !$seen{$_}++ } (2, 2, 1, 1);' 1 1
結論:空配列 () を返すのが無難。
perl -le 'print map { !$seen{$_}++ ? $_:() } (2,2,1,1)'