本ブログで、正誤表について過去2回お送りしてきました。正誤表は、これまで技術評論社さんのサイトと、本ブログと両方に掲載されていましたが、今後は本ブログのみとなり、技術評論社さんのサイトにはリンクが掲載されることとなりましたので、このブログ エントリーに正誤情報をまとめます。今後何らかの情報が追加されたら(ないことを願っていますが!)このエントリーに追記しますので、今後はこちらをご参照ください。お手数をお掛けし、誠に申し訳ありませんが、どうぞよろしくお願いします。
技術的背景を加えた詳しいバージョンは以下のブログ エントリーをごらんください。
Opus 2:正誤表の解説 : 『かんたんPerl倶楽部』
(誤)
(正)
p.160 サンプル プログラムmonth12.pl(再掲)中
(誤)
(正)
(誤)
(正)
(誤)
(正)
p.492 サンプル プログラムremoveParen.pl中
p.592 サンプル プログラムremoveTeam.pl中
p.514 サンプル プログラムsortNameReading.pl中
p.561 サンプル プログラムsortNameReading.pl(再掲)中
(誤)
技術的背景を加えた詳しいバージョンは以下のブログ エントリーをごらんください。
Opus 7:正誤表(2)第3章練習問題2について : 『かんたんPerl倶楽部』
(誤)
(正)
※文字列の末尾、引用符の前に半角空白を加えます。
p.226 コメント中
(誤)
(正)
※$yearが400で割った余りがゼロでないとき、真偽値コンテキストで真になることを利用しています。
紙書籍初版 第1刷正誤表(電子書籍版では修整済み)
以下の通りです。技術的背景を加えた詳しいバージョンは以下のブログ エントリーをごらんください。
Opus 2:正誤表の解説 : 『かんたんPerl倶楽部』
表記の間違い
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 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");
use strict;
use warnings;
my @month = (undef, "January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December");
足りない文
p.563 サンプル プログラムtrName.pl中(誤)
use 5.010;
use strict;
use warnings;
use utf8;
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)";
}
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指定します。
そして、標準出力(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指定します。
一方、標準出力(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)";
}
(正)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)";
}
if ($^O eq "MSWin32") {
binmode STDOUT, ":encoding(Shift_JIS)";
} else {
binmode STDOUT, ":encoding(UTF-8)";
}
part 2: 紙書籍初版 第1刷および2016-01-16版電子書籍正誤表
上記part 1に加えて以下の通りです。
コードの間違い
Opus 7:正誤表(2)第3章練習問題2について : 『かんたんPerl倶楽部』
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 ";
※文字列の末尾、引用符の前に半角空白を加えます。
コードの間違い
(誤)
$year % 400 == 0 or die "$year年は閏年です!";
(正)
$year % 400 or die "$year年は閏年です!";
※$yearが400で割った余りがゼロでないとき、真偽値コンテキストで真になることを利用しています。
(以上)