nDiki : Perl 5.005_03

2004年8月19日 (木)

Module::CoreList

Perl に標準バンドルされているモジュールが、どのバージョンで提供されるようになったかの情報をチェックすることのできるモジュール。

corelist というユーティリティが付属している。

チェックできるPerlバージョンの一覧

 corelist -v

 Modue::CoreList has info on the following perl versions:
 5.00307
 5.004
 5.00405
 5.005
 5.00503
 5.00504
 5.006
 5.006001
 5.006002
 5.007003
 5.008
 5.008001
 5.008002
 5.008003
 5.008004
 5.008005
 5.009
 5.009001

Perlにバンドルされている CGI モジュールのバージョン

 corelist -a CGI

 CGI  was first released with perl 5.004
   5.004      2.36
   5.00405    2.42
   5.005      2.42
   5.00503    2.46
   5.00504    2.46
   5.006      2.56
   5.006001   2.752
   5.006002   2.752
   5.007003   2.80
   5.008      2.81
   5.008001   3.00
   5.008002   3.00
   5.008003   3.01
   5.008004   3.04
   5.008005   3.05
   5.009      3.00
   5.009001   3.04

Perl 5.005_03 にバンドルされているモジュール

 perl -MModule::CoreList \
   -e 'print join("\n", map { "$_ $Module::CoreList::version{5.00503}{$_}" } sort keys %{$Module::CoreList::version{5.00503}})'

 AnyDBM_File
 AutoLoader
 AutoSplit 1.0303
 B
 B::Asmdata
 B::Assembler
 B::Bblock
 B::Bytecode
 B::C
 B::CC
 B::Debug
 B::Deparse 0.56
 B::Disassembler
 B::Lint
 B::Showlex
 B::Stackobj
 B::Terse
 B::Xref
 Benchmark
 CGI 2.46
 CGI::Apache 1.1
 CGI::Carp 1.13
 CGI::Cookie 1.06
 CGI::Fast 1.01
 CGI::Push 1.01
 CGI::Switch 0.06
 CPAN 1.48
 CPAN::FirstTime 1.36
 CPAN::Nox 1.00
 Carp
 Class::Struct
 Config
 Cwd 2.01
 DB_File 1.65
 Data::Dumper 2.101
 Devel::SelfStubber 1.01
 DirHandle
 Dumpvalue
 DynaLoader 1.03
 English
 Env
 Exporter
 ExtUtils::Command 1.01
 ExtUtils::Embed 1.2505
 ExtUtils::Install 1.28
 ExtUtils::Installed 0.02
 ExtUtils::Liblist 1.25
 ExtUtils::MM_OS2
 ExtUtils::MM_Unix 1.12602
 ExtUtils::MM_VMS
 ExtUtils::MM_Win32
 ExtUtils::MakeMaker 5.4302
 ExtUtils::Manifest 1.33
 ExtUtils::Mkbootstrap 1.14
 ExtUtils::Mksymlists 1.17
 ExtUtils::Packlist 0.03
 ExtUtils::XSSymSet 1.0
 ExtUtils::testlib 1.11
 Fatal 1.02
 Fcntl 1.03
 File::Basename 2.6
 File::CheckTree
 File::Compare 1.1001
 File::Copy 2.02
 File::DosGlob
 File::Find
 File::Path 1.0401
 File::Spec 0.6
 File::Spec::Mac 1.0
 File::Spec::OS2
 File::Spec::Unix
 File::Spec::VMS
 File::Spec::Win32
 File::stat
 FileCache
 FileHandle 2.00
 FindBin 1.42
 GDBM_File 1.00
 Getopt::Long 2.19
 Getopt::Std 1.01
 I18N::Collate
 IO
 IO::File 1.06021
 IO::Handle 1.1505
 IO::Pipe 1.0902
 IO::Seekable 1.06
 IO::Select 1.10
 IO::Socket 1.1603
 IPC::Msg 1.00
 IPC::Open2 1.01
 IPC::Open3 1.0103
 IPC::Semaphore 1.00
 IPC::SysV 1.03
 Math::BigFloat
 Math::BigInt
 Math::Complex 1.26
 Math::Trig 1
 NDBM_File 1.01
 Net::Ping 2.02
 Net::hostent
 Net::netent
 Net::protoent
 Net::servent
 O
 ODBM_File 1.00
 OS2::ExtAttr 0.01
 OS2::PrfDB 0.02
 OS2::Process 0.2
 OS2::REXX
 Opcode 1.04
 POSIX 1.02
 Pod::Functions
 Pod::Html 1.01
 Pod::Text 1.0203
 SDBM_File 1.00
 Safe 2.06
 Search::Dict
 SelectSaver
 SelfLoader 1.08
 Shell
 Socket 1.7
 Symbol 1.02
 Sys::Hostname
 Sys::Syslog
 Term::Cap
 Term::Complete
 Term::ReadLine
 Test 1.122
 Test::Harness 1.1602
 Text::Abbrev
 Text::ParseWords 3.1
 Text::Soundex
 Text::Tabs 96.121201
 Text::Wrap 98.112902
 Thread 1.0
 Thread::Queue
 Thread::Semaphore
 Thread::Signal
 Thread::Specific
 Tie::Array 1.00
 Tie::Handle
 Tie::Hash
 Tie::RefHash
 Tie::Scalar
 Tie::SubstrHash
 Time::Local
 Time::gmtime 1.01
 Time::localtime 1.01
 Time::tm
 UNIVERSAL
 User::grent
 User::pwent
 VMS::DCLsym 1.01
 VMS::Filespec
 VMS::Stdio 2.1
 attrs 1.0
 autouse 1.01
 base
 blib 1.00
 constant 1.00
 diagnostics
 fields 0.02
 integer
 less
 lib
 locale
 ops
 overload
 re 0.02
 sigtrap 1.02
 strict 1.01
 subs
 vars
 vmsish
スポンサード リンク
[ 8月19日全て ]

2004年9月1日 (水)

CGI::Session

Apache::Session 1.6 を使おうかと思ったら Windows XP + ActivePerl 5.6.1 だと make test が通らない。flock まわりの既知の問題らしい。

ということでやっぱり CGI::Session を使う事にする。 expire の処理などもこちらの方が良さそげ。

Perl 5.005_03CGI::Session

t/complex_ds.t、t/db_file.t、t/file.t でそれぞれ CGI::Session::File、CGI::Session::DB_FileCGI::Session::File の new メソッドが見つからなくて失敗する。 use base でうまく require されていない? それぞれ別途 use でロードするようにテストを修正すると通過。

ちょっと気持ち悪いが動くことは動く。

[ 9月1日全て ]

2004年11月10日 (水)

Perl 5.005_03 + Template Toolkit 2.14

www.naney.org の静的(+SSI)ページを、Template Toolkit で動的処理するように改良しようかなと思い立つ。 Apache だと、

 Action tt2 /cgi-bin/t2h
 AddHandler tt2 .html

で .html へのリクエストを全てCGI プログラムに渡す(でそのスクリプトがテンプレート処理をして返す)ようにできる(はず)。

で久しぶりに Template Toolkit をサーバにインストール。 … Makefile.PL が通らない。ちょっと修正して通るようにしても今度は make test が通らない。最新の Template Toolkit だと 5.005_03 じゃ駄目か。ドキュメントには 5.005 で OK と書いてあるんだけどな。 前のバージョンは動いたのに。

ということでいきなり頓挫。 あきらめ。

[ 11月10日全て ]

2005年3月13日 (日)

テスト。More。

WiKicker のテストスクリプトの作成には Perl 5.005_03 でも標準バンドルされている Test モジュールを使用している。 テストのためだけに追加のモジュールを要求するのも悪いかなと思って。

しかし Perl 5.6.2 以降にはすでに標準バンドルされている Test::More にそろそろ移行したい。

5.005_03 で WiKicker を使っている人も少ないようだし WiKicker 0.25 からは Test::More を PREREQ_PM に追加することにしよう。 Test モジュールと Test::More モジュールは互換性がないので、順次テストスクリプトを修正していく予定。

[ 3月13日全て ]

2005年10月29日 (土)

他の Web サイトの情報を URI::Fetchキャッシュ付き取得

WiKickerDiKicker でうまく他のサイトの情報を取り込んで利用できるようにしたい。 相手サイト・自サイトともに負荷をかけないように処理するには、うまくキャッシングする必要がある。

キャッシュ機能のあるPerlHTTPユーザエージェントには

などがある。

WWW::Mechanize::Cached 1.32

WWW::Mechanize::Cached は1度取得したレスポンスを無条件に1日間キャッシュする。 WWW::Mechanize のサブクラスで、便利な機能が利用できるが、キャッシュは適当。

キャッシュCache::FileCache決め打ち。

LWP::UserAgent::WithCache 0.03

LWP::UserAgentのサブクラス。 Expires、Last-Modified、Etag ヘッダを考慮して処理する。

キャッシュCache::FileCache決め打ち。

URI::Fetch 0.04

fetch サブルーチンのみを提供するシンプルなモジュール。

キャッシュは Cache 系APIのモジュールを指定する。実際には Cache::Cache 系でもOK。 Last-Modified、Etag を考慮して処理する。

前回のアクセスから一定時間はキャッシュを返すようにする機能があり、RSS や Atom フィードを取得して利用するのに便利。

今回は

URI::Fetch をチョイス。 our を使っているのでそのままでは Perl 5.005_03 では動かないが、use vars に書き換えれば問題なく動く。

[ 10月29日全て ]

2005年11月13日 (日)

専用サーバに移りたい

そろそろ www.naney.org専用サーバに移したいな。 今の共有サーバも悪くはないのだが、Perl5.005_03 というのが痛い。 自分のホームディレクトリでビルドして使うこともできなくはないのだが、それにはちょっとディスク容量が少なすぎる。

昨日思い立ってちょっと調べてみたが Debian GNU/Linux が選択できる専用サーバとなると、今だとやっぱりメジャーどころのさくらインターネットの専用サーバか。 ベーシック Athlon64 モデル (Athlon64 3200+ / 1GB / 120GB) + 10Mスタンダード回線 + Debian 3.1 で 初期費用 73,290円 + 月 10,290円。

初期費用が財布に優しくないな。

あとはドメインのレジストラ・トランスファとDNS変更がスムーズにいくかが不安。 メールが届かなくなる期間があるとやっぱり困るからなぁ。 要手順調査。

[ 11月13日全て ]

2006年2月10日 (金)

WiKickerMakefile.PLModule::Install ベースに

WiKicker には依存している Perl モジュールとして、必須なものとオプションなものがある。 必須なものは例えば Log::Log4perl など。 一方 Cache::MemcachedHTML::Scrubber などは、追加機能を使用したい場合のみ必要である。

一般的な Perl モジュールパッケージと同様、WiKicker では Makefile.PLExtUtils::MakeMaker を使っている。 必須な依存 Perl モジュールは PREREQ_PM に指定してあるが、オプションのものについては独自にチェックして警告をするにとどめていた。 しかしこれだと、オプションのものは CPAN.pm を使って自動的にインストールすることができない。

ということで検討した結果、Module::Install を用いることにした。 Module::Install を用いて Makefile.PL を作成すると、

などの機能が使えるようになる。

Module::Install の実行に必要なファイルはパッケージの inc ディレクトリ以下に自動的にコピーされ配布パッケージに含められるので、インストールする側はそのために余分なインストールを強いられることもない。

最終的に内部で ExtUtils::MakeMaker を使っているので、それの機能はほぼ全て使える。

Perl のバージョンも 5.004 から使えるとのことで、Perl 5.005_03 以上を対象としている WiKicker で使っても問題なし。

ということで、Makefile.PL をさらっと書き換え。

合わせて WiKicker に含まれていた実験的な機能を削除して、(オプションな)依存モジュールも減らすことにした。

次回のリリース版から、Module::Install ベースだ。

[ 2月10日全て ]

2006年3月2日 (木)

FreeBSDApache::Htpasswd

WiKicker認証ドライバの1つとして、まずは Apachehtpasswd パスワードファイル(AuthUserFile ディレクティブ用パスワードファイル)形式のものを作成することにする。 これなら htpasswd で作成することができるので、最悪最初の段階では WiKicker に登録・削除機能を入れないで済む。

Perl からこのパスワードファイルを扱うモジュールとしては Apache::Htpasswd や、Authen::Htpasswd がある。 CPAN にある CGI-Application-Plugin-Authentication は前者を、Catalyst-Plugin-Authentication-Store-Htpasswd では後者を使用している。

機能的にはほぼ同じか。 Authen::Htpasswd の方がユーザ名に対応するオブジェクトを取得するメソッドがあり便利といえば便利だが、まあなくても困らないだろう。

ということで今回は、依存モジュールの少ない Apache::Htpasswd を選択した。 Perl 5.005_03 にはない warnings プラグマが使われているが、Htpasswd.pm の

 use warnings;

1行を削除すれば問題無し。

FreeBSD 4.4-RELEASE #3 + Perl 5.005_03 + Apache-Htpasswd 1.7 だと、crypt 関連のテストケースが失敗する(not ok 17)のがちょっと気になるところ。 MD5 ベースのパスワードの読み書きは問題ないので、この環境ではこちらを使うことにしよう。

[ 3月2日全て ]

2006年4月29日 (土)

最新の Module::InstallPerl 5.005_03 ステ?

ゴールデンウィークに突入。 9連休を利用して、一気に WiKicker コーディングを企んでいる。

さっそくちょこちょこ修正してパッケージングし、www.naney.orgインストール。 …… Perl Makefile.PL でコケる。

どうも use inc::Module::Install; でエラーを起してしまっているようだ。 Makefile.PL は変更していないので、そうすると Module::Install の問題っぽい。

tarball をパッケージングするホスト側の Module::Install を 0.57 まで落としたところ、Perl 5.005_03 でも通るようになった。

Module::Install is a package for writing installers for CPAN (or CPAN-like) distributions that are clean, simple, minimalist, act in a strictly correct manner with both the ExtUtils::MakeMaker and Module::Build build systems, and will run on any Perl installation version 5.004 or newer. (Module::Install 0.61 より)

とあるように古い Perl もサポートにも気を払っているのが気にいって ExtUtils::MakeMaker から移行しただけにちょっと残念。

今後また 5.005_03 でも動くようになるのか、それとも捨てられるのか要チェック。

[ 4月29日全て ]

2006年7月8日 (土)

Perl 5.8.8CGI.pmPATH_INFO 処理の問題にぶつかる

手元の WiKicker (や DiKicker) で、「C++」という文字列を含む URI にアクセスしたらエラー

 Nested quantifiers in regex; marked by <-- HERE in m//C++ <-- HERE .html$/ at (eval 27) line 7.

正規表現の一部として使う時には \Q...\E していたと思ったが抜けがあったか。 とコードをチェックしてみたが、それっぽいところなし。 そもそも、Perl 5.005_03 だと問題おきていないし。

確認したら CGI.pm の url() の中でのエラーだった。 quotemeta されていない。

Perl 5.8.8 に含まれている CGI.pm 3.15 で問題を確認。3.17 までは駄目で、3.19 以降だと \Q...\E するように修正されている (3.18 は CPAN にないので不明)。

標準 Perl ライブラリバグを踏んだか……。 標準 Perl ライブラリアップグレードはなにかと面倒なので、システム要件にはしたくはないんだよねぇ。

[ 7月8日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 1.350726s / load averages: 0.77, 0.69, 0.67
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker