如何将$(列表分隔符)作为参数传递?

时间:2016-09-20 21:25:32

标签: perl parameters global-variables subroutine

有一小段代码:

use strict;
use warnings;

sub checkDefinition {
    my ($var, $desc) = @_;

    if (defined $var) {
    print "$desc: $var \n";
    } else {
    print "$desc: undef \n";
    }
}

checkDefinition($ , "list separator");

然而,当我尝试运行它时,我收到以下错误:

>perl listSeparator.pl String found where operator expected at listSeparator.pl line 14, near "$ , "list separator""
        (Missing operator before "list separator"?) syntax error at listSeparator.pl line 14, near "$ , "list separator"" Execution of
listSeparator.pl aborted due to compilation errors.

所以,这就引出了一个问题,如何将列表分隔符变量传递给子程序?我试着引用它:

my $lineSepRef = \$ ;

然而,我收到另一个错误:

Semicolon seems to be missing at listSeparator.pl line 14.

是否可以将$传递给子程序?如果是这样,怎么样?

仅供参考,在Windows上运行,草莓perl版本5.016003

提前致谢。

1 个答案:

答案 0 :(得分:3)

我猜“行分隔符”是指特殊的(全局)Perl变量$/,它是输入记录分隔符

你可以将它的值传递给这样的子程序,即使我不明白你为什么要这样做:

checkDefinition($/ , "list separator");

如果你的意思是另一个特殊变量,你可以用同样的方式传递它。您可以找到所有特殊Perl变量here的含义。

编辑:

由于您实际上在寻找“列表分隔符”,因此您可以执行以下操作:

checkDefinition($" , "list separator");