リャマ本を使用した社内 Perl 勉強会の7回目を開催。今日は6人。
今日は「初めてのPerl 第3版」第8章「正規表現の詳細」が範囲。
今回はプログラムを書く問題は無くて、パターンを考えたり逆に与えられたたパターンが何にマッチするのかを考える問題。 「本書の中で最も難易度が高くなっています」と書かれている。
さすがに今回は正答率が低かった。 問題の意図が読み取りにくいというのもあって、迷う問題も多かったようだ。 プログラミング言語のトークン関連のネタなどはプログラミング経験がある程度ないとぱっとわからないかもしれない。
時間の関係で自分もあまり準備ができなくて、不完全な解答だったのが悔まれる。
今日は追加ネタなしで、トータル50分。
リャマ本を使用した社内 Perl 勉強会の8回目を開催。今日は5人。
今日は「初めてのPerl 第3版」第9章「正規表現の利用方法」が範囲。
展示会などがあった関係で、6月19日以来しばらく間が空いての開催。
ぱっと見、面白そうな練習問題に見えたがやってみると意外とあっさり風味であった。
最後の問題は、文字列の出現回数を数えるという Perl ではイディオム的なコードを欠く問題。
ハッシュを使うのが定番だが、配列に入れてソートし前から反復する(sort | uniq -c 的な)コードを書いている人が2人いて興味深かった。 たしかに C などだったらそういうコードを書いてたかもしれないな。
今回で8回目を終了。
練習問題にもう少しチャレンジングな問題があった方がいいなと思う今日この頃。
リャマ本を使用した社内 Perl 勉強会の9回目を開催。
今日は「初めてのPerl 第3版」第10章「さまざまな制御構造」が範囲。
問題自体はシンプル。 Perl 特有の制御文を駆使するのも手だが、逆にこういう時は素直に書いた方がわかりやすい。
リャマ本を使用した社内 Perl 勉強会の10回目を開催。今日は6人。
今日は「初めてのPerl 第3版」第11章「ファイルハンドルとファイルテスト」が範囲。
@ 今回の反省点
今回はパーミッションの話など Windows 環境よりも UNIX 系環境の話が多かったのだが、皆慣れてきたのか特に大きな混乱はなかった様子である。
open / close はそれこそ頻繁に使うのであるが、本書では思ったよりライトな扱いな感じ。
初めてのPerl 第3版の練習問題は、いままで問いてみて「確信犯的」に問題があいまいに書かれている。 要求仕様書だったらまずいかもしれないが、練習問題だと頭を使うので悪くない。 また他人をまじえた回答レビューでも他の読解によるプログラムを見られたりして、単純な答え合わせ以上の理解ができ面白い。
リャマ本を使用した社内 Perl 勉強会の11回目を開催。今日は7人。久しぶりにフルメンバ。
今日は「初めてのPerl 第3版」第12章「ディレクトリ操作」が範囲。
練習問題は、 chdir を行ったあとそのディレクトリの内容一覧を表示するという問題。
実は自分、ファイル名のグロブを使ったのは初めてかもしれない。 ディレクトリハンドル派。
Windows では(普通だと) $ENV{HOME} が設定されていないため chdir が失敗するとのこと。 このため Windows で解答を作った人はうまく試せなかった部分あったようである。
それ以外は大きな問題はなく、さらりと終了。
リャマ本を使用した社内 Perl 勉強会の12回目を開催。今日も7人でフルメンバ。
今日は「初めてのPerl 第3版」第13章「ファイルとディレクトリの取り扱い」が範囲。
ある文化では「13」という数字を極めて不吉なものと考えます。われわれ著者は、この題材を意図的に13章に配置しました。なぜなら、もしコードにバグが潜んでいたら、かなり危険なこと(例えば、問い合わせをせずにファイルを消してしまう)を行ってしまう可能性があるからです。-- 初めてのPerl 第3版 p.209
こわーい。
i ノードの話やハードリンク・シンボリックリンクの話など、いつにも増して UNIX 系 OS の話に関連の深い話が多い章である。 Windows 中心で使っている人にはあまり馴染みのない話であるが、知っておいて損はない話である。
欲を言えば Windows ではどうなっているかの話も載っていると嬉しかった。 NTFS なら ハードリンクを使えるよという話とか。
自分自身も Perl からハードリンク・シンボリックリンクの作成なんてしたことなかったな。 これからもそうそうしない処理だと思うけれど、いい勉強になった。
リャマ本を使用した社内 Perl 勉強会の13回目を開催。今日は6人。
今日は「初めてのPerl 第3版」第14章「プロセス管理」が範囲。
Perl が glue としての真価を発揮できる章である。
system、exec、パイプオープン、`...`、標準エラー出力のリダイレクト(2>)、STDOUT/STDERR の再オープンなど出席者によって回答がバラけて、今回ははからずも効果的であった (問題がらさすがに fork はいなかった)。
Windows では回答しづらい課題かと思っていたが、思ったより問題なく実行できていたようである。
Windows 上の date コマンドで、曜日を表示させる方法について1人だけ気がついた人がいて他の人が悔しがっていた。
リャマ本を使用した社内 Perl 勉強会の14回目を開催。 新入社員1人追加と、多忙のため1人欠席で今日は7人。
今日は「初めてのPerl 第3版」第15章「文字列処理とソート」が範囲。
久しぶりに OS がらみではない純粋に Perl 上での処理がテーマ。 index, substr, sprintf, sort の使い方。
比較的簡単な内容だったと思うが、逆に境界でのテスト・理解が十分でなかったようだ。 練習問題でも、その辺りは十分にチェックするように習慣づけたい。
ソートについては既に今までの章の練習問題のなかで、sort-definition subroutine を使っている解答があり、初出ではないためそれほど悩ましくはなかったはず。
ソート定義サブルーチンは大抵 { ... } で書いてしまうので問題ないと思うが、別サブルーチンを使うときにはスコープに注意。
#!/usr/bin/perl use strict; use warnings; my %h = (a => 6, b => 5, c => 3); { my %h = (a => 4, b => 9, c => 2); $, = ', '; $\ = "\n"; print sort { $h{$a} <=> $h{$b} } keys %h; print sort compare keys %h; } sub compare { $h{$a} <=> $h{$b}; }
リャマ本を使用した社内 Perl 勉強会の15回目を開催。 今日は6人。
今日は「初めてのPerl 第3版」第16章「単純なデータベース」が範囲。 単純なデータベースといっても DBM の話から、pack/unpack、seek、-i オプションの話などバイナリ・テキストいろいろてんこ盛りの章である。
ただ練習問題は DBM まわりのみなので、ここが重点テーマなのかもしれない。
ここまで順番に進めてきた者なら、問題を読み違えなければ本文を参照しつつそれほど問題なく解ける問題である。
ただ内容的にはちょっと中途半端な気もする。 もうちょっと濃い章にするか、ばっさり切ってしまうかのどちらかの方が良い感じ。
リャマ本を使用した社内 Perl 勉強会の16回目を開催。 今日は8人全員。
今日は「初めてのPerl 第3版」第17章「上級テクニック」が範囲。 17章では、「Perl らしい」機能 (Perl 流 eval、grep、 map、スライス)が盛沢山。
robust なプログラムを書くには Perl では eval 必須の機能なので押さえておきたいところ。 grep、map は何だかんだいって自分が練習問題の解答で使ってしまっているので、他の人もある程度見なれているはず。
練習問題の解答としてはスライスは今回は使用せず。
逆にスカラーコンテキストとリストコンテキストについては、まだ理解が不完全な部分があるようなので解説をしておいた。
Perl については
という一方
Perl の気持ち悪さが理解できた。
という意見があった。
他の人の書き方を見ることが参考になった。実際に書くことで覚えた。
等、定期的に練習問題をやってくるというスタイルに対する評価が得られた。
4月21日から始めて5カ月弱。勉強会でスキルアップをはかっていこうという雰囲気ができてきているのはいい傾向だと思う。
今後もテーマを選んで継続していきたい。
次のテーマをより実用重視のものにするか、基礎固めのものにするのかは悩みどころである。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。