nDiki : Perl 5.8.0

Perl 5.8.0

2002年7月18日リリース。

PerlIO が導入された。

約1年後の、2003年9月25日に Perl 5.8.1 がリリースされた。

関連情報

スポンサード リンク

2003年4月22日 (火)

CPANPerl モジュールRPM パッケージ化する

会社のサーバは Red Hat Linux 8.0 にしたので RPM パッケージを作らんと。 RPM::Specfile モジュールに CPANPerlモジュールを RPM パッケージにするツール cpanflute2 が入っている。 なので、まずはこいつをこいつ自身で RPM パッケージ化してインストールしてコイツで RPM パッケージを作れる環境を。

Perl のバージョンは 5.8.0。 まず、/tmp/RPM-Specfile の下にステージ1としてインストールRPM::Specfile の依存しているライブラリのうち Archive::Tar が無いようなので、これもビルドする。

 cd /tmp
 tar zxvf Archive-Tar-0.23.tgz
 cd Archive-Tar-0.23
 perl Makefile.PL PREFIX=/tmp/RPM-Specfile SITEPREFIX=/tmp/RPM-Specfile
 make
 make test
 make install

次に RPM::Specfile を。

 export PERL5LIB=/tmp/RPM-Specfile/lib/perl5/site_perl/5.8.0
 cd /tmp
 tar zxvf RPM-Specfile-1.11.tar.gz
 cd RPM-Specfile-1.11
 perl Makefile.PL PREFIX=/tmp/RPM-Specfile SITEPREFIX=/tmp/RPM-Specfile
 make
 make test
 make install

これで /tmp/RPM-Specfile/bin/cpanflute2 ができる。 /tmp/RPM-Specfile/lib/perl5/site_perl/5.8.0 にPERL5LIBを通したまま

 /tmp/RPM-Specfile/bin/cpanflute2 --buildall Archive-Tar-0.23.tgz
 /tmp/RPM-Specfile/bin/cpanflute2 --buildall RPM-Specfile-1.11.tar.gz

これで

  • perl-Archive-Tar-0.23-8.src.rpm
  • perl-Archive-Tar-0.23-8.i386.rpm
  • perl-RPM-Specfile-1.11-8.src.rpm
  • perl-RPM-Specfile-1.11-8.i386.rpm

ができあがる。

ステージ2。

ルート権限でバイナリパッケージをインストール

 rpm -ivh perl-Archive-Tar-0.23-8.i386.rpm
 rpm -ivh perl-RPM-Specfile-1.11-8.i386.rpm

これで (PERL5LIB を設定する事なく)/usr/bin/cpanflute2 が使えるようになる。 これで、パッケージ化し放題(本当か?)

スポンサード リンク
[ 4月22日全て ]

2003年4月23日 (水)

[ WiKicker ] SunOS 5.6 にインストール

結局flock 問題は、File::Flock モジュールを使う事にする。 $^O eq 'solaris' な時は File::Flock::lock を使うようにコードを修正。

それから、RCS まわりでも問題。

 Warning: missing newline at end of file /tmp/...

といった感じの警告が出て期待した結果が得られない。 調べてみると rcsdiff の呼び出しで警告。 実際には diff が吐いている。 Sun の diffGNU diff ではファイル末処理が違うようだ。 ということで、こちらは diffutils-2.8.1 と rcs-5.7 を home の下に入れて解決。

ふう、これで WiKicker

で動く事を確認。都合5つ(SunOS は一つのホストで2個動かしている)。 今の所の注意点は

といったところか。

[ 4月23日全て ]

2003年10月17日 (金)

[ WiKicker ] SpeedyCGI

WiKicker 高速化のために検討。 mod_perl や FastCGI のように Apache にモジュールを追加しなくても良いのが長所。

……が手元でうまく動かぬ。'use Fcntl' などをしているスクリプトだとうまく動かない。 sid の speedy-cgi-perl 2.21-2 は Perl 5.8.0ビルドされているのに、既に Perl のほうは 5.8.1 になっているのが問題なのかもしれぬ。 で 2.22 のソースを持ってきてインストールしてみたが、やはり駄目。 簡単な CGI プログラムだとうまく動くのだが、それに 'use Fcntl' (use するだけ)で動かなくなる。

まいった。

と思ったら

動いた。

 tar zxvf CGI-SpeedyCGI-2.22.tar.gz
 cd CGI-SpeedyCGI-2.22
 perl Makefile.PL \
   SITEPREFIX=/usr/local/CGI-SpeedyCGI-2.22 \
   PREFIX=/usr/local/CGI-SpeedyCGI-2.22
 make
 make test
 make install

しかし WiKicker は常駐できるように書かれていないので、要修正。

[ 10月17日全て ]

2003年12月23日 (火)

Time::Local::gmtime の範囲チェック

Perl 5.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 5.8.0 以降に標準ではいっている Time::Local ではきちんと毎回チェックする。 うるう年・大の月/小の月も考慮してチェックされる(v5.8.0 より前のでは 31 より大きいかのチェックのみ)。

であり、CPAN では 5.005_03 でも動作する Time::Local パッケージ (1.05~)が公開されている。

Time::Local 1.04 以降を PREREQ_PM にしてもいいのだが、5.005_03 な利用者にとってはインストールするのも面倒か。 最低限のエラーチェックを自前で用意して、互換になるようにした方がいいかな。

[ 12月23日全て ]

2003年12月28日 (日)

[ WiKicker ] Locale::Maketext による localization

リファクタリングにあわせて、表示の localization を開始。 といっても、とりあえず日・英のみ。 Local::Maketext モジュールを使用することにする。 HTTPAccept-Language リクエストヘッダによる言語の判別もモジュールがやってくれるのでお便利。 コレ、Perl 5.8.0 からは標準で入っているのだがそれより前のバージョンでは自前でインストールする必要あり。

メッセージはこれで順次リソース化していけるのだがまだ日時表示など日本語向けにハードコーディングしている場所があり、こちらの手直しも必要。

[ 12月28日全て ]

2006年2月17日 (金)

SVN::Webインストール失敗

社内サーバ上の Subversion リポジトリを気軽に閲覧できるように、以前から試そうと思っていた SVN::Webインストールしてみる。

しかし SubversionPerl バインディングである SVN::Core は、Subversion パッケージに同梱されていて独立していないのか。 SubversionRed Hat Linux 8.0 へ RPM パッケージで入れているのだが、SVN::Web の方は /usr/local/perl-5.8.8 以下にインストールした Perl 5.8.8 上へ入れようと思っていたので、はたと困る。

 --with-perl5=/usr/local/perl-5.8.8/bin/perl

で configure して、Perl モジュールだけインストールしてみたけれどうまく動かず。

素直に Red Hat Linux 8.0 に標準で入っている Perl 5.8.0 に入れるかなぁ。

[ 2月17日全て ]

2006年9月14日 (木)

WiKicker 0.38 リリース - 認証承認用コードの実装

朝一で WiKicker 0.38 をリリース。 昨晩コードを完成させておいたものを Perl 5.005_03 上でテストしたら、ExtUtils::MM が 5.005_03 にはないことに気がついた。 調べると標準で入っているのは Perl 5.6.2 / Perl 5.8.0 から。

ということで急拠 ExtUtils::MM を使っているツールは今回のリリースから除外してパッケージング。

今回のリリースでは認証・承認フレームワーク実装が含まれるようになったのが中心で、基本的な機能には特に変更なし。

[ 9月14日全て ]

2007年3月8日 (木)

Perl の constant プラグマで1度に複数の定数を定義できるのは Perl 5.8.0 から

'use constant' を使った Perl プログラムを Perl 5.005_03 下で動かしたらエラー。 調べてみると、

 use constant {
     SEC   => 0,
     MIN   => 1,
     HOUR  => 2,
     MDAY  => 3,
     MON   => 4,
     YEAR  => 5,
     WDAY  => 6,
     YDAY  => 7,
     ISDST => 8,
  };

  (constant 1.04 Pod より)

という形で複数の定数をまとめて定義できるのは constant 1.04 からだ。

Perl 5.005_03 は 1.00、Perl 5.6 系は 1.02 で、1.04 になったのは Perl 5.8.0*1 なので、この形を使えるのは Perl 5.8 以降ということになる。

*1奇数系を入れると Perl 5.7.3 から

[ 3月8日全て ]

2016年10月26日 (水)

ようやく日記システム DiKicker のメンテナンス開始

この日記(nDiki)で使っている自作日記システム DiKicker開発し始めたのが2003年12月末なのでもう13年物だったりします。ここ最近大きなメンテナンスはしていなかったのですが、まだこの先10年以上使えるように手を入れることにしました。一昨日から着手。

やりたいこと

  • もともと WiKicker (WikiEngine) からの派生で作ったのでが WiKiEngine の方は使わなくなったので、不要なコードを削除したい。共通部分をスーパークラス化してあるけれどもここもまとめたい。
  • WikiName の特別扱いをやめたい。
  • Perl 5.005_03 でも動くように Perl 5.8.0 未満かどうかで処理を変えているけれども、もう 5.005_03 用のコードは消したい。
  • データを Berkeley DB にトリッキーな形で入れているので SQLite あたりに変えて簡単にしたい。
  • 最終的には Go で書き換えたりして。
[ 10月26日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

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

follow us in feedly

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

月別インデックス
Process Time: 0.057978s / load averages: 0.72, 0.87, 0.73
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker