Perlプログラミングの楽しみ

C MAGAZINE連載

結城浩

目次

はじめに

この連載では、プログラミング言語Perlの楽しさを紹介していこうと思います。 プログラミング言語の面白さや便利さは、話を聞いているだけではなかなか理解できないものです。 実際に自分でプログラムを書いたり、読んだり、動かしたりするとき、とてもよく理解できます。 けれど、コンピュータに関する情報があふれている現在では、 自分で実際に体験する前に、いろんな人のいろんな意見が耳に入ってくるものです。 Perlについても肯定的な意見や否定的な意見が交わされています。 情報収集は大事なことですが、それが災いして「食わず嫌い」になってしまう可能性もあります。 この連載を通して、私は読者のあなたが実際にPerlを体験し、 その面白さを理解してもらいたいな、と願っています。

私がPerlにはじめて接したとき「C言語に比べて面倒そうだな」「何やっているかよくわからない」と とまどいを感じたのを覚えています。 でも、実際にPerlでプログラムを組んでいるうちに、そのとまどいは消えていき、 わくわくするような面白さに変わっていきました。 今、最初の入り口のところでやめなくてよかったなあ、とつくづく思うのです。 私は、読者のあなたにもその「とまどい→わくわく」を体験していただきたいのです。

「私には○○言語があるから新しくPerlなんて覚えなくてもいいや」という方もいるかもしれませんが、 そのような読者にも「でも、まあ、ちょっと試してみませんか」とお勧めしたいです。

以上が、この連載でやりたいなと思っていることです。 どうぞよろしくお願いします。

連載各回の紹介

第1回 2000年2月号「Perlの楽しみ」

Perlの全般的な紹介をし、同じ動作をする簡単なプログラムを複数の方法で書いています。

foreachの例を書いちゃったけれど、あれはwhileの方が適切だったかもしれませんね。

第2回 2000年3月号「大量のHTMLファイルの書き換え」

HTMLファイルのメールアドレスを書き換えるプログラムを少しずつ進化させていきます。

第3回 2000年4月号「テキスト処理の楽しみ」

テキスト中の文字列検索、grepの使い方、日本語を扱う注意点、重複文字の発見、 タグジャンプなどを題材として、Perlを使ったテキスト処理について考えます。

第4回 2000年5月号「ネットワーキングの楽しみ」

LWP::Simpleを使ったWebページの取得と、 Net::FTPを使ったWebページの更新を題材にして、簡単なネットワーク処理を楽しみます。

第5回 2000年6月号「CGIの楽しみ」

CGI.pmを使って簡単なCGIを作ってみましょう。例えば、以下のようなものです。

第6回 2000年7月号「PODの楽しみ」

Perlで使われる文書フォーマットPOD (Plain Old Document)について学んでみましょう。

第7回 2000年8月号「共同作業用CGIの楽しみ」

Webアプリケーションというものについて簡単に解説した後、 簡単なテキスト処理ツールをCGIに仕立てる流れを具体例を通して学びます。 また、インターネットの図書館「青空文庫」のために筆者が作成した 「文字チェッカー」の例をお話します。

誤りと訂正
C MAGAZINE 2000年8月号p.88

ftp< literal site chmod 766 chop.cgi
↓
ftp< literal site chmod 755 chop.cgi

第8回 2000年9月号「リファレンスの楽しみ」

Perlのオブジェクト指向を学んだり、 Perlで複雑なデータ構造を構築しようと思ったときに必要になる「リファレンス」について学びます。

第9回 2000年10月号「不思議なCGI、YukiWikiの楽しみ」

YukiWiki(結城ウィキィ)とは、 参加者が自由にページを追加・削除・編集できる不思議なWebページ群です。 Web掲示板とちょっと似ていますが、 Web掲示板が単にメッセージを追加するだけなのに対して、 YukiWikiは、Webページ全体を自由に変更することができます。

詳しくは以下のリンクをどうぞ。

第10回 2000年11月号「オブジェクト指向の楽しみ」

Perlのオブジェクト指向プログラミングについてお話します。 まず、リファレンスについて復習をした上で、 Perl5から導入されたオブジェクト指向の機能がどのように実現されているのかを学びます。 またそれにあわせて、Perlのデバッガの使い方や Data::Dumperモジュールにも触れます。 おまけとしてTkモジュールを使ってとっても簡単なGUIプログラムを作ります。

第11回 2000年12月号「XMLの楽しみ」

メタ文書の規格として現在注目を集めているXMLについて簡単に解説し、 PerlでXML文書を扱うためのモジュールXML::Parserについて解説します。

第12回 2001年1月号「リングCGIの楽しみ」

読者からのお便り

Perlは昨日初めて触りました

(読者から)


はじめまして.

社会人1年目の者です.
CとJavaの経験があり,Perlは昨日初めて触りました.
大量なhtmlの変更処理をしたくて,
ちょうど会社の定期購読しているCMAGAZINEを読んで勉強し始めました.
とてもおもしろいですね.
最初動いた時は,例題を写しただけにもかかわらず感動してしまいました.
と同時に,今までカリカリとテキストをいじってたりしていたのが,
とてももったいなく思いました.
もっと早くに興味を持っていれば・・・
でも,Cと似ている部分も多いので入りやすいです.
まだ正規表現とか$_とかはよく分かりませんが.

第1回から読み始めて,現在第5回を勉強中です.
これから毎月読んでいきますので,
こんなことまでできるのか,ということを教えて頂けたらと思います.
そしたら,もっとおもしろくなりそうです.

LWP::Simpleでプロキシを使うには?

(読者から)


LWP::Simpleでプロキシを使うにはどうしたらいいのでしょうか。

(結城から)


perldoc LWP::Simpleperldoc LWP::UserAgent
を読むと、プロキシサーバは環境変数で設定するようです。
http_proxy
という環境変数の値を、
http://proxy.sn.no:8001/
のように指定してみてください。

必須の本は?

(読者から)


Perlを学ぶのに必須の本を紹介してください。

(結城から)


「初心者」には少し難しいと思いますが、
ほんとうに実力をつけたいのであれば、
以下の本はあったほうがいいと思います。
--
青ラクダ本:Perl5の解説
『プログラミングPerl改訂版』(オライリー)ISBN4-900900-48-6
Larry Wall他著、近藤嘉雪訳

Perlでtelnetするには?

(読者から)


Perlでインタラクティブな処理たとえば、
Unixのtelnetコマンドを実行すると当然login:とかpasswd:とか聞いてきますが、
これにマッチするとログイン名やパスワードを答えるという処理をしたいんですが、
どうしたらいいんでしょうか。

(結城から)


perldoc -q telnetperldoc Net::Telnet
をごらんください。

「ー」の文字が入っているとエラーになるの?

(読者から)


結城浩様
「Perlプログラミングの楽しみ」が連載されはじめたので楽しく読ませていただいています。
試してみてわからないことがあります。

LIST1: HTMLファイル中の文字列を変換して別ファイルを作る  (file0.pl)
で

「結城浩のホームページ」の文字列を変換して別ファイルを作ろうとすると
何もできません。
「ー」の文字が入っているとエラーになるのでしょうか?

最近Perlに関心を持った初心者なので、単純なことかもしれませんが
教えていただけたらと思いメールしました。

(結城から)


結城浩です。
ご愛読ありがとうございます。

次回の[MP]でも触れますが、
シフトJISコードでは「ー」の2バイト目は [ になり、
正規表現のメタ文字と誤解してしまうのです。

    /\Qページ\E/

のように\Q...\Eでくくるか、
日本語対応したJPerlを使うのがよいでしょう。

Enjoy Perl!

リンク集

Perl関連ページ

結城浩のPerl関連ページ

定番モジュールやライブラリ

Perlで書かれているソフトたち

Perlで書いた結城のソフトたち

Perlに関連している人

POD以外のテキストファイル変換ツールなど

ソフトバンク

書籍

更新履歴

豊かな人生のための四つの法則