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

How does one pass $ (list separator) as an parameter?

有这么一小段代码:

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,strawberry perl 版本 5.016003

提前致谢。

我猜 "line separator" 是指特殊(全局)Perl 变量 $/,它是 输入记录分隔符

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

checkDefinition($/ , "list separator");

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

编辑:

由于您实际上是在寻找 "list separator",您可以执行以下操作:

checkDefinition($" , "list separator");