オライリー矢野様より献本御礼。同封のTシャツもXXLでうれしい。

初出2009.10.20 第五版; 
2012.07.20 第六版に改訂

こういうのを見ると、やはりプログラマーにはオライリーという思いを新たにする。累計50万部のベストセラーの最新刊、ついに訳出!

Perlを習いたい人だけではなく、プログラミングそのものを初めてたい、コンピューターを便利な道具以上のものとして使えるようにしたい人にもお勧め。書籍名に"Perl"が入った本の中では、最も万人に薦められる一冊だ。

本書「初めてのPerl 第5版」は、リャマ本の愛称で親しまれてきた O'reilly の Perl 入門五代目。聖書である「ラクダ本」がミリオンセラーだったのは知っていたが、リャマも50万部も売れていたとは知らなかった。

目次を見ての通り、入門書とは言ってもPerlの文法に関してはほぼ全て網羅している。特に5.10対応となったことで、スマートマッチやgiven ~ whenなどもカバーされ、中級以上の人の再入門書としても優れている。

それでいて、ページ数も400を切っている。価格も税込みで3,780円。近年コンピューター言語入門というのはますます分厚くなる傾向があり、「初めてのPython 第3版」に至っては800ページを超えている中にあって、本書のコンパクトさは救いだ。これは、オブジェクト指向など、より高度な話題をアルパカ本に、用例集を Cookbook に 分けられたことが大きい。

だからこそ、本書の重要性はこれまでになく高い。なにしろ「これを読了さえすれば、Perlで書かれたソースは書けなくてもとりあえず読める」ようになるまでの読者を一手に引き受けなければならないのだから。その意味でこの第五版は、これまででもっとも完成度が高い入門書に仕上がっている。「モダンPerl入門」が難しすぎても、本書を抑えればソースは読める。オブジェクトについてわからなかったら「すぐわかるオブジェクト指向Perl」を読みませばいい。

本書で一番利益を受けるのは、プログラミングを教える立場の人かも知れない。本書をそのまま教科書として使えばいいのだから。練習問題もあるので、まさにそのように使える。本書の内容を全てマスターした人であっても、部下や生徒が何を知らないかまでは知らない。本書を使えばそれが簡単にわかる。

第五版書評より

不満も、ないわけではない。日本の読者にとって最も不満なのは、文字コードの問題をどうするかという話題がほとんどないことだろう。英語圏の読者にとっては中級者以上のこの課題も、日本では初心者も避けて通れない。日本語版付録が欲しかったところだ。依頼があれば書いたんだけどなあ。

この部分も、第六版で付録Cが加わったことより、UTF-8でプログラムを書くために必要な必要最低限の知識が他他書にあたらずともよくなった。ただしあくまでもUTF-8一般の話であり、日本語固有の問題まで網羅したわけではないので、以下のLinkもあわせて紹介しておく。

いずれにせよ、「すぐに役立つプログラム」を「まだプログラムを書いたこともない」人に教える教科書は案外少ない。本書はその数少ない例外であり、それが本書を「万能薬」にしている。一家に一台、いや一冊備えてもいいぐらいだ。

Dan the Programmer

目次 - O'Reilly Japan - 初めてのPerl 第6版より
訳者まえがき
はじめに
1章 Perl入門
1.1 質疑応答
1.2 Perlとは何の略でしょうか?
1.3 どうやってPerlのプログラムを作るのでしょうか?
1.4 Perl早わかりツアー
1.5 練習問題
2章 スカラーデータ
2.1 数値
2.2 文字列
2.3 Perlに組み込まれている警告メッセージ
2.4 スカラー変数
2.5 printによる出力
2.6 if制御構造
2.7 ユーザからの入力を受け取る
2.8 chomp演算子
2.9 while制御構造
2.10 未定義値
2.11 defined関数
2.12 練習問題
3章 リストと配列
3.1 配列の要素にアクセスする
3.2 配列の特別なインデクス
3.3 リストリテラル
3.4 リスト代入
3.5 pop演算子とpush演算子
3.6 splice演算子
3.7 配列を文字列の中に展開する
3.8 foreach制御構造
3.9 スカラーコンテキストとリストコンテキスト
3.10 リストコンテキストでを使う
3.11 練習問題
4章 サブルーチン
4.1 サブルーチンを定義する
4.2 サブルーチンを起動する
4.3 戻り値
4.4 引数
4.5 サブルーチン内でプライベートな変数
4.6 可変長のパラメータリスト
4.7 レキシカル変数(my変数)についての注意事項
4.8 use strictプラグマ
4.9 return演算子
4.10 スカラー以外の戻り値
4.11 永続的なプライベート変数
4.12 練習問題
5章 入出力
5.1 標準入力からの入力
5.2 ダイヤモンド演算子からの入力
5.3 起動引数
5.4 標準出力への出力
5.5 printfによるフォーマット付き出力
5.6 ファイルハンドル
5.7 ファイルハンドルをオープンする
5.8 dieによって致命的エラーを発生させる
5.9 ファイルハンドルを使う
5.10 標準ファイルハンドルを再オープンする
5.11 sayを使って出力する
5.12 ファイルハンドルをスカラー変数に入れる
5.13 練習問題
6章 ハッシュ
6.1 ハッシュとは?
6.2 ハッシュの要素にアクセスする
6.3 ハッシュ関数
6.4 ハッシュの利用例
6.5 %ENVハッシュ
6.6 練習問題
7章 正規表現の世界
7.1 正規表現とは?
7.2 単純なパターンを使う
7.3 文字クラス
7.4 練習問題
8章 正規表現によるマッチ
8.1 m//を使ってマッチを行なう
8.2 マッチ修飾子
8.3 アンカー
8.4 結合演算子 =~
8.5 変数をパターンに埋め込む
8.6 マッチ変数
8.7 汎用の量指定子
8.8 優先順位
8.9 パターンをテストするプログラム
8.10 練習問題
9章 正規表現によるテキスト処理
9.1 s///を使って置換を行なう
9.2 split演算子
9.3 join関数
9.4 m//をリストコンテキストで使う
9.5 より強力な正規表現機能
9.6 練習問題
10章 さまざまな制御構造
10.1 unless制御構造
10.2 until制御構造
10.3 式修飾子
10.4 裸のブロック制御構造
10.5 elsif節
10.6 オートインクリメントとオートデクリメント
10.7 for制御構造
10.8 ループを制御する
10.9 条件演算子 ? :
10.10 論理演算子
10.11 練習問題
11章 Perlモジュール
11.1 モジュールを探す
11.2 モジュールをインストールする
11.3 単純なモジュールを使う
11.4 練習問題
12章 ファイルテスト
12.1 ファイルテスト演算子
12.2 stat関数とlstat関数
12.3 localtime関数
12.4 ビット演算子
12.5 練習問題
13章 ディレクトリ操作
13.1 ディレクトリツリーの中を移動する
13.2 グロブのもう1つの書き方
13.3 ディレクトリハンドル
13.4 再帰的なディレクトリ処理
13.5 ファイルとディレクトリの取り扱い
13.6 ファイルを削除する
13.7 ファイルの名前を変更する
13.8 リンクとファイル
13.9 ディレクトリの作成と削除
13.10 パーミッションを変更する
13.11 ファイルのオーナーを変更する
13.12 タイムスタンプを変更する
13.13 練習問題
14章 文字列処理とソート
14.1 indexを使って部分文字列を探す
14.2 substrを使って部分文字列をいじる
14.3 sprintfを使ってデータをフォーマットする
14.4 高度なソート
14.5 練習問題
15章 スマートマッチとgiven-when
15.1 スマートマッチ演算子
15.2 スマートマッチの優先順位
15.3 given文
15.4 ダムマッチ
15.5 多くの項目に対してwhenを使う
15.6 練習問題
16章 プロセス管理
16.1 system関数
16.2 環境変数
16.3 exec関数
16.4 逆クォートを使って出力を取り込む
16.5 IPC::System::Simpleによる外部プロセスの起動
16.6 プロセスをファイルハンドルとして使う
16.7 forkを使って低レベル処理を行なう
16.8 シグナルを送受信する
16.9 練習問題
17章 上級テクニック
17.1 スライス
17.2 エラーをトラップする
17.3 grepを使ってリストから要素を選び出す
17.4 mapを使ってリストの要素を変換する
17.5 便利なリストユーティリティ
17.6 練習問題
付録A 練習問題の解答
1章の練習問題の解答
2章の練習問題の解答
3章の練習問題の解答
4章の練習問題の解答
5章の練習問題の解答
6章の練習問題の解答
7章の練習問題の解答
8章の練習問題の解答
9章の練習問題の解答
10章の練習問題の解答
11章の練習問題の解答
12章の練習問題の解答
13章の練習問題の解答
14章の練習問題の解答
15章の練習問題の解答
16章の練習問題の解答
17章の練習問題の解答
付録B リャマを越えて
B.1 豊富なドキュメント
B.2 正規表現
B.3 パッケージ
B.4 Perlの機能を拡張する
B.5 データベース
B.6 その他の演算子と関数
B.7 数学
B.8 リストと配列
B.9 ビット操作
B.10 フォーマット
B.11 ネットワークとIPC
B.12 セキュリティ
B.13 デバッグ
B.14 コマンドラインオプション
B.15 組み込み変数
B.16 さまざまな構文
B.17 リファレンス
B.18 タイ変数
B.19 演算子オーバーロード
B.20 ダイナミックロード
B.21 Perlをほかのプログラムに組み込む
B.22 他の言語からPerlへの変換
B.23 findコマンドラインをPerlに変換する
B.24 コマンドラインオプションを受け取る
B.25 ドキュメントを埋め込む
B.26 ファイルハンドルをオープンするほかの方法
B.27 スレッドとフォーク
B.28 グラフィカルユーザインターフェース(GUI)
B.29 そしてまだまだ続く……
付録C Unicode入門
C.1 Unicode
C.2 UTF-8と仲間たち
C.3 みんなの同意を取り付ける
C.4 ファンシーな文字
C.5 PerlでのUnicodeの扱い方
C.6 データベースの扱い
C.7 参考文献
索引