有一小段代码:
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
提前致谢。
答案 0 :(得分:3)
我猜“行分隔符”是指特殊的(全局)Perl变量$/
,它是输入记录分隔符。
你可以将它的值传递给这样的子程序,即使我不明白你为什么要这样做:
checkDefinition($/ , "list separator");
如果你的意思是另一个特殊变量,你可以用同样的方式传递它。您可以找到所有特殊Perl变量here的含义。
编辑:
由于您实际上在寻找“列表分隔符”,因此您可以执行以下操作:
checkDefinition($" , "list separator");