这是我的意思的一个例子
use SOAP::Lite +trace => [ qw( debug ) ];
Run Code Online (Sandbox Code Playgroud)
那么+traceSOAP :: Lite是什么?我猜它是包范围哈希的一部分?我的意思是,如果我想在我的一个模块中实现类似的语法,我该怎么做?
如果我还需要导入符号,这将如何工作,例如
use Foo qw( some_function );
Run Code Online (Sandbox Code Playgroud)
这会有用吗?
use Foo qw( some_function ) +option => 'bar';
Run Code Online (Sandbox Code Playgroud)
模块中是否需要任何额外的魔法才能传递这样的东西?
注意:不确定我喜欢问题的标题,随意改写
fri*_*edo 12
当你这样做时use Foo @args,幕后发生的事情等同于:
BEGIN {
require 'Foo.pm';
Foo->import( @args );
};
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,use SOAP::Lite +trace => [ qw( debug ) ]变成这样的import调用:
SOAP::Lite->import( '+trace' => [ 'debug' ] );
Run Code Online (Sandbox Code Playgroud)
确切地说,如何实现import例程取决于模块作者.大多数模块都使用由标准import提供的标准Exporter,但是你可以在那里放置任何你需要的东西,它会在use时间执行.
| 归档时间: |
|
| 查看次数: |
881 次 |
| 最近记录: |