『初めてのPerl』の著者が書き下ろした続編の改訂第2版。Perl入門を済ませた読者が次のステージへと進むために必要な基礎知識やノウハウを解説。『初めてのPerl』では説明しきれなかった内容を扱っています。Perlプログラマがステップアップするために欠かすことのできないリファレンス、ディストリビューション、Perlのオブジェクト指向、テストなどについて詳しく解説し、Perlを使って大規模なプログラムを書く方法を示します。ステップアップしたいPerlプログラマの必読書です。
続・初めてのPerl 改訂第2版
Randal L. Schwartz、brian d foy、Tom Phoenix 著、伊藤 直也 監訳、長尾 高弘 訳
- TOPICS
- Perl
- 発行年月日
- 2013年08月
- PRINT LENGTH
- 432
- ISBN
- 978-4-87311-628-0
- 原書
- Intermediate Perl, 2nd Edition
- FORMAT
- Print PDF
目次
改訂版への序文 はじめに 1章 イントロダクション 1.1 必要な基礎知識は 1.2 strictとwarnings 1.3 Perl v5.14 1.3.1 バージョンについての注意 1.4 脚注とはどう付き合ったらよいのか 1.5 練習問題はどうしたらよいのか 1.6 助けを得るには 1.7 Perl講座の講師の方に 1.8 練習問題 2章 モジュールの使い方 2.1 標準ディストリビューション 2.2 CPANを探検する 2.3 モジュールの使い方 2.4 関数インタフェース 2.4.1 インポートする関数を選ぶには 2.5 オブジェクト指向インタフェース 2.5.1 もっとオブジェクト指向らしいモジュール:Math::BigInt 2.5.2 モジュールでもっと洒落た出力を 2.6 コアの中身 2.7 CPAN(Comprehensive Perl Archive Network) 2.8 CPANのモジュールをインストールするには 2.8.1 CPANminus 2.8.2 手作業によるモジュールのインストール 2.9 適切なタイミングでパスを設定するには 2.10 プログラムの外にパスを追い出す 2.10.1 PERL5LIBによる@INCの拡張 2.10.2 コマンドラインによる@INCの拡張 2.11 local::lib 2.12 練習問題 3章 中級者の基礎知識 3.1 リスト演算子 3.1.1 grepによるリストのフィルタリング 3.1.2 mapによるリストの変換 3.2 evalによるエラーのトラップ 3.3 evalによるダイナミックコード 3.4 doブロック 3.5 練習問題 4章 リファレンス入門 4.1 多くの配列に対して同じ処理を実行するには 4.2 PeGS:Perl Graphical Structures 4.3 配列へのリファレンスを取るには 4.4 配列リファレンスをデリファレンスするには 4.5 中かっこを省略してよいとき 4.6 配列を書き換えるには 4.7 ネストしたデータ構造 4.8 矢印でネストした要素リファレンスをすっきりさせる 4.9 ハッシュへのリファレンス 4.10 リファレンスの型のチェック 4.11 練習問題 5章 リファレンスとスコープ 5.1 データへの複数のリファレンス 5.2 無名配列 5.3 参照カウントとネストしたデータ構造 5.4 参照カウントが問題を起こすとき 5.5 無名配列を直接作るには 5.6 無名ハッシュ 5.7 自動有効化 5.8 自動有効化とハッシュ 5.9 練習問題 6章 複雑なデータ構造の操作 6.1 デバッガを使って複雑なデータを見るには 6.2 Data::Dumperを使った複雑なデータの表示 6.2.1 その他のダンプツール 6.3 データのマーシャリング 6.3.1 Storableで複雑なデータを保存するには 6.3.2 YAML 6.3.3 JSON 6.4 map演算子とgrep演算子の使い方 6.5 間接指定のちょっとした応用 6.6 複雑なデータの選択と変更 6.7 練習問題 7章 サブルーチンへのリファレンス 7.1 名前付きサブルーチンを参照するには 7.2 無名サブルーチン 7.3 コールバック 7.4 クロージャ 7.5 サブルーチンからサブルーチンを返す 7.6 入力としてのクロージャ変数 7.7 静的ローカル変数としてのクロージャ変数 7.7.1 state変数 7.8 自分が何ものなのかを知るために 7.8.1 何のサブルーチンなのかをはっきりさせるためには 7.8.2 クロージャのダンプ 7.9 練習問題 8章 ファイルハンドルへのリファレンス 8.1 古い方法 8.2 改良された方法 8.3 文字列へのファイルハンドル 8.3.1 文字列を行単位で処理する 8.4 ファイルハンドルのコレクション 8.5 IO::Handleと関連モジュール 8.5.1 IO::File 8.5.2 IO::Scalar 8.5.3 IO::Tee 8.5.4 IO::Pipe 8.5.5 IO::NullとIO::Interactive 8.6 ディレクトリハンドル 8.6.1 ディレクトリハンドルリファレンス 8.7 練習問題 9章 正規表現へのリファレンス 9.1 正規表現リファレンス以前 9.2 パターンのプリコンパイル 9.2.1 正規表現オプション 9.2.2 正規表現リファレンスの使い方 9.3 スカラーとしての正規表現 9.4 正規表現の構築 9.5 正規表現を生成するモジュール 9.5.1 共通パターンの使い方 9.5.2 正規表現の組み立て 9.6 練習問題 10章 リファレンスを使った実践的なテクニック 10.1 よりよいソート 10.2 添字を使ったソート 10.3 効率のよいソート 10.4 シュワルツ変換 10.5 シュワルツ変換を使ったマルチレベルソート 10.6 再帰的に定義されたデータ 10.7 再帰的に定義されたデータの構築 10.8 再帰的に定義されたデータの表示 10.9 再帰を避けるために 10.9.1 幅優先のソリューション 10.10 練習問題 11章 大規模なプログラムの構築 11.1 共通するコードへの対処 11.2 evalによるコードの挿入 11.3 doを使う方法 11.4 requireを使う方法 11.5 名前空間の衝突の問題 11.6 名前空間セパレータとしてのパッケージ 11.7 packageディレクティブのスコープ 11.8 パッケージとレキシカル変数 11.9 パッケージブロック 11.10 練習問題 12章 Perlディストリビューションを作るには 12.1 Perlの2つのビルドシステム 12.1.1 Makefile.PLの内部 12.1.2 Build.PLの内部 12.2 最初のディストリビューション 12.2.1 h2xs 12.2.2 Module::Starter 12.2.3 カスタムテンプレート 12.3 Perlディストリビューションの内容 12.3.1 METAファイル 12.3.2 モジュールを追加するには 12.4 モジュールの内部 12.5 Pod(Plain Old Documenttion) 12.5.1 Podコマンドパラグラフ 12.5.2 Podパラグラフ 12.5.3 Pod書式化コード 12.5.4 Podの書式のチェック 12.6 モジュールのコード 12.7 モジュール構築のまとめ 12.7.1 Module::Buildディストリビューションの作り方 12.7.2 ExtUtils::Makemakerディストリビューションの作り方 12.8 練習問題 13章 オブジェクト入門 13.1 動物と話すことができたら 13.2 メソッド呼び出しの矢印 13.3 メソッド呼び出しの特別な引数 13.4 第2のメソッドを呼び出して話を単純化する 13.5 @ISAについての注意 13.6 メソッドのオーバーライド 13.7 異なる場所からの検索の開始 13.8 SUPERなやり方 13.9 @_の処理 13.10 どこまで来たのか 13.11 私たちの牧場のまとめ 13.12 練習問題 14章 テスト入門 14.1 なぜテストすべきかのか 14.2 Perlのテストプロセス 14.2.1 TAP 14.3 テストのコツ 14.3.1 テストの実例 14.4 テストハーネス 14.5 標準テスト 14.5.1 モジュールがコンパイルできるかどうかのチェック 14.5.2 ボイラープレートテスト 14.5.3 Podテスト 14.6 初めての自作テストの追加 14.7 テストカバレッジの計測 14.7.1 サブルーチンカバレッジ 14.7.2 ステートメントカバレッジ 14.7.3 分岐カバレッジ 14.7.4 条件カバレッジ 14.8 練習問題 15章 データのあるオブジェクト 15.1 馬は馬、当たり前だろうか 15.2 インスタンスメソッドの呼び出し 15.3 インスタンスデータへのアクセス 15.4 馬の組み立て方 15.5 コンストラクタの継承 15.6 クラスとインスタンスのどちらを渡してもメソッドが使えるようにするには 15.7 メソッドへの引数の追加 15.8 もっとおもしろいインスタンス 15.9 別の色の馬 15.10 セッターから何を返すか 15.11 箱のなかを覗かないで 15.12 より高速なゲッターとセッター 15.13 セッターとしても使えるゲッター 12.14 クラス専用メソッドとインスタンス専用メソッド 15.15 練習問題 16章 オブジェクトに関する高度なトピックス 16.1 UNIVERSALメソッド 16.2 オブジェクトの動作に関するテスト 16.3 最後の手段としてのAUTOLOAD 16.4 AUTOLOADを使ってアクセッサを作る方法 16.5 もっと簡単にゲッターとセッターを作る方法 16.6 多重継承 16.7 練習問題 17章 Exporter 17.1 useがしていること 17.2 Exporterを使ったインポート 17.3 @EXPORTと@EXPORT_OK 17.4 %EXPORT_TAGS 17.5 カスタムインポートルーチン 17.6 練習問題 18章 オブジェクトの解体 18.1 オブジェクト解体後のクリーンアップ 18.2 ネストしたオブジェクトの解体 18.3 死に馬にむちを打つ 18.4 間接オブジェクト記法 18.5 サブクラスでのインスタンス変数の追加 18.6 クラス変数の使い方 18.7 リファレンスを弱める 18.8 練習問題 19章 Moose入門 19.1 MooseによるAnimal 19.1.1 継承ではなくロール 19.1.2 デフォルト値 19.1.3 値の制限 19.1.4 メソッドのラップ 19.1.5 読み出し専用属性 19.2 競走馬の改良 19.3 学習を深めるために 19.4 練習問題 20章 高度なテスト 20.1 テストの省略 20.2 オブジェクト指向機能のテスト 20.3 テストを1つにまとめる 20.4 大規模な文字列のテスト 20.5 ファイルのテスト 20.6 STDOUTやSTDERRのテスト 20.7 モックオブジェクトを使ったテスト 20.8 独自のTest::*モジュールの開発 20.9 練習問題 21章 CPANへの投稿 21.1 CPAN 21.2 準備 21.3 PAUSEの仕組み 21.3.1 インデクサ 21.3.2 モジュールメンテナ 21.4 作業を始める前に 21.5 ディストリビューションの準備 21.5.1 READMEの作成または更新 21.5.2 ビルドファイルのチェック 21.5.3 MANIFESTの更新 21.5.4 バージョン文字列の書き換え 21.5.5 ディストリビューションのテスト 21.6 ディストリビューションのアップロード 21.7 マルチプラットフォームテスト 21.8 モジュールの公表 21.9 練習問題 付録 練習問題の解答 A.1 第1章の解答 A.2 第2章の解答 A.3 第3章の解答 A.4 第4章の解答 A.5 第5章の解答 A.6 第6章の解答 A.7 第7章の解答 A.8 第8章の解答 A.9 第9章の解答 A.10 第10章の解答 A.11 第11章の解答 A.12 第12章の解答 A.13 第13章の解答 A.14 第14章の解答 A.15 第15章の解答 A.16 第16章の解答 A.17 第17章の解答 A.18 第18章の解答 A.19 第19章の解答 A.20 第20章の解答 A.21 第21章の解答 索引