在使用它时,如何将参数传递给perl模块?

时间:2011-08-08 16:21:31

标签: perl

这是我的意思的一个例子

use SOAP::Lite +trace => [ qw( debug ) ];

那么SOAP :: Lite中的+trace是什么?我猜它是包范围哈希的一部分?我的意思是,如果我想在我的一个模块中实现类似的语法,我该怎么做?

如果我还需要导入符号,例如

,这将如何工作?
use Foo qw( some_function );

这会有用吗?

use Foo qw( some_function ) +option => 'bar';

模块中是否需要任何额外的魔法来传递这样的东西?

注意:不确定我喜欢问题的标题,随时改写

1 个答案:

答案 0 :(得分:12)

当你use Foo @args时,幕后发生的事情等同于:

BEGIN { 
    require 'Foo.pm';
    Foo->import( @args );
};

因此,在这种情况下,use SOAP::Lite +trace => [ qw( debug ) ]会变成import这样的调用:

SOAP::Lite->import( '+trace' => [ 'debug' ] );

确切地说,如何实现import例程取决于模块作者。大多数模块使用import提供的标准Exporter,但您可以在此处放置任何内容,并且会在use时间执行。