mieki256's diary



2024/06/15() [n年前の日記]

#2 [perl][hns] Ore Power Goldが動くように修正

この日記ページを表示しているHNS(Hyper Nikki System)の日記ファイル *.hnf を読み込んで、どの日の文章量が多いのかをテキストでグラフ表示する Ore Power Gold というCGIがある。

_Ore Power Home Page (WebArchive)

しかし、今現在の環境では何故か動かなくなっていたので、原因を調べてた。

一応、動くようになった版を置いておく。以下の環境で動作確認した。
_opg.cgi

せっかくだから、use strict; と use warnings; を書いて、警告が出ないようにあちこち修正しておいた。

動かなかった原因 :

おそらくだけど、sprintf() に指定しているフォーマット文字列(書式文字列)がおかしい気がする。YYYMMDD という文字列を取得するために、オリジナル版では以下のような指定になっていたけれど…。
sprintf("%0.4d%0.2d%02.d", 2024, 6, 8);


以下は動作確認用のスクリプト。

_01_sprintf.pl
use strict;
use warnings;

my ($s);

print sprintf("%0.4d%0.2d%02.d", 2024, 6, 8), "\n";

print sprintf("%04d%02d%02d", 2024, 6, 8), "\n";

Windows10 x64 22H2 + Strawberry Perl 5.32.1.1 64bit で実行すると以下の結果になる。
> perl 01_sprintf.pl
202406 8
20240608

昔は動いていた記憶があるのだけど…。Ore Power Gold (opg.cgi) は2003年頃に書かれたスクリプトらしいので、その頃の Perl のバージョンなら動くのだろうか。ググって確認してみたところ、当時は Perl 5.8 が一般的だったらしい。

Active Perl 5.8.9.827-x86-291969、及び、Strawberry Perl 5.8.9.5 で動作確認してみたけれど、同じ結果になる…。変だなあ…。
> perl 01_sprintf.pl
202406 8
20240608
> perl 01_sprintf.pl
202406 8
20240608

年月日の日が1桁だとおかしくなるけれど、2桁なら動きそうな気もする…。自分、もしかして、以前はそういうタイミングで実行してしまって、動いてると思い込んでしまったのだろうか…。

以上です。

過去ログ表示

Prev - 2024/06 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project