本書は『初めてのPerl』では説明しきれなかった内容を扱っています。Perlプログラマがステップアップするために必要なPerlのオブジェクト指向メカニズムの基礎となるパッケージ、リファレンス、ハッシュ、配列、サブルーチン、モジュールについて解説し、Perlを使って大規模なプログラムを書く方法を示します。興味深いサンプルコードと章末の練習問題というおなじみのスタイルで、良質な知識を効率よく身に付けられるよう構成されています。Perlプログラマの必読書です。
続・初めてのPerl 改訂版
Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也、田中 慎司、吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳
- TOPICS
- Programming
- 発行年月日
- 2006年10月
- PRINT LENGTH
- 328
- ISBN
- 4-87311-305-9
- 原書
- Intermediate Perl
- FORMAT
関連ファイル
目次
序文 はじめに 1章 イントロダクション 1.1 必要な基礎知識は 1.2 脚注とはどう付き合ったらよいのか 1.3 練習問題はどうしたらよいのか 1.4 Perl講座の講師の方に 2章 中級者の基礎知識 2.1 リスト演算子 2.1.1 grepによるリストのフィルタリング 2.1.2 mapによるリストの変換 2.2 evalによるエラーのトラップ 2.3 evalによるダイナミックコード 2.4 練習問題 3章 モジュールの使い方 3.1 標準ディストリビューション 3.2 モジュールの使い方 3.3 関数インタフェース 3.4 インポートする関数を選ぶには 3.5 オブジェクト指向インタフェース 3.6 より典型的なオブジェクト指向モジュール:Math::BigInt 3.7 CPAN 3.8 CPANのモジュールをインストールするには 3.9 適切なタイミングでパスを設定するには 3.9.1 モジュールの依存関係を処理するには 3.10 練習問題 4章 リファレンス入門 4.1 多くの配列に対して同じ処理を実行するには 4.2 配列へのリファレンスを取るには 4.3 配列リファレンスをデリファレンスするには 4.4 中かっこを省略してよいとき 4.5 配列を書き替えるには 4.6 ネストしたデータ構造 4.7 矢印でネストした要素リファレンスをすっきりさせる 4.8 ハッシュへのリファレンス 4.9 練習問題 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.3 YAML 6.4 Storableで複雑なデータを格納するには 6.5 map演算子とgrep演算子の使い方 6.6 間接指定のちょっとした応用 6.7 複雑なデータの選択と変更 6.8 練習問題 7章 サブルーチンへのリファレンス 7.1 名前付きサブルーチンを参照するには 7.2 無名サブルーチン 7.3 コールバック 7.4 クロージャ 7.5 サブルーチンからサブルーチンを返す 7.6 入力としてのクロージャ変数 7.7 静的ローカル変数としてのクロージャ変数 7.8 練習問題 8章 ファイルハンドルへのリファレンス 8.1 古い方法 8.2 改良された方法 8.3 さらによい方法 8.4 IO::Handle 8.4.1 IO::File 8.4.2 無名IO:Fileオブジェクト 8.4.3 IO::Scalar 8.4.4 IO::Tee 8.5 ディレクトリハンドルリファレンス 8.5.1 IO::Dir 8.6 練習問題 9章 リファレンスを使った実践的なテクニック 9.1 ソートとは 9.2 添字を使ったソート 9.3 効率のよいソート 9.4 シュワルツ変換 9.5 シュワルツ変換を使ったマルチレベルソート 9.6 再帰的に定義されたデータ 9.7 再帰的に定義されたデータの構築 9.8 再帰的に定義されたデータの表示 9.9 練習問題 10章 大規模なプログラムの構築 10.1 共通するコードへの対処 10.2 evalによるコードの挿入 10.3 doを使う方法 10.4 requireを使う方法 10.5 requireと@INC 10.5.1 @INCの拡張 10.5.2 PERL5LIBを使った@INCの拡張 10.5.3 -Iを使った@INCの拡張 10.6 名前空間の衝突の問題 10.7 名前空間セパレータとしてのパッケージ 10.8 packageディレクティブのスコープ 10.9 パッケージとレキシカル変数 10.10 練習問題 11章 オブジェクト入門 11.1 動物と話すことができたら 11.2 メソッド呼び出しの矢印 11.3 メソッド呼び出しの特別な引数 11.4 第2のメソッドを呼び出して話を単純化する 11.5 @ISAについての注意 11.6 メソッドのオーバーライド 11.7 異なる場所からの検索の開始 11.8 SUPERなやり方 11.9 @_の処理 11.10 どこまで来たのか 11.11 練習問題 12章 データのあるオブジェクト 12.1 馬は馬、当たり前だろうか 12.2 インスタンスメソッドの呼び出し 12.3 インスタンスデータへのアクセス 12.4 馬を作る方法 12.5 コンストラクタの継承 12.6 クラスとインスタンスのどちらを渡してもメソッドが使えるようにするには 12.7 メソッドへの引数の追加 12.8 もっとおもしろいインスタンス 12.9 別の色の馬 12.10 セッターから何を返すか 12.11 箱の中を覗かないで 12.12 より高速なゲッターとセッター 12.13 セッターとしても使えるゲッター 12.14 クラス専用メソッドとインスタンス専用メソッド 12.15 練習問題 13章 オブジェクトのデストラクション 13.1 オブジェクトが消滅した後のクリーンアップ 13.2 ネストしたオブジェクトのデストラクション 13.3 死に馬にむちを打つ 13.4 間接オブジェクト記法 13.5 サブクラスでのインスタンス変数の追加 13.6 クラス変数の使い方 13.7 リファレンスを弱める 13.8 練習問題 14章 オブジェクトに関する高度なトピックス 14.1 UNIVERSALメソッド 14.2 オブジェクトの動作に関するテスト 14.3 最後の手段としてのAUTOLOAD 14.4 AUTOLOADを使ってアクセッサを作る方法 14.5 もっと簡単にゲッターとセッターを作る方法 14.6 多重継承 14.7 練習問題 15章 Exporter 15.1 useがしていること 15.2 Exporterを使ったインポート 15.3 @EXPORTと@EXPORT_OK 15.4 %EXPORT_TAGS 15.5 オブジェクト指向モジュールでのエクスポート 15.6 カスタムインポートルーチン 15.7 練習問題 16章 ディストリビューションの書き方 16.1 何事もやり方は1つではない 16.2 h2xsの使い方 16.2.1 MANIFEST 16.2.2 README 16.2.3 Changes 16.2.4 META.yml 16.2.5 プロトタイプモジュール 16.3 埋め込みドキュメント 16.4 Makefile.PLによるディストリビューションのコントロール 16.5 代替のインストール場所(PREFIX=...) 16.6 ごく簡単なmake test 16.7 ごく簡単なmake install 16.8 ごく簡単なmake dist 16.9 ライブラリの別の場所の指定 16.10 練習問題 17章 基本的なテスト 17.1 テストすればするほどコードはよくなる 17.2 簡単なテストスクリプト 17.3 テストのコツ 17.4 テストハーネス 17.5 Test::Moreを使ってテストを書く 17.6 オブジェクト指向機能のテスト 17.7 テストのToDoリスト 17.8 テストのスキップ 17.9 より複雑なテスト(複数のテストスクリプト) 17.10 練習問題 18章 高度なテスト 18.1 大規模な文字列のテスト 18.2 ファイルのテスト 18.3 STDOUTやSTDERRのテスト 18.4 モックオブジェクトを使ったテスト 18.5 PODのテスト 18.6 カバレッジテスト 18.7 独自のTest::*モジュールの開発 18.8 練習問題 19章 CPANへの投稿 19.1 CPAN 19.2 準備作業 19.3 ディストリビューションの準備 19.4 ディストリビューションのアップロード 19.5 モジュールの公表 19.6 マルチプラットフォームテスト 19.7 記事の執筆や講演会への参加 19.8 練習問題 付録 練習問題の解答 2章の解答 3章の解答 4章の解答 5章の解答 6章の解答 7章の解答 8章の解答 9章の解答 10章の解答 11章の解答 12章の解答 13章の解答 14章の解答 15章の解答 16章の解答 17章の解答 18章の解答 19章の解答 索引