〜「すぐわかる Perl」第6刷正誤表〜

メモ:
2000年12月6日に新しく追加された修正には「▲」をつけてあります。

メモ:
2001年11月11日に新しく追加された修正には「▼」をつけてあります。

メモ:
2009年1月5日に新しく追加された修正には「■」をつけてあります。

本正誤表は、第6刷および第7刷に2000年12月6日までで発見されたバグを修正するものです。
(以下は全正誤表に共通の文章です)

エーごらんいただければわかりますが、間違い、多いです。まあ書を読みて悉くそれを信ずれば書なきが如しと申しますが(これこれ)
それにしても読者の方にあらためてお詫び申し上げます。大変ご面倒をお掛けしますが、訂正をお願いいたします。
正誤表の文責は著者の深沢千尋にあります。えっと、必ずしも正誤表通りに修正されたわけではありませんが
(長い追加はレイアウト上の理由で短縮したなど)以下では著者の意図通りにしています。
なお、必ずしも間違いではありませんが、読みやすくするために修正したものもあります。また、脱稿後に変化があった技術情報も追加しています。

間違いのほとんどは、文字通りご精読、ご愛読くださった読者のみなさんによって発見されたものです。
いずれの方も、丁寧に読んでくださった上に、やさしい言葉でご指摘くださり、激励の言葉までいただき、
電子メール画面が涙でにじむこともしばしばありました。何人かの方とは電子メールのやりとりが始まって、
奥付に電子メール アドレスを載せておいてよかったです。本当にみなさんありがとうございました。今後もよろしくお願いいたします(っておい)。

ご質問、ご意見は Chihiro.Fukazawa@bowneglobal.co.jp までどうぞ。

凡例 ●ページ数、出現個所

★編集者様へのコメント

●p42 ▼2001/11/11 新着バグ
×みんな大目に払って
○みんな多めに払って

●p48 ■2008/1/5 新着バグ
× 3.141592650 および 3.1415926050(2回)
○ 3.14159265

●p50 ▼2001/11/11 新着バグ
×攻撃する日時はどこですか
○攻撃する日時はいつですか

●p61
★掛け網部分
×
  条件文2が偽のときに実行される命令1;
  条件文2が偽のときに実行される命令2;
○
  条件文2が真のときに実行される命令1;
  条件文2が真のときに実行される命令2;

●p70 ▲2001/3/26 新着バグ
★掛け網部分の2個目
×
aaa
aaaa
aaab
aaaaa
aaaab
○
aaa
aaaa
aaaaa
aaaab
aaab

●p76〜89
★プログラム名 power および変数 $power を、それぞれ factorial および $factorial としてください。
 階乗という意味で power という言葉を使っていますが、これは正しくは factorial です。
 power はべき乗という意味です。

●p104
×
$tmp = $a;
$b = $a;
$b = $tmp
○
$tmp = $a;
$a = $b;
$b = $tmp

●p107 ▼2001/11/11 新着バグ
×10 個の数字が入ります。
○11 個の数字が入ります。

●p118 ■2008/1/5 新着バグ
★掛け網部分
×% test love kiss および % test love kiss hug
○% argtest love kiss および % test love kiss hug

●p120〜122 ▼2001/11/11 新着バグ
×helon
○heron

●p136 ▼2001/11/11 新着バグ
×出力を終えるには EOF
○入力を終えるには EOF

●p150 ▼2001/11/11 新着バグ
×びっしり埋まった数
○びっしり埋まった文字列

●p177 ▼2001/11/11 新着バグ
×translitarate
○transliterate

●p182 ▼2001/11/11 新着バグ
×2番目の非数字に囲まれた2桁以下の数字を月名と判断する
○2番目の非数字に囲まれた2桁以下の数字を日付と判断する

●p194 ▼2001/11/11 新着バグ
×% rep フィルター名 変換前のファイルの拡張子 変換前のファイルの拡張子
○% rep フィルター名 変換前のファイルの拡張子 変換後のファイルの拡張子

●p197(メモの表組み) ▼2001/11/11 新着バグ
× . 1文字の文字列
○ ? 任意の1文字

●p240 ▲2001/05/06 新着バグ
★「■dbmデータベースとハッシュを結び付ける」の前に、次のメモを挿入してください。

メモ
ここでは dbmopen('kudamono_db') の実行によって
kudamono_db.pag、kudamono_db.dir という2個の物理ファイルができて、
これをアクセスしますが、Perl のインストール環境によっては、
kudamono_db.db という拡張子が「db」のファイルがただひとつできる場合もあります。

●p251〜253 ▼2001/11/11 新着バグ
×do you want to sell it with the price
○do you want to sell it at the price

●p264
★末尾から2行目「CGI プログラムは普通 nobody という誰でもないユーザーが実行するようになっています。」の後に
次のメモを入れてください。

メモ
Perlスクリプトの場合は、実行権でなく読み込み権も全員に必要ですので注意してください(755、rwxr-xr-x の状態)。
これは、Perlがスクリプトを読み込んで実行するからです。
なお、Web サーバーの設定によっては、user のみに読み込み/実行権がある状態(700、rwx------)、
user と other のみに読み込み/実行権がある状態(705、rwx---r-x)でも動作する場合があります。
サーバーの設定を調べて、可能な限り少ない権限を与えるようにしてください。
パーミッションについてくわしくは、CGI の専門書を参照してください。

●p273
★先頭、「以上で、掲示板プログラムを終わります。」の前

メモ
Web サーバーの設定によっては、全員に書き込み権を与えないで、user のみに書き込み権がある場合や、
user と other のみに書き込み権がある場合でも、CGI によって書き込みが可能な場合があります。
サーバーの設定を調べて、可能な限り少ない権限を与えるようにしてください。パーミッションについてくわしくは、
CGI の専門書を参照してください。

●p286
★「jcode.plを置いた正しいフルパスを指定してください。」のあとに次のメモを入れてください。

メモ
くわしく述べませんが、require は Perl の使用者によって共有されるライブラリが入っているパスを検索してくれます。単に
  require 'jcode.pl';
と書いても、共有ライブラリのディレクトリに jcode.pl が入っていれば、読み込まれる可能性があります。
共有ライブラリのディレクトリの一覧は、@INC という特別な配列変数に入っています。
なお、require されるファイル(この場合は jcode.pl)は、Perl プログラムを実行する人に対して
<太字>読み込み</太字>のパーミッションが必要です。これは require 命令によって読み込まれるからです。

●p286
★次の段落をまるごと入れ替えてください。

×まず注意して欲しいのは、jcode.plをCGIプログラムが置けるディレクトリ(たとえば /home/Hiroko/public_html/cgi-bin)に、
CGI プログラムとして認識される拡張子(たとえば「.cgi」で置く、ということです。これは CGI プログラム本体と同じです。

○まず、jcode.pl が Perl の共有ライブラリにない場合(「require 'jcode.pl';」で正しく読み込まれない場合)は、
適当なディレクトリに置く必要があります。ここでは「/home/Hiroko/public_html/cgi-bin」に置くことにします。

●p287
★後半のコード、網掛けの部分

×require 'jcode.cgi';
○require '/home/Hiroko/public_html/cgi-bin/jcode.pl';

●p287
★末尾

×まず、jcode.cgi(jcode.pl の拡張子を変えたもの)を require します。上の例では、hello.cgi と同じディレクトリに
保存しておきます。このとき、jcode.cgi も chmod a+x しておくのを忘れないでください。

○まず、jcode.pl を require します。上の例では、hello.cgi と同じディレクトリに保存しておきます。このとき、
jcode.pl も chmod a+r しておくのを忘れないでください。

●p288
★上の修正の直下に下のメモを入れてください。

メモ
Web サーバーの環境設定によっては、jcode.pl のパーミッションは全員に読み込み権がある状態(644、r--r--r--)でなく、
user のみにある状態(600、rw-----)や user と other のみにある状態(604、rw----r--)でも動作する場合があります。

●p326 MacPerl の画面
×long tome no see!
○long time no see!

●あとがき ▼2001/11/11 新着バグ
×who allowed my "moonwritting" kindly.
○who allowed my "moonwriting" kindly.

●奥付

に、この正誤表ページを加えてください。
「すP」サポートページ
 http://ajisai.sakura.ne.jp/~dindi/supi-/

(以上)