続・初めてのPerl 改訂第2版

[cover photo]
TOPICS
Perl
発行年月日
PRINT LENGTH
432
ISBN
978-4-87311-628-0
原書
Intermediate Perl, 2nd Edition
FORMAT
Print PDF
Ebook
3,960円
Ebookを購入する
Print
3,960円

『初めてのPerl』の著者が書き下ろした続編の改訂第2版。Perl入門を済ませた読者が次のステージへと進むために必要な基礎知識やノウハウを解説。『初めてのPerl』では説明しきれなかった内容を扱っています。Perlプログラマがステップアップするために欠かすことのできないリファレンス、ディストリビューション、Perlのオブジェクト指向、テストなどについて詳しく解説し、Perlを使って大規模なプログラムを書く方法を示します。ステップアップしたいPerlプログラマの必読書です。

目次

改訂版への序文
はじめに

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章の解答
索引