如何将 $(列表分隔符)作为参数传递?
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");
有这么一小段代码:
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");