Kansai.pm 第4回Perlベストプラクティス勉強会

2007年6月28日19-21時に大阪北浜の株式会社CATWALKにて,第4回Perlベストプラクティス勉強会が行われました.いままでちゃんと報告を書いてなかったので,今回からは範囲や内容などを書くことにしました

Perlベストプラクティス勉強会は,Kansai.pm主催の勉強会で,準備の回である第0回勉強会から数えると5回目の開催になります.勉強会の方法としては現在エクストリームリーディングという方式を採っています.エクストリームリーディングに関してはgihyo.jpの連載勉強会のススメPICSY blogが詳しいです.教材としてはもう少し難しい方がよいのかもしれません.ですが,続けないことには意味がないのでちゃんと読んでみたいPBPを選択しました

前回の勉強会がP.70の「4.13 裸のワード」でしたので,今回はP.72「4.14 ファットコンマ」から,になります

「4.14 ファットコンマ」〜「4.18 リストのメンバーシップ」

  • 4.14 ファットコンマ
    • Fat Commas→太ったコンマ
    • 有効なPerl識別子だけをキーとして使用すれば,キー文字列を引用符で囲む必要がない
    • ファットコンマを使うべきなのは下記3つ
      • ハッシュを生成するとき
      • サブルーチンに名前付きの引数を渡す場合
      • その他の名前と値の組み(定数の作成時など)
#ハッシュを生成する
%ll_author = (
    Perl   => 'Larry',
    Ruby   => 'matz',
    Python => 'Guido',
);

#サブルーチンに名前付きの引数を渡す
$text = create_img_tag({ src => $img_url, alt => 'photo', width => 300 });

#定数を作成
Readonly my $THE_ANSWER => 42;
  • 4.15シンコンマ
    • Thin commas→やせたコンマ
    • コンマは
      • カラコンテキストでは順序づけの演算子
      • リストコンテキストではセパレータ
    • 複数の文を1つの分として扱う必要がある場合は,doブロックとセミコロンを使用する
  • 4.16 優先度の低い演算子
  • notとandは使うな,orだけは組み込み関する失敗した際の代替案をしてするために使用
  • 4.17 リスト
    • リストはすべてかっこで囲む
  • 4.18リストのメンバーシップ
    • List::MoreUtil any()

5章「変数」〜「5.4 初期化」まで

  • 5.1 レキシカル変数
    • ほとんどは使わないし,中身も知らない
    • ここで挙げられている中では正規表現のメモリ($1,$2...)ぐらい?
  • 5.2 パッケージ変数
    • パッケージ変数は使わない
    • $VERSIONや18.7で挙げられているuse strictにかからないものぐらい?
  • 5.3 ローカル化
  • 5.4 初期化
    • ローカル化した場合は必ず初期化する→ローカル化するとundefにリセットされるから

「5.5 句読点変数」〜「5.8 ドル記号とアンダースコア」

  • 5.5 句読点変数
  • 5.6 句読点変数のローカル化
    • use English
    • ローカル化によって,予期しない影響(文中では「波及効果」)を防げる
  • 5.7 マッチ変数
    • マッチ変数を使うとプログラム全体が遅くなるので絶対に使用しない
    • Regexp::MatchContext
      • (?p)マーカによって実現するべき
  • 5.8 ドル記号とアンダースコア
    • 日本語のタイトルは微妙
    • 原書ではDoller-Underscore,要するに$_

正規表現名前付きキャプチャ(Named Capture)

ちょっと話題に挙げた名前付きキャプチャについて

.NET

\b(?<Area>\d\d\d\)-(?<Exch>\d\d\d)-(?<Num>\d\d\d\d)\b

Python

\b(?P<area>\d\d\d\)-(?P<exch>\d\d\d)-(?P<num>\d\d\d\d)\b

これはPerlでも5.9.5で入るようです

development release の perl5.9.5 では念願の named capture が入ります。

(?pattern) という形で正規表現を書くと、%+ という magical な hash に入るようになるであります。

Perlベストプラクティス

Perlベストプラクティス

次回勉強会

P.92「配列のインデックス」から開始.株式会社CATWALKで19時から行います

Perlベストプラクティス

Perlベストプラクティス