Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用perl包时将参数传递给perl包_Perl_Arguments_Packages - Fatal编程技术网

在使用perl包时将参数传递给perl包

在使用perl包时将参数传递给perl包,perl,arguments,packages,Perl,Arguments,Packages,如何在使用包时传递一些参数,例如: use Test::More tests => 21; 我找不到任何关于这一特征的有价值的文档。通过这些论点有什么利弊吗 有些人可能会说它在某些场景中更具可读性,但本质上与 use Test::More qw(tests 21); (test由胖逗号自动引用=>,数字不需要引号)。主要缺点是无法使用默认的import子例程from,它只需要将符号列表(或表示符号集合的标记)导入调用包 从超类继承自定义的import例程,该例程使用use语句中提

如何在使用包时传递一些参数,例如:

use Test::More tests => 21;   

我找不到任何关于这一特征的有价值的文档。通过这些论点有什么利弊吗

有些人可能会说它在某些场景中更具可读性,但本质上与

use Test::More qw(tests 21);

test
由胖逗号自动引用
=>
,数字不需要引号)。

主要缺点是无法使用默认的
import
子例程from,它只需要将符号列表(或表示符号集合的标记)导入调用包

从超类继承自定义的
import
例程,该例程使用
use
语句中提供的参数来配置测试计划。它还反过来使用
Exporter
来处理指定的选项,如
import=>[qw/symbols to import/]

如果您有特定的需求,几乎任何事情都可以通过自定义的
import
子例程来完成,但是偏离标准的面向对象语义太远可能是不明智的

做了两件事:1)它是
My::Module
;2)调用

因此,您可以编写模块的
import
例程来处理以任何方式传递的参数列表。如果您确实正在编写一个面向对象的模块,而该模块不向调用方的命名空间导出任何内容,那么这将变得更加容易

下面是一个毫无意义的例子:

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! 美元/进口损益 梅尔哈巴!
你好!您的自定义导入可以退回到使用Exporter的What of it?如果没有错的话,第一段仍然具有很强的误导性,在仔细阅读你的答案后,没有任何内容可以反驳这一点。它=你的答案。那是第一段