#navi_header|Perl| - 以前、BEGINブロックとFile::Basenameを用いて@INCを操作して、useの探索ディレクトリを変更するcodepieceを書いた。 -- [[Perl/codepiece/manupilate_INC]] - 今回は、http://d.hatena.ne.jp/naoya/20060423/1145788923 で見かけた、FindBinコアモジュールを利用するテクニックの簡単なcodepieceをメモしておく。 -- http://perldoc.perl.org/FindBin.html - <= Perl 5.000? ((CPANの方のページからソースを見てみると、require 5.000; という記述がある。)) - まずは動作確認。 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のコアモジュールであるのが有り難い。 #navi_footer|Perl|