メールのsubject一覧を表示する
perl -e 'open(STDOUT, "| nkf"); foreach $f (@ARGV) { $_=`formail -x subject: < $f`; s/\n[ \t]+/ /sg; print }' *
当初シェルスクリプトでtrを使って、
for f in *; do cat $f | formail -x subject: | tr -d '[:space:]' | nkf; echo; done
こんな風にしてたんだけど、これだと空白が消えてしまって英語のタイトルで悲しいことになるのに気づいて、代わりにsedでやろうとしたら行をまたいで処理する方法がわからなかったので、いっそのことPerlで書いてしまえ、とやってできたのが最初に示したコード。
PerlのモットーはTMTOWTDIだけど、それは言語内に限った話じゃない。どの言語で書くかまで含めれば、あらゆる言語がTMTOWTDIの範疇に含まれる。
…なんてことをPythonプログラマに対して言ってみたい。
(ここで言ってるのは言語設計に対する哲学の話で、言語自体の優劣とはまた別)
別解(ほとんど余談)
perl -e 'open(STDOUT, "| nkf"); foreach (map { scalar `formail -x subject: < $_` } @ARGV) { s/\n[ \t]+/ /sg; print }' *
暗黙の$_を使いまくってるので、ここまでくるとさすがに読みづらいか(代入文がないので、関数プログラミングっぽくてある意味美しいんだけど)。