无论如何要从模块import {}
perl -MFoo -e1
除了
perl -e'use Foo;'
,同样
perl -e'package main; use Foo;'
我正试图为这两个行为提供两种截然不同的行为。在-MFoo
语法中,我想要oose.pm
的行为,但我不想在import
命名空间中调用main
。在其他语法中,我希望子导入能够愉快地发生。
答案 0 :(得分:4)
在每种情况下,调用堆栈是否都不同?偷看caller(0)
可能很简单。
看起来'line'组件是不同的,至少在案例#1和#2之间:
package Foo;
use strict;
use warnings;
use Data::Dumper;
sub import
{
print Dumper([caller(0)]);
}
1;
# perl -MFoo -e1
$VAR1 = [
'main',
'-e',
0,
'Foo::import',
1,
0,
undef,
undef,
0,
''
];
# perl -e'use Foo'
$VAR1 = [
'main',
'-e',
1,
'Foo::import',
1,
0,
undef,
undef,
0,
''
];
# perl -e'package main; use Foo;'
$VAR1 = [
'main',
'-e',
1,
'Foo::import',
1,
0,
undef,
undef,
0,
''
];