Unixのパイプを使って柔軟性を持たせる
perlのプログラムの中ではperl test.pl < test.txt
とかってやるとよい。
ダイヤモンド演算子
perl test.pl < test.txt
と、ダイヤモンド演算子を使ったりしたときの
perl test.pl test.txt
は等価。
ワンライナー(置換)
perl -pe 's/hogehoge/hoge/g' input > output
はそろそろ覚えてきた。
バックアップファイルの取りかた
perl -i.bak -pe 's/hogehoge/hoge/g' input.txt
はinput.txtの情報が書き換えられ、input.txt.bakがバックアップファイル。
ワンライナー(autosplitモード)
- 「-a」は入力の各行をsplitして@Fに格納
- ディフォルトではスペースで
- 「-F':'」とかってやるとセパレータを変更できる
ワンライナー(行末処理)
- 「-l」オプション
- 入力行から改行を自動的に削除し、出力には自動で付加
入力コードのセパレータ
- 「$/」は入力のレコードセパレータとなっている
- ディフォルトでは改行文字
- 「$/=undef」とすることで、テキストの一気読みができる
- 通常「$/」のスコープはグローバルなので、括弧とlocalでスコープを限定にしておくほうがよい
- localはsaveの役割だから、範囲が終わったら元に戻る
「$.」について
- 直前に読んだファイルハンドルの現在の行番号となる
Perlの特殊変数を使いこなす
レコードが「%%」のような文字で区切られている場合、
local $/ = "\n%%\n";
とすると「%%」までをひとくぎりとして一度に読み込んでくれる。