home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

Perl/codepiece/manupilate_INC_by_FindBin

作成日: 2007-08-31 23:04:38   /   last updated at: 2008-12-28 23:06:26
カテゴリ: Perl 

  • まずは動作確認。 FindBin01.pl
#!/usr/bin/perl
use strict;
use warnings;
use FindBin qw($Bin $Script $RealBin $RealScript);

print "Bin = ", $Bin, "\n";
print "Script = ", $Script, "\n";
print "RealBin = ", $RealBin, "\n";
print "RealScript = ", $RealScript, "\n";
  • 出力
$ perl FindBin01.pl
Bin = C:/in_vitro/perl/core_modules
Script = FindBin01.pl
RealBin = C:/in_vitro/perl/core_modules
RealScript = FindBin01.pl

実際にuse libを操作してみる。

  • use される test::Hoge パッケージ:./sample/lib/test/Hoge.pm
package test::Hoge;
use strict;
use warnings;
our $message = "Hello, test::Hoge!";
  • ./sample/FindBin02.pl
#!/usr/bin/perl
use strict;
use warnings;
use File::Spec;
use FindBin;
use lib File::Spec->catdir($FindBin::Bin, "lib");

use test::Hoge;

print $test::Hoge::message, "\n";
  • 出力
$ perl ./sample/FindBin02.pl
Hello, test::Hoge!
  • ポイント:FindBinを使うと、PHPでのrealpath(dirname(__FILE__))や、basename(__FILE__) と同等な出力を取得できる。
  • 実際に、そこからの相対パスを用いる場合、File::Spec->catdir()でシステムに合わせたパス文字列を生成し、設定している。
  • いずれもPerlのコアモジュールであるのが有り難い。

*1: CPANの方のページからソースを見てみると、require 5.000; という記述がある。
original url: https://www.glamenv-septzen.net/view/135