目次
第1章 最初はあいさつから
- 1-1 最初のプログラム
- プログラムを使わずにPerlを使ってみる
- 1行だけプログラムを書いてみる
- コメント行と空行
- シュバング行
- 1-2 print関数をマスターしよう
- 関数と引数
- 文字列と改行とエスケープ文字列
- 不要なバックスラッシュ(¥)
- 1-3 式,文,セミコロン(;)
- 式と文
- セミコロン(;)
- コラム 知識のリンゴの木
第2章 数と計算
- 2-1 足し算,引き算,掛け算,割り算,カッコ!
- printで計算しよう
- 次は引き算だ
- 次は割り算だ
- 演算子と優先順位
- カッコによる順番の変化
- 2-2 変数を導入しよう!
- 変数
- スカラー変数の作成
- スカラー変数の代入
- 代入式も値を持つ
- 演算子=の優先順位
- 標準体重に戻ります
- 計算結果の表示
- 2-3 右辺の変数を変更する代入
- 「$x = $x + 1」 !?
- 2-4 演算子がいっぱい
- +=と-=
- ++と--
- 変数を変化させる演算子のまとめ
- 2-5 警告/厳格モード
- use warningsで警告モード
- use strictで厳格モード
- myで変数を宣言する
- 2-6 関数の使い方
- sqrt関数を使ってみよう
- 引数をカッコで囲むかどうか
- printのカッコに気を付けろ!
- コラム コメントと人間性
第3章 文字列とコンテキスト
- 3-1 文字列
- 文字列リテラル
- 文字列も変数に入る
- 二重引用符の変数展開
- しかし落とし穴が
- $記号を表示したい
- 3-2 文字列と演算子
- ドット演算子(.)
- 反復演算子(x)
- .=とx=演算子
- 文字列変数が数値として使える
- 3-3 文字列と関数
- printの改行いらない版say
- 文字列の長さを測るlength
- 部分文字列を返すsubstr(左辺にも使える!)
- 部分文字列を検索して位置を返すindex
- 3-4 不思議な値undef
- 定義していない値を使うと怒られる
- 強制的に未定義状態を作り出すundef関数
- Perlには文脈がある(文字列コンテキストと数値コンテキスト)
- コラム 豆プログラム集のすすめ
第4章 リストと配列
- 4-1 リストとは何か
- リストはすでに出てきた
- 4-2 配列とは何か
- 配列にリストを代入する
- 配列を順番でアクセスする
- 配列要素に値を代入する
- 二重引用符で配列を展開する
- 4-3 リストと配列
- リストに配列を代入する
- リスト同士の代入
- リストをインデックスで参照する
- 4-4 リストの中に配列を入れる
- 配列が入ったリストへの代入
- 4-5 配列の伸び縮み
- 配列はよくばり
- 配列の自動生成
- よくばり配列問題の解決
- 4-6 スライス
- スライスで配列を輪切りにしろ!
- 飛び飛びのスライス
- 4-7 通し番号を打て! ドットドット(..)
- マジック インクリメント
- 4-8 スカラー コンテキストとリスト コンテキスト
- スカラー コンテキストを強制するscalar関数
- 4-9 プログラムの引数
- Perlの自作プログラムで引数を取る
- 月名を引数で調べる
- 4-10 配列関連の関数,演算子
- 引数利用の極致! Perlの命令を実行するeval
- qw演算子
- 配列要素を追加/削除する push,pop,shift,unshift
- 配列をソートするsort関数
- 配列を逆転するreverse関数
- 文字列を配列化するsplit
- 配列を文字列化するjoin
- 現在時刻を返すlocaltime(time)
- コラム それ,何がうれしいの?
第5章 ハッシュ
- 5-1 ハッシュとは何か
- ハッシュの作り方
- 配列を使ったハッシュの初期化
- ハッシュはどの順番でも書ける
- シンタックス シュガー =>
- ハッシュ定義のさらに見やすい書き方(おすすめ)
- ハッシュの検索
- ハッシュ スライス
- 5-2 ハッシュ エントリーの追加,更新
- ハッシュ エントリーを実行中に追加する
- 同じキーの値の上書き
- 5-3 ハッシュを操作する関数
- delete関数(エントリーの削除)
- エントリーの存在をチェックするexists関数
- キーをリストアップするkeys関数
- 値をリストアップするvalues関数
- コラム シジルの愉悦
第6章 枝分かれのifと真偽
- 6-1 制御構造とは何か
- 順次処理と制御
- 6-2 枝分かれの制御文~if(もしも)とelse(それ以外)
- if文
- else文
- 数値比較演算子==(イコール イコール)
- 文をまとめるブロック
- 6-3 真偽の研究
- 真偽値を直接表示してみる
- 逆に1と空文字列を条件式として使ってみる
- 1だけが真か? ""だけが偽なのか?
- 割り切れたら偽
- フラグ
- 6-4 3つ以上の分岐:elsif
- 6-5 条件文のバリエーション
- ifの反対unless
- 後置式のif,unless
- 6-6 真偽値の演算子
- 否定のnot
- かつ(and)
- または(or)
- orとandを組み合わせる
- 閏年ならば死ね!(orとandの短絡)
- 6-7 比較演算子のいろいろ
- ==以外の数値比較演算子
- 数値の比較演算子のまとめ
- 6-8 文字列としての比較,数値としての比較
- eqとne
- 文字列としての大小比較
- 6-9 3値演算子
- 数値順のソートに使う宇宙船演算子<=>
- 大きい順にも並べたい
- 文字列順のソートもカスタマイズしたい(cmp演算子)
- コラム TIMTOWTDI精神
第7章 繰り返しと脱出
- 7-1 第3の制御構造,反復処理
- 条件が真であれば繰り返すwhile
- 7-2 nextとlast
- 今回は許しておいてやるnext
- 恐怖の無限ループ
- ループを脱出するlast文
- 7-3 後置式のwhile
- 7-4 foreachとfor
- 配列を処理するforeach
- foreachはforとも書ける
- forと..で数を数える
- 7-5 forとハッシュ
- keysとforの組み合わせ
- forとハッシュを使って,リストの重複を取り除く
- 7-6 forのネスティング
- forで素数を調べよう(forの中のif)
- 二重ループとラベル付きforでたくさん素数を調べる
- forで配列を書きかえる
- 7-7 制御変数の省略と,謎の物体$_
- 実は$_を使えた関数
- 7-8 forの補足事項いろいろ
- 後置式のfor
- C言語風のfor(;;)文
- whileとforの使い分け
- コラム 素数プログラムはどっちが速いか
第8章 自作関数サブルーチン
- 8-1 サブルーチンの導入
- サブルーチンの導入
- メイン プログラムとサブルーチン
- 8-2 サブルーチンの呼び出しと引数
- サブルーチンの書き方
- サブルーチン側で引数を受ける
- サブルーチンとshift関数
- サブルーチンの値を返すreturn関数
- return関数の省略
- my宣言によるローカル化
- 8-3 サブルーチンからサブルーチンを呼ぶ
- 戻り値を使わないサブルーチン
- 引数を取らないサブルーチン
- 戻り値を複数返すサブルーチン
- 引数を受け取らず,戻り値も返さないサブルーチン
- 8-4 sort関数のカスタマイズ
- サブルーチンは自作の関数である
- 制御構造の研究は以上です
- コラム インデントの楽しみ
第9章 ファイル処理
- 9-1 ファイルとは
- テキスト ファイルの構造
- 改行コードの怪
- ファイルの書き出しはもうできている
- 9-2 標準出力とリダイレクト
- リダイレクトしたファイルをダンプする
- warnとdieと標準エラー出力
- 標準エラー出力もファイルに保存したい
- 9-3 次は標準入力だ
- 改行文字の謎
- 9-4 STDINループを作る
- ヌル文字をSTDINに渡す
- STDINループ
- STDINへの入力のリダイレクト
- $_の導入
- フィルター
- 9-5 フィルターの応用
- フィルターの応用1:行番号を振ろう
- フィルターの応用2:コメント行だけを抜き出そう
- 9-6 リスト コンテキストでの
- 9-7 ダイアモンド演算子(<>)
- リスト コンテキストでのダイアモンド演算子
- 9-8 ファイル名を指定した処理(読み込み編)
- open関数(読み込み)
- <ファイルハンドル>式
- close関数
- open関数を使ったファイルの入力処理(実例)
- open関数のエラーに対処する
- 9-9 出力のopen関数
- open関数を使ったファイルの出力処理(実例)
- 9-10 ファイル処理のいろいろ
- select関数で出力のファイルハンドルを切り替える
- ファイルテスト演算子でファイルの状態を調べる
- アペンド(追加書き)のopen
- もう1つの特殊ファイルハンドルDATA
- コラム(マイ)ベスト プラクティス
第10章 日本語処理
- 10-1 文字コードって何
- 英語はASCII
- 改行コード
- ダンプしてみる
- プログラムもダンプしてみる
- Mac/UNIXでも英語でHello
- 10-2 日本語を表示する
- Shift_JIS
- Shift_JISのコード表,1バイト編(wincode1_mod.txt)
- Shift_JISのコード表,2バイト編(wincode2_mod.txt)
- Shift_JISで「申します」が化ける
- その場しのぎの解決法~余計な?を挿入する
- 根本的な解決法~UTF-8を使う
- 10-3 utf8プラグマ モジュール
- プログラムはUTF-8で,出力はShift_JISで
- Mac/UNIXではUTF-8を使おう
- use utf8
- utf8プラグマ モジュールをMac/UNIXで使う
- 10-4 binmode関数
- binmode関数でWide character警告を消す
- 一方そのころMac/UNIXでは
- 10-5 プログラムのUTF-8化に関する問題とその解決
- UTF-8を使ったPerlのまとめ
- WindowsとMac/UNIXの違いを追求する
- 10-6 入力ファイルの文字コード指定
- STDINからの入力
- 自作ファイル ハンドルの文字コード指定
- 自作ファイル ハンドルの文字コード指定2
- 10-7 decode関数とencode関数
- 引数のdecode
- encode関数
- WindowsのスクリプトをMac/UNIXに移植するには(まとめ)
- コラム エラー メッセージは友達だ!
第11章 正規表現
- 11-1 正規表現とマッチ演算子
- マッチ演算子(//)
- 最も簡単な正規表現ドット(.)
- ここで注意! utf8と正規表現について
- 11-2 量指定子
- マッチ変数$&
- 最大マッチ
- 最小マッチ
- 11-3 位置指定
- 先頭の^,末尾の$
- 単語境界の¥b
- 11-4 文字クラス
- 文字クラスの否定
- 文字クラスのショートカット(ちょっと要注意)
- 日本語文字クラス(1)~ひらがなとカタカナ
- 日本語文字クラス(2)~漢字
- 11-5 カッコ(())と縦バー(|)
- カッコ(())によるグループ化と量指定子
- カッコ(())による捕獲
- 捕獲を行わないカッコ((?:~))
- 縦バー(|)による選択条件
- 縦バーの落とし穴
- 11-6 まだまだマッチ演算子の隠された機能が
- 正規表現を変数に入れる
- split関数と正規表現
- $_以外のスカラー変数にマッチ演算子を作用させる
- 11-7 メタ文字と区切り文字
- メタ文字
- 正規表現のアットマーク(@)にも注意
- スラッシュ(//)以外も使える
- 11-8 修飾子
- 文字クラスのショートカットをASCII状態で使う/a
- 大小文字を無視する/i
- 空白,コメントを入れる/x
- 何回もマッチする/g
- 11-9 置換の基礎
- 固定文字列の置換
- 位置指定を使う置換
- 置換による削除
- カッコによる捕獲と置換を組み合わせる
- 11-10 高度な置換
- 結合演算子=~と置換
- 繰り返しの言葉を削除する(グループ化と量指定子)
- /g修飾子
- /e修飾子
- ループ置換
- ファイル全部を一気読み(slurp)
- 変換演算子(tr///)
- コラム 無理をしない
第12章 モジュール入門/フォルダー処理,CGI
- 12-1 モジュール,オブジェクト指向
- 12-2 ディレクトリー処理にはFile::Find
- いきなりサンプル プログラム
- 12-3 CGIプログラム入門
- CGI入門
- CGIからごあいさつ
- コマンド ラインでCGIを無理矢理実行してみる
- ローカルのHTMLを作ってみる
- CGI.pmを使わないCGIスクリプトを作ってみる
- フォームからデータを入力する
- コラム 豆プログラム共用のススメ
- 付録-A Windowsによる最初のプログラム
- ActivePerlのインストール
- インストーラーのダウンロード
- インストーラーの実行
- Windowsエクスプローラーのメニューバーを表示する
- Perlの動作確認をする
- プログラムを作るフォルダーを作る
- 環境変数を設定する
- プログラムを作成
- プログラムを実行
- 付録-B Mac/UNIXによる最初のプログラム
- OS XではPerlはもともとインストールされている(はず)
- ターミナルを開く
- 文字コードの環境確認
- プログラムを置くフォルダー
- PATHを通す
- プログラムを作成する
- パーミッションを変更する
- いよいよ実行
- 付録-C オンライン マニュアルperldoc
- 付録-D 参考文献