perlのワンライナーはコマンド上(端末エミュレータやDos窓など)からperlスクリプトを実行できます。


いちいち簡単なスクリプトのためにperlのスクリプトファイルを作成する必要がないんで便利です。


つっても、ワンライナー(one liner)という文字からわかると思いますが、使えるスクリプトは一行だけですけど。


でもperlなら一行だけでもできること多いです。


perlの正規表現機能を使いたいなら、あるファイル群を読み込んで正規表現や置換してファイル出力するなんて処理は実用的かもしれません。



ワンライナーはperlコマンドに-eオプションで実行できます。


まずは、helloと表示するだけのワンライナーです。(linux,unix環境)


>perl -e 'print "hello\n"; '

hello


ちなみにwindows環境で実行すると下のようなエラーが出ました。


>perl -e 'print "hello\n"; '
Can't find string terminator "'" anywhere before EOF at -e line 1.


windowsの場合は、スクリプト部分を''で囲むのでなく""で囲むと実行できます。


>perl -e "print 'hello';"
hello


読み込んだファイルに対して順次(一行づつ)処理を実行する場合は-nオプションを指定します。

-nオプションはwhile(<>)ループで囲まれていると考えることができます。

下の例は、text.txtファイルでcatという単語が含まれている行を表示しています。

$ cat test.txt
cat hogecat
dog hogedog
cat hogecat2
cat hogecat2
dog hogedog2
$ perl -ne 'print if /cat/;' test.txt
cat hogecat
cat hogecat2
cat hogecat2

次は、s///演算子でcatをdogに置換して出力します。

$ perl -ne 's/cat/dog/g; print' test.txt
dog hogedog
dog hogedog
dog hogedog2
dog hogedog2
dog hogedog2

/gは同じ行の全てのマッチング部分を対象とします。