Perl のコンパイラオプション

Posted on Wed 01 January 2014 in blog

参考ページ

基本的なオプション

-e

  • ワンライナーを書くために必須。
  • 複数並べられるので、それなりに色々書ける
  • 直後にperlプログラムを書ける。
perl -e 'print 11/2'

-l[8進数]

  • 行末に指定された8進数に変える。-l のみの場合、改行になる。
perl -e 'print 22'       #=> 22
perl -l -e 'print 22'    #=> 22\n
perl -l101 -e 'print 22' #=> 22A

-0[digits]

  • -l の入力セパレータバージョン

  • -00 とすれば、空行を区切り。段落モード。

    • $/ = "";
  • -777 とすればファイルごとの区切りになる。

使い勝手の良いオプション

-n

  • while (<>) { ...} の中にスクリプトを入れたと思って実行

-p

  • -n みたいなもの。ただし、行($_)を出力する。
  • sed に似たやつ。

-a

  • -n, -p と一緒に使用
  • $_ を自動的に改行で分割し、配列 @F に入れる
perl -ane 'print $F[0], "\n"' /etc/passwd

-F/pattern/

  • -a の分割のデリミタを指定する
  • パターンは複数文字でも良い。そのときは、' ' または / / で囲む
perl -F':' -ane 'print $F[0],":",$F[2] ,"\n"' /etc/passwd

-i[拡張子]

  • 拡張子がないとき、<>のファイルを直接編集する
  • 拡張子があるとき、<>の元ファイルは、拡張子をつけたファイルにバックアップされる。
  • $SECONDS を使うのがオススメ
perl -i.back -pe `s/foo/bar/g' sample.txt
perl -i.$SECONDS -pe `s/foo/bar/g' sample.txt

デバッグに使えるオプション

-c

  • スクリプトのシンタックスチェックのみ行う

-d[:debugger]

  • debugger の下で走らせる

-w

  • より多くの Warning を出す

-W (-X)

  • すべての Warning を出す(出さない)