知らなかった。。 my @arr = ( { key => 1 }, { key => 2 }, { key => undef }, { key => 3 } ); のようなデータに対し、全要素の"key"に対応する値を取り出したmapを得ると print "$_\n" for map { $_->{key} } @arr; 1 2 Use of uninitialized value $_ in concatenation (.) or string ... 3となる。mapの結果はundefも含む4要素の配列ということになる。 ここからundefのやつを除きたい、というとき、今までずっと print "$_\n" for (grep { defined } map { $_->{key} } @arr); ってやってmap後のものをdefinedで篩にかけてた。けど print "$_