blosxomプラグインを作成していると dynamicとstaticで動作が異なるため悩まされることがあります。その悩みの1つがheadでの現在パスの取得です。
次のどの変数を基準にしてもdynamicとstaticでは差があるため 1つの変数では現在パスを取得することはできません。ただし、上記の変数をうまく組み合わせると dynamicとstaticのどちらでも現在パスを取得(たぶん)できます。
- headサブルーチンの変数
- $blosxom::path_info
- $blosxom::path_info_xxx
次のとおりdynamicとstaticのどちらでも現在パスを取得できるサブルーチンを用意しました。
sub head { my($pkg, $dir, $head_ref) = @_; $path = &path_info($dir); # ... return 1; } sub path_info { my($path) = @_; if (!$path) { $path = $blosxom::path_info; } if (!$path) { $path = join('/', $blosxom::path_info_yr, $blosxom::path_info_mo_num, $blosxom::path_info_da,); } $path =~ s!(^/+)|(/+$)!!g; return $path; }