ひつまぶし食べたい

メモ代わりのブログ

Perl の正規表現

マッチ演算子

評価の結果は真偽値としては、マッチすれば真、そうでなければ偽。 and, or, ! が役立つのは間違いない。

$_ にマッチさせる

/regex/
m:regex:

string にマッチさせる

string =~ /regex/
string =~ m:regex:

$_ の文字列置換

s/regex/new/
s:regex:new:

string の文字列置換

string =~ s/regex/new/
string =~ s:regex:new:

特殊なメタキャラクタ

^, $

  • 行頭、末尾にマッチ

.

  • ニューライン以外の任意の文字にマッチ

[chars]

  • chars に含まれる任意の1文字にマッチ
  • chars 内のバックスラッシュ付き英数字以外のメタキャラクタは、リテラル扱い

[^ chars]

  • chars に含まれない任意の1文字にマッチ
  • メタキャラクタの扱いは [chars] と同様

[char1-char2]

  • char1char2 の間に入る任意の文字にマッチ
  • char1, char2 を含む。

$&

  • 最後にマッチした内容を保持
  • 'Foo' =~ /^[A-Z]/ なら $& は F

\

  • メタキャラクタに使ったり、エスケープに使う

\b

  • 単語の区切りにマッチする
  • 'abc def' にマッチさせたいときに、'Zabc def' にマッチしないよう、'babc def' と書いておく。
  • アルファベットは、単語構成文字クラスなので、スペースや!は、b にマッチするが、Zはマッチしない。

\n

  • ニューライン

\r

  • キャリッジリターン文字
  • カーソルを行頭に戻す

\t

  • タブ

\f

  • フォームフィード
  • 改ページ

\e

  • エスケープ文字

\NNN

  • 8進数が NNN となる文字
  • 例えば、040 はスペース

::: note ::: title Note :::


Perlスクリプトメモ

参考文献

  1. Perl基礎文法最速マスター
  2. ミニマル perl

スクリプトを書く時

  • プラグマ
  • 推奨 : スクリプト先頭に書く
use strict;
use warnings;
  • 1文字でも減らしたい

    • print のデフォルト引数は、 $_
    • print $_; したいだけなら書く必要ない。

用語

レコード

  • 1つのまとまりとして読み書きされる文字の集合
  • 入出力の際、ファイルはレコードの集まりと見ることができる。 この時、デフォルトでは、1行がレコード。

入力レコードセパレータ

  • 入力レコードの終端区切りを表す文字、または文字シーケンス(文字の並び)。
  • Linuxとかでは、デフォルトではラインフィード。
  • Perl ではOS固有の入力レコードセパレータを n として、参照できる。

ニューライン

  • n のこと。
  • OS固有の入力レコードセパレータ。

スイッチ引数

  • -s オプション
  • 良い感じのコマンドラインオプションを取ることができる。
  • 引数の与え方で2つの方法がある。
-foo='test' #=> $foo == 'test'
-foo        #=> $foo == true : -debugで、デバッグ用、みたい使う。
  • スイッチ引数を任意にしているスクリプトでは、冒頭にour関数を使うのが良い。
our($foo);
our($foo, $bar, ...);

真偽値

偽になるのは、次の3パターンある。


便利なツール

POD

  • Plain Old Documentation
  • man perldoc を参照

lwp-request

  • Webサーバーにリクエストを送って、適当な形式に変換してくれる
  • GET, POST, PUT も選べる。
  • 出力形式としては、 text, ps, links, html, dump
lwp-request -o text www.example.com

Text::Autoformat

Text::Tabs

  • タブをスペースに変換

String::Approx

  • あいまいなマッチをする

Template-Toolkit

Lingua::En::Inflect 'PL_N'

  • 単数形と複数形を変換してくれる

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

参考ページ

基本的なオプション

-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 の入力セパレータバージョン