『かんたんPerl倶楽部』

技術評論社から発刊された拙著『かんたんPerl』のサポート ブログです。本書への質問、本書に載せきれなかったテクニック、セミナーなどの情報(予定)などを載せていきます。※正誤表の情報はこちらをご覧ください。

2016年01月

 本ブログで、正誤表について過去2回お送りしてきました。正誤表は、これまで技術評論社さんのサイトと、本ブログと両方に掲載されていましたが、今後は本ブログのみとなり、技術評論社さんのサイトにはリンクが掲載されることとなりましたので、このブログ エントリーに正誤情報をまとめます。今後何らかの情報が追加されたら(ないことを願っていますが!)このエントリーに追記しますので、今後はこちらをご参照ください。お手数をお掛けし、誠に申し訳ありませんが、どうぞよろしくお願いします。

紙書籍初版 第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 5.010;
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 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)";
}

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 ";

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

(以上)

 sironekotoroさんという方が、拙著『かんたんPerl』(以降本書と呼びます)をご購入の上、学習日記を公開してくださっています。ありがとうございます。
 で、その中の記事で、第3章の練習問題2が間違っているのではないだろうか。それも問題文に誤りがあるのではないか、というご指摘がありました。

かんたんPerl 第2章〜第3章 - sironekotoroの日記

 内容を確認したところ、たしかに本が間違っていたので、sironekotoroさんにご連絡し、ブログの紹介をご快諾いただきましたので、ここにご紹介すると共に、本書の内容を訂正してお詫びします。

Pearl-variety hg
続きを読む

 今回から、ブログ6つめのカテゴリーとして「Perl 6事始め」というのを始めてみようと思います。本ブログはもともと拙著『かんたんPerl』を楽しく読んでいただくためのブログで、『かんP』(以下本書をこう呼びます。かんぴーと読む)はPerl 5のための本で、Perl 5Perl 6は親を同じとする姉妹言語で、別の言語だよと、何回も言っているところではあるんですが、そうは言ってもPerl 5に興味がある人は、Perl 6にも興味を持っていて、それはぼくも同じですから、本ブログでもPerl 6の入門を行って、見聞を広め、楽しい時間を過ごそうと思います。どうぞお付き合いください。
 
 さて、今回はMacでPerl 6の環境づくりを行い、こんにちはーと言うところまでをやろうと思います。Mac OS Xを入れたて状態の場合、以下のような手順になります。

* Homebrewをインストールする(Xcode command line toolsをインストールする)
* rakudo-starをインストールする

Homebrewをインストールする

 Homebrewというのは、英語としては「家で醸造した(ビールなどの)お酒」という意味ですが、ここでは有名なMac用の「パッケージ マネージャー」の名前です。パッケージ マネージャーとは、ソフトウェアをインストールするときに使うものです。
 MacはOS Xの皮を被ったBSDというUNIXの一種ですから、コマンドライン シェルを使ってバンバンmakeコマンドを打って、好きなフリー ソフトウェアを入れることも出来ます。でも、フリー ソフトウェアはたいてい他のソフトウェア(ライブラリー)を使用している(依存している)ので、必要なライブラリーを順番にインストールしていかないと動きません。いろんなソフトウェアを入れていると、そのうち、どのライブラリーを自分が入れているのか、正しく最新版が入っているのか、だんだん管理できなくなってきます。
 そこで、手動でインストールする代わりに、ワンクッション置いて、パッケージ マネージャーを使います。パッケージ マネージャーは、いま使っているマシンにどのようなライブラリーが入っているか管理してくれるので、必要なパッケージを順序良くインストールしたり、アップデートしたりしてくれます。Ubuntu Linuxではapptitude、FreeBSDではpkgなどのパッケージ マネージャーを使いますが、MacではHomebrewを使う、というわけです。
 Macのパッケージ マネージャーは他にMacPortsというのもあります。この2つは両方使わず、どっちか使うほうがいいそうです。ぼくはなんとなくブログ記事とかが多いような気がするHomebrewを使ってみます。
 
 Homebrewは以下のサイトからインストールします。

Homebrew — OS X 用パッケージマネージャー

 ここに、以下のようなコマンドラインが書かれています。
ruby -e "$(curl -fsSL https://?????.example.com/Homebrew/install/master/install)"
 (「?????.example.com」は、上の公式サイトでは正しいサイト名が入っています。)
 rubyコマンドと、curlコマンドを使っています。どちらも、ぼくが使っているOS X(Yosemite 10.11.2)には標準で入っていました。ということで、Homebrewのインストールは、以下の手順になります。

1) ブラウザーで「Homebrew インストール」と検索する
2) 「Homebrew―OS X用パッケージマネージャー」というサイトが検索されるのでジャンプする
3) 上記のコマンドをクリックして選択する
4) ⌘+Cを押してコピー
5) ターミナル(コマンドライン シェル)を起動する
6) ⌘+Vを押してペースト

 この状態でこうなっています。

49

 ここでreturnキーを押すとインストーラーが開始します。

 さて、Homebrewをインストールするためには、「Xcode Command Line Tools」という、Appleから供給されている開発者用のツールが別途必要になります。これがインストールされていないMacの場合、「Xcode Command Line Tools」が必要ですけどインストールしますか、的なことを言われます。
35
 「インストール」をクリックすると「使用許諾契約」が表示されるので、「同意する」をクリックし(他に選択肢はない!)「Xcode Command Line Tools」をインストールします。数分かかります。
 「ソフトウェアがインストールされました」と表示されるので「完了」をクリックします。

 「/usr/local」ディレクトリが書き込み可能になりますけどいいですか、等々言われていますが承諾し、returnキーを押します。
12
 Macの管理者パスワードを求められますので、入力してreturnキーを押します。
15
 ほどなく、Homebrewのインストールが終わります。
15
 なお、ずっと前に別の用事でHomebrewを入れていた場合は「$ **brew update**」と打ってHomebrewのパッケージ情報を更新しておきます。

rakudo-starをインストールする

 rakudo-star(正式名称は「Rakudo *」)は、Perl 6のコンパイラーであるRakudoや、それを実行する仮想マシンであるMoarVMを含むPerl 6のディストリビューションということらしいです。Homebrewのコマンド「brew」を使って、

$ brew install rakudo-star

でRakudo *をインストールします。

 マシンが数分いろいろがちゃがちゃ作業します。
15
 プロンプトが帰ってきたら、インストールが終わったか調査します。まず、-vオプションを使ってバージョン番号を調べます。

$ perl6 -v
This is perl6 version 2015.11 build on MoarVM version 2015.11

 Perl 5の「perl -v」に比べてずいぶんシンプルですね。

 では使ってみます。
 Perl6 は「$ **perl6**」とだけ打って改行すると、プロンプトが「>」に変わります。このとき、Perl 6の対話環境が起動していて、1行だけのプログラムをいろいろ打って遊ぶことが出来ます。
 では、さっそくハロー ワールドを打ってみましょう。

$ **perl6**
> **"Hello world".say**
Hello world
>

 できたー。
 早速オブジェクト指向で書いてみましたけど、むろん、従来の関数指向で打つことも可能です。

> **say "Hello world in an old way"**
Hello world in an old way
>

 今日のところはここまでにいたしとうございます。
 Ctrl+Cで脱出します。
18
 ということで、次回からはもっと実のあることをして遊びます。
 それにしても、ワクワクしますね! 新しい言語を身につけるというだけでもワクワクするのですが、新しい、いままさに産声をあげた言語を学ぶ、その機会に立ち会えるというのは本当にワクワクします。



↑このページのトップヘ