さいきんTwitterで Chihiro Fukazawa (@query1000)に声を掛けてくれる読者の方が多い。
うれしいことである。
今のところ全然余裕があるので、どしどし声を掛けてください。
ところで、質問を受けた。
一応答えたのだが、140字では限界があるし、ある程度普遍性のある疑問であると思われるので、ここでも答えておく。
Q:「すぐわかるオブジェクト指向Perl」を買いましたが、Perlの基本的な使い方が分からないので「すぐわかるPerl」も買いました。しかし「すぐわかるPerl」はUNIXベースで、ぼくはWindowsを使っています。まずLinuxを使うところから勉強した方がいいでしょうか。
ということで、非常にありがたいメールである。
2冊も買っていただいてありがとうございます。
どちらも役立つといいなあと思います。
■なぜこのような問題が発生したか
これは出版時期の問題もあるが、「すぐわかるPerl」の頃はPerlを使うような人はまずUNIXユーザー、という偏見がぼくの中にあった。
Windowsのサーバー機能はまだまだで、ちょっと大きいコンピューター会社には必ずUNIXマシンがあった。
そこで、UNIXマシンの存在を前提に「すぐわかるPerl」を書いてもいいだろうと思っていた。
それから、Windowsがサーバーの世界にもノしてきて、Windowsマシンしかない大企業というのも増えてきた。
また、Perlの用途も増えてきて、Windowsしか使えない環境でも結構Perlを使えるようになってきた。
ぼくの2冊目の本「文字コード超研究」でも、3冊目「すぐわかるオブジェクト指向Perl」でも、最初からWindowsベースの学習を前提にしている。
どうしようもなくライトユーザーはWindowsユーザーだから、このままの記述で問題なく学習できるだろう。
一方、UNIXユーザーがWindows向けに書いてある本を読んで勉強することはカンタンだろう、という判断だ。
この判断は正しいらしく、ネット書評でも「すぐわかるPerlはUNIXベースだから最初ちょっとつまづく」という評判は多いが、それ以降の本はそれほどそういう評判はない。
この問題は他の本にも発生していて、Randelの有名な「初めてのPerl」もUNIX版とWindows版がある。
ぼくもそのうち時間が出来たら、「すぐわかる」をWindows用にリニューワルしようと思う。
■ではどうやって解決するか
以下の方法があると思う。
大変な順に書く。
(1)Linuxマシンを用意する
質問をくれた方が考えている方法だが、これが一番硬派というか正統派であろう。
Linuxをインストールして動かすところまで持っていった経験は、必ず他でも役に立つので、是非がんばっていただきたい。
ディストリビューションはUbuntu、Debian、KNOPPIXといったところがオススメ。
ただし、結構大変であるので、Perlの最初の一行を書くまでに3~4日掛かってしまうという事態になりかねない。
(2)Macを用意する
「すぐわかる」を書いた頃はギリClassic環境で、非常に無理をしてMacPerlの使い方なども付録に書いているが、現在動いている Mac OS Xは完全なUNIXであり、サーバーとしてこれを使う本も数多く出版されている。
この用途のためにMacを買うのは結構大変だが、手元にMacがある場合はこれを使ってもよいと思う。
(3)会社や学校のサーバーを使う
実はぼくが最初に意図した読者像はこういう人であった。
会社や学校にUNIXサーバーがあり、それを使えるのであれば、これを使えば手軽に勉強できる。
管理者との付き合い方なんて書いているのはこの用途のためであった。
(4)レンタルサーバーを使う
これも実用的。
なんだかんだ言ってPerlを勉強するのはWeb掲示板のようなCGIプログラムをいじることが多いだろう。
このためにレンタルサーバーを借りれば、「すぐわかる」シリーズ2冊ぐらいの実験であれば楽勝でできる。
この場合、telnetやSSHなど、端末インターフェイスでプログラムを動かす自由のあるサーバーを借りる必要がある。
サーバーによって出来る出来ないがあってややこしい。
ぼくは「さくらのインターネット」を使っている。
(5)Cygwinを使う
CygwinとはWindows用のなんちゃってUNIX環境である。
UNIXの勉強をしたいがマシンを別に用意するまではいかない人や、逆にふだんUNIXをバリバリ使っていてWindowsをUNIX風に使いこなしたい人にオススメ。
これを使えばたいていのことはできる。
ただし、一部の実験は出来ない。
「本来UNIXのサーバーを使えばできたのだが、Cygwinだとできない」ということを見きわめるのも勉強である。
Cygwin で出来ない部分を飛ばして進んでも、Perlの基礎知識は十分身に付く。
実はぼくは「すぐわかる」を書くときは(3)(4)(5)の混成で行った。
(6)Windows用Perlを使う
これが最も望まれるソリューションであり、「すぐわかる」でもActivePerlの使用を推奨している。
「すぐわかる」の方のActivePerlの使い方は大分古いので、「オブジェクト指向」の方の使い方を参考にすればよい。
具体的に言うと、
((1))「すぐわかるオブジェクト指向Perl」の付録を読む
((2))「すぐわかるオブジェクト指向Perl」の第1章を学習する
((3))「すぐわかるPerl」を学習する
という順番で勉強するのがスムーズであろう。
ただし、これだと出来ないことがかなりある。
多くのものは無視すればいいのだが、ファイルの入力リダイレクションができないのが困りモノ。
#! perl
# filePrint.pl -- ファイルを読んで書く
while (<STDIN>) {
print;
}
というプログラムがあるとき
C:\> filePrint.pl < aaa.txt
というのが使えないのだ。この場合は
C:\> perl filePrint.pl < aaa.txt
という風にperl.exeを明示的に書いて行うか、プログラムでSTDINを使わずに
#! perl
# filePrint.pl -- ファイルを読んで書く
while (<>) {
print;
}
とダイアモンド演算子 <> を使って書いて
C:\> filePrint.pl aaa.txt
と言う風に入力リダイレクション < を使わずにファイル名を引数で渡せばよい。
(このへんで何を書いているかは「すぐわかる」を読めばわかると思う)
★
なお、Windows用PerlといえばActive Perlであったが、最近Strawberry Perlというのが出来ている。
実用には歴史の長いActivePerlを使った方がよく、よってActivePerlの使い方を学ぶ価値は十分あるが、Strawberry Perlは学習用にはすぐれていると思われる。
理由は、GNUのCコンパイル環境が入っていて、CPANのモジュールなどを直接導入できるので、最新のモジュールが使えるからである。
ActivePerlはこの点、誰かがモジュールをコンパイルしてPPMという形式にしてネットにあげてくれるのを待つか、コンパイルするためにMicrosoft Visual C++を買わなければならなかったりして結構大変である。
Strawberry Perlの使い方は、ぼくもこのブログで結構苦労してやっているので、過去ログを検索してみてほしい。
以上。ガンバッテ!
テーマ : 雑記 - ジャンル : その他