書籍概要

プログラミングの教科書

かんたん Perl

著者
発売日
更新日

概要

本書は,プログラム言語Perlの入門書です。Perlは,気楽に書けて超強力な言語として,長く親しまれています。本書ではデータ構造,アルゴリズム,ファイル処理,日本語処理,正規表現をまったくの初歩から学ぶことで,基本的な考え方から,実用的なプログラミングまで,楽しく身につけられることを目的としています。

こんな方におすすめ

  • はじめてプログラムを作成する人

目次

第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 参考文献

サポート

ダウンロード

(2023年7月21日更新)

本書で使用するサンプルファイルはダウンロードできます。以下の圧縮ファイルをダウンロードし,適宜解凍してご利用ください。

ダウンロード
サンプルファイル

正誤表

(2023年7月21日最終更新)

技術評論社から2016年1月16日に刊行された書籍『かんたんPerl』につきまして,著者が認識している誤りを訂正し,お詫びいたします。

また,誤りを指摘してくださった方々にお礼いたします。

なお,本書(紙書籍版,電子書籍版の双方)の巻末奥付において,ブログ『かんたんPerl倶楽部』でオンラインでサポートするという趣旨のことを書いていますが,著者の事情により,現在は停止しております。

あわせてお詫びいたします。

現在ごらんになっている正誤表が最新情報ですので,よろしくお願いします。

正誤表は以下の2部に分かれています。

何かありましたら,サポートメールアドレス
[email protected]にご連絡いただければ幸いです。

どうぞよろしくお願いいたします。

(深沢千尋)

紙書籍初版 第1刷正誤表(電子書籍版では修整済み)

以下の通りです。

表記の間違い
P.112 下から9行目
ありぃ~(ary~?)うまく言っていませんね。
ありぃ~(ary~?)うまくっていませんね。
余計な文
P.117 サンプル プログラムmonth12.pl中
P.160 サンプル プログラムmonth12.pl(再掲)中
use 5.010;
use strict;
use warnings;
 
my $num = 1;

my @month = (undef, "January", "February", "March", "April",
  "May", "June", "July", "August", "September",
  "October", "November", "December");
use 5.010;
use strict;
use warnings;
 
my @month = (undef, "January", "February", "March", "April",
  "May", "June", "July", "August", "September",
  "October", "November", "December");

my $num = 1;」は不要です。

足りない文
P.563 サンプル プログラムtrName.pl中
use 5.010;
use strict;
use warnings;

use utf8;
use 5.010;
use strict;
use warnings;

use utf8;

if ($^O eq "MSWin32") {
  binmode STDOUT, ":encoding(Shift_JIS)";
} else {
  binmode STDOUT, ":encoding(UTF-8)";
}
説明の間違い
P.438 下から9行目
ファイルハンドルDATAで取得する__DATA__以降のデータは、プログラムと同じUTF-8のテキスト ファイルに保存しますから、binmodeの:encodingにはUTF-8を指定します。
 そして
標準出力(STDOUT)の文字コードをOSによってWindowsの場合はShift_JIS、それ以外の場合はUTF-8にbinmode指定します。
ファイルハンドルDATAで取得する__DATA__以降のデータは、プログラムと同じUTF-8のテキスト ファイルに保存されていますが、use utf8;の影響範囲にありますから、UTF-8内部文字列なので、binmodeの指定は不要です。
 一方、
標準出力(STDOUT)の文字コードは、従来通りOSによってWindowsの場合はShift_JIS、それ以外の場合はUTF-8にbinmode指定します。
余計な文
P.492 サンプル プログラムremoveDup.pl
P.492 サンプル プログラムremoveParen.pl
P.592 サンプル プログラムremoveTeam.pl
P.514 サンプル プログラムsortNameReading.pl
P.561 サンプル プログラムsortNameReading.pl(再掲)中
use utf8;

binmode DATA, ":encoding(UTF-8)";

if ($^O eq "MSWin32") {
  binmode STDOUT, ":encoding(Shift_JIS)";
} else {
  binmode STDOUT, ":encoding(UTF-8)";
}
use utf8;

if ($^O eq "MSWin32") {
  binmode STDOUT, ":encoding(Shift_JIS)";
} else {
  binmode STDOUT, ":encoding(UTF-8)";
}

binmode DATA, ":encoding(UTF-8)"; 」は不要です。

part 2: 紙書籍初版 第1刷および2016-01-16版電子書籍正誤表

以下の通りです。

コードの間違い
P.95 サンプル プログラムmonthName.pl中
my $year = "January 1 February 2 March 3 April 4 May 5 June 6 July 7 August 8 September 9 October 10 November 11 December 12";
my $year = "January 1 February 2 March 3 April 4 May 5 June 6 July 7 August 8 September 9 October 10 November 11 December 12 ";

文字列の末尾,引用符の前に半角空白を加えます。

ブログ『かんたんPerl倶楽部』の廃止

先にも述べましたが,巻末の奥付にて,ブログ『かんたんPerl倶楽部』でオンラインでサポートするという趣旨のことを書いていますが,現在は停止しております。

現在ごらんになっている正誤表が最新情報ですので,よろしくお願いします。

(以上)

商品一覧