我是 Perl 新手,我是这样使用它们的
$_
foreach (@list) {
print "$_\n";
}
@_
sub search {
my ($no, @list) = @_;
}
这些下划线变量在 Perl 中到底是如何工作的?还有哪些其他有用的结构?
最佳答案
这个问题表明您确实应该读一本书,也许还应该读 Perl 标签 FAQs 的其余部分。 .
尽管如此,$_
是一个上下文变量,它由某些构造隐式创建并由某些内置函数隐式使用。以下是一些示例:
while(<>) {
next if /^#/;
last if /^q(?:uit)?$/;
say "Howdy!" if /^hello$/;
}
这做了很多工作设置和检查 $_
变量,相当于:
while(defined($_ = <>)) {
next if $_ =~ /^#/;
last if $_ =~ /^q(?:uit)?$/;
say "Howdy!" if $_ =~ /^hello$/;
}
设置 $_
的其他构造有:foreach
循环、given
block 、map
和 grep
操作,以及 Try::Tiny 中的 catch
block .
使用 $_
的其他构造有:裸 print;
语句、s///
替换运算符和 tr///
音译运算符。
我建议:当您学习 Perl 时,不要隐式使用 $_
。完整地写下来(如上面的第二个示例),以在您的脑海中强化实际发生的情况。就像你学习外语一样,在学习缩写语言之前,你应该先学会正确、仔细地说话。
$_
对于编写更短、更简洁的代码很有用,并且通过关注正在进行的处理而不是正在处理的变量实际上可以更清晰,但只有当您了解了哪些操作使用 $_
是第二天性。否则,这只是一团困惑。
正如其他地方提到的,@_
是子例程的参数列表。
关于perl - Perl 中下划线($_、@_)的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3589837/