続・初めてのPerl 改訂版
「初めてのPerl」の次に読む本という位置づけになっています。
初めてのPerlについては、「http://d.hatena.ne.jp/koba04/20100105/1262700048」
これ、本当に素晴らしくて、Perlを学ぶ際には避けて通れない一冊だと思います。
「初めてのPerl」くらいの内容は理解している前提で進められ、内容は大まかに以下のような感じです。
- リファレンスやリストなど様々なデータの扱い方(サブルーチンのリファレンス、grep、map、Data::Dumper、YAMLなど)
- オブジェクト指向
- packageやuse、requireなどの使い方
- ディストリビューションの作り方(h2xsなど)
- テスト、テスト、テスト!
- CPANについて
以下、章ごとに感想を。
1章 イントロダクション
- まぁよくある「はじめに」ですね。それによると本書は「100行〜10000行」程度のプログラムを書く際に必要となることが書かれているそうです。
- 個人的にこういう技術書の最初にあるような「はじめに」を読むのが好きです。
2章 中級者の基礎知識
3章 モジュールの使い方
4章 リファレンス入門
- リファレンスとは?という章です。
- リファレンスに関する基本的なところを整理できるわかりやすい章だと思います。
- 練習問題にあったのですが、同じデータに対する参照でも「->」があったりなかったりなど色々な書き方が出来る点は、わかりにくいと言われる一つの要素だろうなと思いました。
$ref->[2]->[1]->[0] は ${${${$ref}[2]}[1]}[0] と一緒。
- これ全部同じ参照先なんですよね、、自分は2番目の「$ref->[2]->[1]」と書きます。
$ref->[2][1] $ref->[2]->[1] ${$ref->[2]}[1]
- あと、ハッシュスライスも使っていきたいなと思いました。
5章 リファレンスとスコープ
6章 複雑なデータ構造の操作
- ここでは、「perl -d」を使ったデバッグの方法や、Data::Dumper、YAML、Storableの使い方、複雑な構造のデータをmapやgrepを使い処理していく方法なんかについて書かれています。
- Data::Dumperなんかはデバッグには必須ですし、YAMLは設定ファイルなんかに使われたりしていますし、Storableはオブジェクトを永続化したい際に使われたりと役に立つ情報が詰まった章だと思います。
- またこれ以前の章でもよく出てくるmapとgrepですが、個人的にはこの二つの関数が使えるようになってからPerlが楽しくなってきました。この本のmapとgrepやリファレンスあたりの内容は本当に素晴らしいと思います。
7章 サブルーチンのリファレンス
8章 ファイルハンドルのリファレンス
- ここでは、ファイルを扱う際の注意点と様々なモジュールの紹介がされています。
- ファイルやディレクトリを扱う方法は、バグを埋め込まないためやセキュリティの対策としてしっかり覚えておきたいところですね。
9章 リファレンスを使った実践的なテクニック
10章 大規模なプログラムの構築
- ここではモジュールやクラスを作るための準備として、「do」、「require」、「@INC」、「use lib」や「package」などについてまとめられています。
- この辺りの知識も曖昧なところがあったので整理できてよかったです。
11章 オブジェクト入門
12章 データのあるオブジェクト
- 11章からの流れで、ここではメンバのあるクラスの扱い方についてわかりやすく書かれています。
- 最初ネットなどでPerlでのクラスの作り方を見たときに、blessしてというのがイマイチしっくりこないままこういうもんだと思って書いていたので、最初にこの説明を読みたかったと思いました。
- よくあるコンストラクタの作り方
sub new { my $class = shift; $data = { name => "koba04", age => 28, }; return $data, $class; }
13章 オブジェクトのデストラクション
- ここでは、デストラクタ(DESTROY)についてや間接オブジェクト記法、クラス変数やリファレンスの弱め方について書かれています。
- DESTROYについては、頻繁に使うことはないと思いますが、覚えておくと便利だと思います。
- 間接オブジェクト記法については、Javaエンジニアの人がPerlで書く際に使っていたのを見たことがあります。自分は「->」が好きなので使いませんでしたが。あとこの章でprintやopen関数がこれを利用していたのかとわかってよかったです。
print FH "test"; open my $fh, '>', $file_name;
- ところで、ここで紹介されていた参照カウントをプラスされなくする「weaken」ってよく使われているのでしょうか??イマイチ使いどころが思い当たらなかったので。。
14章 オブジェクトに関する高度なトピック
15章 Exporter
- タイトル通り、Exporterモジュールの使い方や「use」についての章です。
- Exporterは正直イマイチ理解出来ていない部分もあったので、ここで詳細に説明されていてようやく理解することが出来ました。「@EXPORTER」と「@EXPORT_OK」と「%EXPORT_TAGS」も理解出来ました。
16章 ディストリビューションの書き方
- 個人的にこの章はすごく勉強になりました。
- h2xsなどでのディストリビューションの作り方で、MANIFESTやMakefile.PLなどのファイルの意味もそれぞれ説明されています。
- モジュールの作り方を見ることでCPANにあるモジュールを見ても理解しやすくなりました。また自分でも作ってみようと思うようになりましたし、作るだけの知識は得られたなと思いました。
- 下記のようなコマンドの意味がわかるようになります。
・h2xs -Xan Sample ・perl Makefile.PL PREFIX=... ・make test ・make install ・make dist
17章 基本的なテスト
18章 高度なテスト
- ファイルや標準出力に対するテスト、モックオブジェクトを使ったテスト、PODに対するテスト、カバレッジテストなどから独自のTest::*モジュールの作り方まで説明されています。
- 今はあまりTest::*モジュールをうまく活用できていないので、ここで紹介されているようなものをはじめ、うまく使いこなしていきたいなと思いました。
- それと同時にシンプルにテストを書けるようにモジュールを作るということって大事だなと思いました。