kor*_*rda 3 perl variable-assignment
这不是重要的问题而且我知道,buuut $var = $_;看起来只是跛脚,是否有更好(更短)的方式来完成任务?
澄清我的问题:我知道我可以$_轻松地使用代码(这就是我喜欢它的原因),但有时候我需要存储$_并执行某些操作$_然后返回旧值$_(例如).
在新的词法范围内,您可以本地化$ _,这将阻止该范围内的任何修改影响其在该范围之外的值.
需要举一个例子来澄清:
$_ = 1;
say;
{ # open a new scope
local $_ = 3;
$_++;
say;
} # close the scope
say;
Run Code Online (Sandbox Code Playgroud)
这应该打印
1
4
1
Run Code Online (Sandbox Code Playgroud)
我觉得编写在内部广泛使用$ _的函数是非常有价值的,因为当他们在周围范围内破坏$ _时我不喜欢它.但是,您也可以使用它来"预留"变量并使用它的新版本一段时间.
在许多情况下,这是不必要的.例如:
foreach my $var (@array) {
dostuff($var);
}
Run Code Online (Sandbox Code Playgroud)
要么
my $var;
while ($var = <>) {
chomp($var);
dostuff($var);
}
Run Code Online (Sandbox Code Playgroud)
要么
while (<>) {
chomp;
dostuff($_);
}
Run Code Online (Sandbox Code Playgroud)