goo blog サービス終了のお知らせ 

DEVELOPMENTOR*LEARNING RESOURCE LAB.

ソフトウェア開発現場の視点からソフトウェアと開発者の価値を高める「ホットな何か」をお届けします。(休止)

dynamicとstaticのどちらでもheadで現在パスを取得する

2006年10月09日 | blosxom

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;
}

最新の画像もっと見る