* ワンライナー [#g00a36a1]
** -e 基本 [#y84fe922]
$ perl -e 'print "foo"'
foo
** -p 1行ずつ読み込み、プリントする [#za9440ad]
$ perl -p -e '' /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
$ perl -p -e 'print ++$i, ": "' /etc/passwd
1: root:x:0:0:root:/root:/bin/bash
2: daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3: bin:x:2:2:bin:/bin:/bin/sh
$ perl -p -e 's/^[^:]+/\*\*\*/;' /etc/passwd
***:x:0:0:root:/root:/bin/bash
***:x:1:1:daemon:/usr/sbin:/bin/sh
***:x:2:2:bin:/bin:/bin/sh
** -i ファイルを上書きする [#l105fdcc]
$ perl -i -p -e 's/a/A/g' sample.txt
sample.txtは内容が修正され、上書きされる。
以下のようにすると、バックアップファイル(sample.txt.bak)が作成される。
$ perl -i.bak -p -e 's/a/A/g' sample.txt
** BEGIN{} END{} 前後に処理を加える [#ab31794a]
$perl -p -e 'BEGIN{ print "/etc/passwd:\n";} print ++$i, ": "; END{print "done.\n";}' /etc/passwd
/etc/passwd:
1: root:x:0:0:root:/root:/bin/bash
2: daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3: bin:x:2:2:bin:/bin:/bin/sh
done.