nDiki : Perl v5.6.0
Perl v5.6.0
2000年3月22日リリース。
warnings プラグマや our などが追加された。
また v1.2.3.4 形式のリテラルが使えるようになった。
約1年後の、2001年4月8日に Perl v5.6.1 がリリースされた。
スポンサード リンク
Related term
2003年12月23日 (火)
■ Time::Local::gmtime の範囲チェック

Perl v5.8.x だと、Time::Local::gmtime できちんと範囲チェックが動作している(範囲外だと croak される)のだが、Perl 5.005_03 では必ずしもそうではないようだ。 WiKicker のデバッグ中に発見。
でソースを読んでみると、古い Time::Local では cheat サブルーチンで
- 範囲チェック
- 指定した年月の開始 gmtime を計算し、%cheat にキャッシュ
している。同一年月での2度目以降 timegm 呼び出しでは %cheat キャッシュを使用して cheat サブルーチンを呼びにいかないので、範囲チェックが実行されないという塩梅。 つまり 2003年1月1日… で一度 timegm を呼び出すと2003年1月に関しては以降 cheat サブルーチンは呼ばれないため、次に 2003年1月33日…で読んでもエラーにしてくれないというわけ(最初に2003年1月33日…で呼んだ場合はちゃんとエラーになるので逆に厄介)。
Perl v5.8.0 以降に標準ではいっている Time::Local ではきちんと毎回チェックする。 うるう年・大の月/小の月も考慮してチェックされる(v5.8.0 より前のでは 31 より大きいかのチェックのみ)。
- Perl 5.005_03 -> Time::Localバージョン情報なし
- Perl v5.6.0 -> Time::Localバージョン情報なし
- Perl v5.6.1 -> Time::Localバージョン情報なし
- Perl v5.8.0 -> Time::Local VERSION 1.04
であり、CPAN では 5.005_03 でも動作する Time::Local パッケージ (1.05~)が公開されている。
Time::Local 1.04 以降を PREREQ_PM にしてもいいのだが、5.005_03 な利用者にとってはインストールするのも面倒か。 最低限のエラーチェックを自前で用意して、互換になるようにした方がいいかな。
- 最新の Module::Install は Perl 5.005_03 ステ? (2006-04-29)
- [ Perl ] Memcached を使ってみる (2004-01-12)
- WiKicker の Makefile.PL を Module::Inst... (2006-02-10)
- [ WiKicker ] SunOS 5.6 にインストール (2003-04-23)
- Perl v5.8.8 の CGI.pm の PATH_INFO 処理の問... (2006-07-08)
2004年7月31日 (土)
■ Cache::Memcached 1.14 の Perl 5.005_03 対応

1.14 が 7月27日にリリースされていたのでパッチ作成。 1.13 用のパッチがあたったのでそのままいけるかなと思ったが、テストしたところまたいくつかの非互換コードが増えていたのでそれらの修正を行う。
tar zxvf Cache-Memcached-1.14.tar.gz
cp -a Cache-Memcached-1.14 Cache-Memcached-1.14.orig
patch -d Cache-Memcached-1.14 -p1 \
< Cache-Memcached-1.13-5.005_03-20040605.diff
find Cache-Memcached-1.14 -name '*.orig' -exec rm {} ';'
emacs Cache-Memcached-1.14/Memcached.pm
LC_ALL=C TZ=UTC0 diff -Naur \
Cache-Memcached-1.14.orig Cache-Memcached-1.14 \
> Cache-Memcached-1.14-5.005_03-20040731.diff
新規修正点は
- Socket モジュールでのインポートで IPPROTO_TCP が追加になったところが実験環境でエラー。コードの中では利用していないので削除。
- ChangeLog 中の下記のため @+ を使うようになったようだが、5.005_03 では定義されていないのでエラー(perl.*delta のどこにものっていないのでチェックに苦労。perlretut に言及があって Perl v5.6.0 から提供されるようになった事を確認)。Cache::Memcached 1.13 で行っている pos を使った処理に戻す。
2004-07-19
* don't use pos() because it doesn't seem to work in
taint mode. use $+[0] instead. (Dave Evans <..@djce.org.uk>)
それからパッチの作り方を変更。patch の man の通り LC_ALL=C TZ=UTC0 にするのとオプションを -Naur を使うように。
また 1.14 から String::CRC32 が必要になった。
- Cache::Memcached 1.13 の Perl 5.005_03 対応 (2004-06-05)
- [ Perl ] Memcached を使ってみる (2004-01-12)
- Time::Local::gmtime の範囲チェック (2003-12-23)
- [ WiKicker ] キャッシュまわりにバグ (2004-06-05)
- 最新の Module::Install は Perl 5.005_03 ステ? (2006-04-29)
2005年6月6日 (月)
■ [ WiKicker ] Storable 永続化データの互換性

fkimura 氏から WiKicker の障害レポートをいただいた。 Perl v5.8.6 へ移行した環境で WiKicker 0.26 を試してみたところエラーになってしまうとのこと。
"Error action: do_read: Byte order is not compatible at blib/lib/Storable.pm (autosplit into blib/lib/auto/Storable/thaw.al) line 366, at /usr/local/lib/perl5/site_perl/5.8.6/WiKicker/DB/File.pm line 161 at /usr/local/lib/perl5/site_perl/5.8.6/WiKicker/CGI/AbstractController.pm line 93"
(FreeBSD 4.11-RELEASE-p9)
Storable がエラーを吐いている。 Storable データ形式に互換性のない環境 (Perl and/or Storable) 変化があったようだ。
例えば Storable のマニュアルによれば 64bit integer をサポートするように構築された Perl v5.6.0 や v5.6.1 で Storable 2.02 以前を使って書き出したデータを他の環境で読み出すと 'Byte order is not compatible' エラーが出るとある。
確認したところ前のバージョンは Perl v5.6.2 だそうなので、もしかしたら上記の非互換性にあたってしまったのかもしれない (FreeBSD の Perl って 64bit integer サポートでビルドされるようになっている?)。
@ WiKicker での対応方法
WiKicker で使用している Perl のアップグレードで上記問題にあたった場合、一番簡単な方法は Storable で書き出しているページ情報ファイルを一旦全部消してしまうという方法。
WiKicker のデータベースディレクトリ (wikicker.database.directory プロパティで指定しているディレクトリ)の下の、info/basic/* を全て消してしまう(一応バックアップとしてコピーした方が良い)。
この場合、各ページの「最終更新時刻、最終更新者名、要約文」が消えてしまうが、これらの消えてしまった情報は次にページを更新した時に最新の情報で上書きされる。
WikiPage そのものおよび古いリビジョンは影響がなく全て残っているので、通常の運用ではまあ許容できる範囲の対処方法か。
情報ファイルを消したくない場合は、コンバートする必要があるけれど古い Storable データを読み出せる環境で export して、新しい形式で書き直す必要があるので作業する人にとってもちょっと面倒かもしれない。いや、新しい Storable ならば $Storable::interwork_56_64bit あたりを使えば両方をきりかえて読めそうであるので、新しい環境だけあればいいのかな。
- [ Perl ] Memcached を使ってみる (2004-01-12)
- [ WiKicker ] キャッシュまわりにバグ (2004-06-05)
- [ WiKicker ] SpeedyCGI 対応するも…… (2003-11-09)
- SQLite とか DbUnit とか (2005-05-23)
- WiKicker の Makefile.PL を Module::Inst... (2006-02-10)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.018613s / load averages: 0.10, 0.13, 0.09
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)




■ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。
■ Google Buzz はよろしければ Naney の Google プロフィールからどうぞ。