ファイルの一部修正で開眼したこと

仕事場の環境はWindowsなんですが、都合上ActivePerlが入ってるので、この機会に覚えるか!と思って、仕事の合間に勉強してました。
「必要は発明の母」というのがプログラムの勉強でも重要だと思ってるので、仕事に直結したものを考えたら、僕の場合は、サブフォルダ以下の対象ファイルを全て置換する、という物になりました。

VBAやC、あと秀丸マクロでファイル操作したことはあるので、ファイルハンドラは全く抵抗ないですが、openして、printして、closeして、って書いてくと結構面倒なんですよね。*1
また、バージョン管理ツールが入ってるため、修正後ファイル作ってリネームをすると、別ファイル扱いにされてしまうため、1回配列にpushして、そこから同じファイルに書き出し?等する必要があります。
globもフォルダ構成を再帰的に読みとってくれないので、関数の再帰呼び出しして…、
とか考えていくと、スクリプト言語ってそんな楽でもないのか…。と思ってしまいました。

ところが、ふとしたきっかけで、あっさり2行で完成。

FOR /R . %%f in (*.java) do (perl -i.bak -p -e "s/foo/bar/g" %%f)
DEL /S /F *.bak

unixCygwin使ってる人なら、sedで十分と言いたくなるような物なのは判ってますし、perl使いなら全部perlで書くのが理想なのかもしれませんが、たったこれだけでファイルの一括置換が可能ということに正直感動しました。
プログラム書いてて感動したのって何年ぶりだろう?

*1:その辺Groovyは便利そうです