正規表現 第二章 置換コマンドへの習熟 読書メモ
続きです。
2.3.4 ささやかなメールユーティリティ
やりたいこと
1.メッセージヘッダから必要な情報を抜き出す
2.返信のヘッダを出力する
3.行頭に’|> ’をつけて元のメッセージを出力する
<>演算子:通常の変数に代入すると入力の次の行が入る。getline()関数と同じ。<>ですべての入力を読み込むと未定義値を返す。
ex. while ($line = <>) {
}
タイトルを抜き出す
$line =~ m/^Subject: (.*)/i
.*は内容がなんであれ行ののこりの部分にマッチする。任意の文字の塊。かならず行末までマッチする。
()内は$1でアクセスできる。
アドレスまでの部分にマッチさせたい
^From: (\S+)
\S 空白ではないすべての文字にマッチする
括弧内の文字列にマッチさせたい。その際括弧自体もマッチさせたい。
\(([^()]*)\)
括弧はエスケープする必要がある。キャプチャのため、ターゲットの括弧内を括弧にいれる。
行頭に’|> ’をつけて元のメッセージを出力したい
while ($line = <>){
print “|> $line”;
}
別の方法
$line =~ s/^/|> /;
print $line;
冒頭の無文字を置換している。