Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 書籍案内

【書籍案内】かんたんプログラミングCGI/Perl 木本裕紀著

技術評論社から「かんたんプログラミング」シリーズとして発売されている書籍のCGI/Perl版です。

[asin:4774139289:detail]

この書籍は現時点で、現代的なPerlで記述されている唯一のCGIの本だと思われます。CGIについて書いた、Perlの書籍というのは、Perl4が流行していた時代のあまり推奨されない記述がたくさん含まれている本がほとんどです。

モダンPerlを意識して書かれているCGIの本はまずないと思われます。

CGIの解説については、プロトコルの細部についてではなくて、CGIプロトコルを使ってWebアプリケーションを開発するときに、内部でどのようなことが行われるかということをイメージしやすいような解説になっています。

「ブラウザ -> HTTPリクエスト発行 -> Webサーバー -> CGIスクリプト -> HTTPレスポンス生成-> Webサーバー -> ブラウザ」という流れが理解できる解説になっています。

CGI自体は、処理速度が出ないという理由のために、主流ではなくなってしまいましたが、Webアプリケーションがどのように動いているかを理解する助けとしては、有用だと思います。

またさくらのレンタルサーバーでCGIを配置して実際に実行する部分を詳しく解説しています。FFFTPとかの解説も丁寧にしていて、実際にCGIをサーバー上に配置するときに、できるだけつまづかないように考慮が払われています。

この書籍には章を丸まるとって、純粋な「Perl入門」が含まれています。この章はCGIスクリプトとは、関係がないので、モダンPerlの入門書として読んでいただけるかと思います。業務に役だつPerlの第二章ではPerlの基礎を解説していますが、これを丁寧に解説してあると考えていただけるとイメージしやすいのではないかと思います。

また本書の中で利用しているサンプルコードをWebからダウンロードして試すこともできます。

初めての著作なので、いたらないところが、けっこうあり誤字もたくさんあります。

Webフレームワークにチャレンジ

CGIスクリプトでWebアプリケーションを書くという手法は、現在では古いものになっています。Webフレームワークを使ってWebアプリケーションにもチャレンジしてみましょう。

簡単プログラミングCGI/Perlに掲載されたWebアプリケーションのサンプルを、Mojoliciousというフレームワークで書き直してみました。

かんたんプログラミング CGI/Perl 正誤表

「かんたんプログラミング CGI/Perl」の正誤表を作成しました。自分で発見したものと教えてもらったものについて記載してあります。かなりの間違いを含んでいます。サンプルコードについてはほとんどは動くと思います。

|

ページ 場所
P18 下段 Accept-Charsetの解説でUTF-8がutf-8になってます UTF-8が正しいです
P24 中段 「POSTメソッドで送信されたメッセージボディのデータが~」が重複して記入されています 重複を取り除く
P31 上段 デフォルトでは「I Accept …」にチェックが入っています。 デフォルトでは「I Accespt …」にチェックが入っていません
P34 上段 Webアプリケーションは「HTML」「HTTP」「CGI」「Perl」の4つの要素で構成されており、それぞれの知識が必要不可欠です。 Webアプリケーションは複数の技術で構成されており、「HTML」「HTTP」「CGI」「Perl」について学習する必要があります。
P34 中段 HTTPをCGIスクリプトのように書くことはありませんが、記述されている情報をスクリプト内で利用することができます。 HTTPリクエストのヘッダ情報はCGIスクリプト内で利用することができます。
P34 下段 WebサーバからCGIスクリプトへデータを渡す方法を「標準入力」、CGIスクリプトからWebサーバへデータを渡す方法を「標準出力」といいます。 WebサーバからCGIスクリプトへデータを渡すには「標準入力」を利用し、CGIスクリプトからWebサーバへデータを渡すには「標準出力」を利用します。
P59 中段 「8.Perlの実行パスの記述が間違っている」の位置が異なる P056の「7.CGIスクリプトのパーミッション」の直後の位置が正しいです
P62 上段 画面に表示するする 画面に表示する
P64 中段 Unixの拡張したOSやLinux系のOSを含みます Unixを拡張したOSやLinux系のOSを含みます
P74 上段 不等号とは異なり「=」に「等しい」という意味はありません。 数学の等号記号とは異なり「=」に「等しい」という意味はありません。
P75 上段 意味がわかる名前にましょう。 意味がわかる名前にしましょう。
P79 下段 l<という変な記号があります 削除しわすれています
P83 中段 「配列の要素に添え字を使ってアクセスすることができます。~」の位置が間違っています。 中見出しの「配列の要素」の直後が正しいです。
P84 中段 このように配列変数をスカラ変数に代入することを、スカラコンテキストといいます 解説が間違っているので、この文は削除するのが正しいです。
P86 中段 中見出し「配列に配列を追加する」 「配列に複数の要素を追加する」が正しいです
P86 中段 ひとつの要素だけでなく、配列の追加にも対応しています ひとつの要素だけでなく、複数の要素の追加にも対応しています
P87 中段 ソースコード @nums = reverse sort {$b <=> $a} @nums reverseはいらないです。@nums = sort {$b <=> $a} @nums が正しいです。
P88 中段 ソースコード ($name, $age) = ('Ken', 'Taro') ($name, $age) = ('Ken', 18) が正しいです
P85 上段 ソースコードのif分に閉じブレースがない 閉じブレースを追加
P86 下段 配列の要素の1番目から2つの要素を取り出す例です。 配列の要素の2番目(添え字で1)から2つの要素を取り出す例です。
P87 上段 配列の要素の1番目の位置から2つの要素を置換する例です。 配列の要素の2番目(添え字で1)から2つの要素を置換する例です。
P89 下段 ソースコードの最後に「print $animal_join;」が抜けています print $animal_join;を追加
P089 下段 joinの解説を行っていないのにjoinを使用しています。 3章5節 「数値演算と文字列操作」で解説されています。
P89 中段 ソースコード 18行目 my $last_animals = pos; my $last_animals = pop @animals が正しいです
P102 上段 その位置が何文字目から始まっているのかを返却します 戻り値としてその位置を返却します
P091 下段 国際標準後 国際標準語
P105 下段 >ll というゴミが残っています。 取り除くのが正しいです。
P108 上から14行目 論理和(何々 かつ 何々) 論理和(何々 または 何々)
P110 下段 スクリプトの実行方法抜けています 引数を指定してスクリプトを実行してみましょう。perl sample_3_6 1 2 を追加するのが正しいです
P111 上から7行目 1番目の要素に「0」が 1番目の要素に「1」が
P111 下から3行目 $num[0] $num[1] $nums[0] $nums[1]
P114 下段 「$animal」が「cat」の場合には 「$animal」が「dog」の場合には
P123 上段 samplw_3_8.pl sample_3_8.pl
P145 上段 close $fh close $fh;
P148 上段 少し進んだ話題ですが、ぜひ知っておいたほうがよい 少し進んだ話題ですが、ぜひ知っておいたほうがよいことがあります。
P157 中段 windwos perl nmake windows perl nmake
P158 中段 完結な内容にしましょう 簡潔な内容にしましょう
P158 上段 PerlスクリプトはWebブラウザからではなく、コマンドプロンプトかシェルからスクリプトの存在するディレクトリを指定し、Perlコマンドから実行します Perlスクリプトはコマンドプロンプトやシェルなどからperlコマンドを使って実行します
P158 上段 変数とは値を納めることができる仕組みのことです。プログラムが終了するまで値を維持でき、繰り返し利用することができます。 「変数には値を代入することができます。」に修正するのが正しいです。変数はプログラムが終了するまで値を維持しているわけではないので。
P162 中段 titleタグの閉じタグのスラッシュ(/)がないです。 スラッシュがあるのが正しいです。
P164 中段 titleタグの閉じタグのスラッシュ(/)がないです。 スラッシュがあるのが正しいです。
P165 中段 titleタグの閉じタグのスラッシュ(/)がないです。 スラッシュがあるのが正しいです。
P167 中段 titleタグの閉じタグのスラッシュ(/)がないです。 スラッシュがあるのが正しいです。
P170 中段 titleタグの閉じタグのスラッシュ(/)がないです。 スラッシュがあるのが正しいです。
P173 中段 フォームのactionのURLの指定が間違っています。 /cgi-bin/simple-form.cgiが正しいです。
P174 上段 /var/www/htm /var/www/html
P176 下段 受け取った文字列を出力されました。 受け取った文字列が出力されました。
P207 上段 ソースコード名がない image-bbs.cgi
P232 上段 「出力するデータは必ず~」の見出しが中見出し 小見出しになっているのが正しいです
P234 上段 実行したプログラムの役割を果たすモジュールがないかを~ 実行したいプログラムの役割を果たすモジュールがないかを~
P235 下段 ソースコード ? の部分にtaraを埋め込む 「? の部分にtaroを埋め込む」が正しいです。
  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。