我们知道,Perl的FindBin模块可以取得当前正在运行的Perl脚本的文件路径以及文件名。
可是,如果多个文件嵌套调用呢,例如文件A调用文件B,那么B中的FindBin返回的脚本名称应该是B还是A呢?
这里做一个试验,详述如下:
一、被调用脚本in.pl
#!/usr/bin/perl -w
use FindBin;
use strict;
sub fun { print "$FindBin::Bin/$FindBin::Script\n"; }
1;
二、主调脚本p.pl
#!/usr/bin/perl -w
use strict;
require "in.pl";
fun();
三、主调脚本执行结果:
$./p.pl
/data/home/anybody/p.pl
显然,这里FindBin模块尽管在B脚本中调用,但由于B脚本被A脚本调用,因此这里返回的脚本名称仍然是A。