結城本の勉強(その6)

  • 第8章 もっと正規表現
    • 特殊な変数$&。パターンマッチを行うと自動的に値が設定される。マッチした範囲を取り出す。
    • パターン結合演算子=~が行う処理は、マッチと置換(置換もできるんだ)
    • 修飾子/xで正規表現を読みやすく(コメントを書けるようになる)
    • リスト8-1のクイズ($&に何が入るのかそれほど明らかでないのですが...)
    • 関数printは引数がないときにはデフォルト変数$_を表示する(あまり省略するとコードが読みにくくなる)
    • スラッシュ以外の記号でもパターンマッチを記述するには、mを置く(へー)

”置換s///”の前までで一旦終了。
AM 6:20再開。

    • s///では一番最初にマッチした部分のみ置換される。修飾子/gを使うとすべて置換される。
    • 大文字小文字の違いを無視して置換するには修飾子/iを使う
    • \wは[A-Za-z_0-9]という文字クラスと同じ1文字を表すメタ文字(もう忘れていた...)
    • s/*1/$2<$3>/g;という置換(s/(\d+)([A-Za-z]+)/$1<$2>/g;でも同じことだ)
    • 式を評価する修飾子/e
    • 単語の境界にマッチするメタ文字\b(むー、単語境界の意味が問題だ)
    • \Wは\w以外の文字(?記号)を表す
    • 修飾子/sは文字列を1行として扱う(改行を\nのままで扱うということか)
    • 修飾子/mは文字列を複数行として扱う(改行してしまう)
    • tr/置換元の文字リスト/置換先の文字リスト/(なかなか賢い)
    • 実例2:メールアドレス。修飾子/gをつけて演算子=~をリストコンテキストで使用する(リストコンテキスト?)
    • 重複要素の削除(p.242)。(これは便利。常套手段か)
    • 時刻文字列とマッチする正規表現(メタ文字?の意味忘れた...直前の文字が0か1個)

第8章終り。
PM 7:00再開。

  • 第9章 コンテキスト
    • スカラーコンテキストとリストコンテキスト(スカラーとくるとベクトルが思い浮かぶ)
    • printはその後ろにリストコンテキストを与える(ふーん)
    • 強制的にスカラーコンテキストで評価するとき、関数scalarが使える
    • スカラー変数と配列変数の名前空間は独立である(!名前空間
    • ($scalar)はリスト(!)
    • ブール値コンテキスト:未定義値undefは偽。
    • 演算子+がその両辺を数値コンテキストで評価する(便利だ!)
    • リストをスカラーコンテキストで評価すると最後の要素が得られる。(配列では要素の個数だったな)
    • 練習問題(今は元気がないのでやらない)

*1:\d+)([A-Za-z]+