如何在使用包时传递一些参数,例如:
use Test::More tests => 21;
我无法找到有关此专长的任何有价值的文件.传递这些论点是否有任何利弊?
解决方法
use My::Module LIST
做了两件事:1)它
require
s My :: Module; 2)调用
My::Module->import(LIST)
.
因此,您可以编写模块的导入例程来处理以任何方式传递的参数列表.如果您确实正在编写一个不向调用者的命名空间导出任何内容的面向对象模块,这将变得更加容易.
这是一个相当无意义的例子:
package Ex; use strict; use warnings; { my $hello = 'Hello'; sub import { my $self = shift; my $lang = shift || 'English'; if ($lang eq 'Turkish') { $hello = 'Merhaba'; } else { $hello = 'Hello'; } return; } sub say_hello { my $self = shift; my $name = shift; print "$hello $name!\n"; return; } } __PACKAGE__; __END__
以及使用它的脚本:
#!/usr/bin/env perl use strict; use warnings; use Ex 'Turkish'; Ex->say_hello('Perl'); Ex->import; Ex->say_hello('Perl');
输出:
$./imp.pl Merhaba Perl! Hello Perl!