C & Perlで学ぶ「CGIレッスン」

  http://www.hyuki.com/cmcgi/

Perl マルチタスクモジュール

- POE
  http://search.cpan.org/~rcaputo/POE-0.27/POE.pm

Perl で robots.txt を解析するモジュール

- WWW::RobotRules
  http://search.cpan.org/~gaas/libwww-perl-5.75/lib/WWW/RobotRules.pm

- libwww-perl の 5.48 以降に含まれているらしい
  http://search.cpan.org/~gaas/libwww-perl-5.75/

Perl モジュールの作り方

- (貧乏な人のための) Perl モジュールの作り方
  http://www.torus.jp/memo/x200311/PerlModule.rd.html

- モジュールの作り方
  http://bulknews.net/lib/slides/perl-ruby-con2000/

- perltoot - トムによるPerlオブジェクト指向チュートリアル
  http://perldoc.jp/docs/perl/5.8.0/perltoot.pod

- ExtUtils::MakeMaker
  http://www.perldoc.com/perl5.6.1/lib/ExtUtils/MakeMaker.html

- Test::Tutorial
  http://search.cpan.org/author/MSCHWERN/Test-Simple-0.47/lib/Test/Tutorial. ...

Perl データマンジング ― データ加工のテクニック集

  4894715589
  http://www.amazon.co.jp/o/ASIN/4894715589/todaysnonsenc-22/ref=nosim/
  デイビッド クロス (著), David Cross (原著), 宮川 達彦 (翻訳)
  ピアソンエデュケーション
  ISBN: 4894715589
  3,200 円
  2003/01

qq(),q(),qx()

qq(hoge): "hoge"
q(hoge) : 'hoge'
qx(hoge): `hoge`

Perl でベンチマーク

Benchmark パッケージの timethese でベンチマークが取れる.

#!/usr/env/bin perl

use Benchmark;

$count = 1000;

timethese($count, {
    '$a = $a . "a"' => sub {
                           for ($i = 0; $i < 100; $i++) {
                               $a = $a . "a"
                           }
                       },
    '$a .= "a"    ' => sub {
                           for ($i = 0; $i < 100; $i++) {
                               $a .= "a"
                           }
                       },
});


出力

Benchmark: timing 10000 iterations of $a .= "a"    , $a = $a . "a"...
$a .= "a"    :  0 wallclock secs ( 0.17 usr +  0.00 sys =  0.17 CPU) @ 5882.35/s (n=1000)
$a = $a . "a": 85 wallclock secs (84.41 usr +  0.01 sys = 84.42 CPU) @ 11.85/s (n=1000)

・・・$a = $a . "a" はめたくそに遅い.

回数が少なすぎると

(warning: too few iterations for a reliable count)

と warning が出る

Perl でファイルの行数を数える

$. が最後に入力したファイルハンドルの行数を格納している
ファイルハンドルを最後まで読み込み,$. を参照すると OK.

#!/usr/bin/env perl

open(FILE, 'hoge') or die;
print <FILE>;   # ファイル内容を出力する場合
# 1 for <FILE>; # ファイル内容を出力しない場合
print $. . '行\n';
close(FILE);

Jcode.pm を Windows 2000 でコンパイルする

  http://homepage2.nifty.com/hobbit/html/jcode.html

- Perl 5.8 の場合は以下のものでいける
  http://homepage2.nifty.com/hobbit/html/jcwin8-0.83.zip

Perl の正規表現

  http://www.rfs.jp/sitebuilder/perl/02/09.html