cod*_*lic 6 perl cross-platform perlvar
我想获得一个包含模块的完整文件名.考虑以下代码:
package MyTest;
my $path = join '/', split /::/, __PACKAGE__;
$path .= ".pm";
print "$INC{$path}\n";
1;
Run Code Online (Sandbox Code Playgroud)
$ perl -Ipath/to/module -MMyTest -e0
path/to/module/MyTest.pm
Run Code Online (Sandbox Code Playgroud)
它适用于所有平台吗?
perlvar
散列
%INC包含用于通过附带的每个文件名的条目do,require或者use运营商.键是您指定的文件名(模块名称转换为路径名),值是找到的文件的位置.
这些密钥是否依赖于平台?我应该使用File::Spec什么?至少在win32上使用ActivePerl /代替\.
更新:%INC价值观怎么样?它们是平台依赖的吗?
鉴于它是一个标准模块,请采用Module::Loaded中的方法:
sub is_loaded (*) {
my $pm = shift;
my $file = __PACKAGE__->_pm_to_file( $pm ) or return;
return $INC{$file} if exists $INC{$file};
return;
}
sub _pm_to_file {
my $pkg = shift;
my $pm = shift or return;
my $file = join '/', split '::', $pm;
$file .= '.pm';
return $file;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |