Perlワンライナーメモ

至るところで語り尽くされているネタですが、使おっかなーと思うときには大抵忘れており毎回調べる羽目になるので、備忘としてメモします。

perl -e

オプションで与えた文字列をそのまま評価。

# はろーわーるど
perl -e 'print "Hello, World!\n"'

# モジュールのバージョン確認
perl -e 'use Term::ANSIColor; print $Term::ANSIColor::VERSION, "\n";'

perl -M

モジュールのロードをオプションで指定。

# モジュールのバージョン確認 v2
perl -MTerm::ANSIColor -e 'print $Term::ANSIColor::VERSION, "\n";'

perl -le

処理後にprint $/してくれる。デフォルトでは$/は改行コードなので、改行されます。

# モジュールのバージョン確認 v3
perl -MTerm::ANSIColor -le 'print $Term::ANSIColor::VERSION;'

# インストール済みCPANモジュール一覧表示
# https://gist.github.com/s-shin/10267831
perl -MExtUtils::Installed -le 'print join "\n" => sort ExtUtils::Installed->new->modules;'

perl -ne

ループ内while (<>) { HERE }のような感じでコードを評価。

# $_には"foo\n"と"bar\n"が渡る。
echo -e "foo\nbar" | perl -ne 'print $_'

perl -pe

ループ内while (<>) { HERE; print $_; }のような感じでコードを評価。

# $_には"foo\n"と"bar\n"が渡る。処理後の$_は自動的にprintされる。
echo -e "foo\nbar" | perl -pe 's/^(.*)$/$1\n/g'

perl -ple

ループ内while (<>) { chomp; HERE; print $_, "\n"; }のような感じでコードを評価。

# $_には"foo"と"bar"が渡る。処理後の$_は自動的にsayされる。
echo -e "foo\nbar" | perl -ple 's/^(.*)$/$1\n/g'

perl -i

ファイルによる入出力。

# "[...]"を"{...}"に置換。ファイルはa.txtに上書き。
perl -i -ple 's/\[(.*)\]/{$1}/g' a.txt

# "[...]"を"{...}"に置換。a.txtに上書きされるが、元ファイルはa.txt.bkとしてコピーされる。
perl -i.bk -ple 's/\[(.*)\]/{$1}/g' a.txt

perl -s

変数を外部から与えられる。ダブルクオートでシェル変数を埋め込むとエスケープ地獄で頭がおかしくなりそうな時に便利。

a=o; echo foo | perl -sple 's/$re/a/g' -- -re="$a"