我怎么知道我的Perl模块是否包含在-M下?

时间:2010-10-06 16:50:13

标签: perl

无论如何要从模块import {}

内部讲述
perl -MFoo -e1

除了

perl -e'use Foo;'

,同样

perl -e'package main; use Foo;'

我正试图为这两个行为提供两种截然不同的行为。在-MFoo语法中,我想要oose.pm的行为,但我不想在import命名空间中调用main。在其他语法中,我希望子导入能够愉快地发生。

1 个答案:

答案 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,
          ''
        ];