@DynaLoader::dl_modules 包含已加载的XS模块列表.
perl -MSome::Module1 -MSome::Module2 -M... \
-MDynaLoader -E'say for sort @DynaLoader::dl_modules;'
Run Code Online (Sandbox Code Playgroud)
或者,如果您想将其编写为脚本:
# Usage: script Some::Module1 Some::Module2 ...
use 5.010;
use DynaLoader qw( );
while (defined($_ = shift(@ARGV))) {
s{::}{/}g;
$_ .= ".pm";
require $_;
}
say for sort @DynaLoader::dl_modules;
Run Code Online (Sandbox Code Playgroud)
当然,没有什么能阻止你把它放在现有的脚本中.
use 5.010;
use DynaLoader qw( );
END { say for sort @DynaLoader::dl_modules; }
Run Code Online (Sandbox Code Playgroud)
这看起来像我称之为"爆炸传感器"的工作.你可以通过把它放在第一个模块的顶部来boobytrap钩子:
BEGIN {
require Carp; #Does the stack stuff
# Fool Perl into thinking that these are already loaded.
@INC{ 'XSLoader.pm', 'DynaLoader.pm' } = ( 1, 1 );
# overload boobytrapped stubs
sub XSLoader::load { Carp::confess( 'NOT Pure Perl!' ); }
sub DynaLoader::bootstrap { Carp::confess( 'NOT Pure Perl!' ); }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
649 次 |
| 最近记录: |