grepとmapの使い分け
「Effective Perl」でgrepとmapの使い分けについて学んだので簡単な纏めです。
#!/usr/bin/perl use strict; use warnings; chomp (my @list = `ls *.txt`); # 元の要素から抽出したものだけのリスト my @grepped = grep { /(.*)\.txt$/ } @list; print join ",", @grepped, "\n"; # 元の要素のコピーから加工した別のリスト my @mapped = map { /(.*)\.txt$/ } @list; print join ",", @mapped, "\n"; # 元の要素自体を編集してしまう場合はfor/foreachを使うべき s/\.txt/\.log/g for @list; print join ",", @list, "\n"; 実行結果 foo.txt,hoge.txt,var.txt, foo,hoge,var, foo.log,hoge.log,var.log,
「Effective Perl」は「初めてのPerl」「続・初めてのPerl」で一通り基礎的な事を学んだあと「じゃ、実際どういうときにどう使うんだろう」っていう段階にはピッタリな良著だと思います(まさに序章にあるように「赤ちゃん言葉(baby talk)」の段階を脱するのに最適な)。