ske*_*ver 2 perl default perlvar perlsyn
我有以下方法接受变量,然后显示数据库中的信息:
sub showResult {
if (@_ == 2) {
my @results = dbGetResults($_[0]);
if (@results) {
foreach (@results) {
print "$count - $_[1] (ID: $_[0])\n";
}
} else {
print "\n\nNo results found";
}
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常,除了foreach循环中的打印线.此$ _变量仍包含传递给方法的值.
无论如何要在$ _上"强制"新的值范围,还是它总是包含原始值?
如果有任何好的教程可以解释$ _的工作范围,那也很酷!
谢谢
这里的问题是你真的使用@_而不是$_.该foreach循环的变化$_,标量变量,不@_,这是你通过访问,如果你的索引是什么$_[X].另外,再次检查代码以查看其中的内容@results.如果它是数组或引用的数组,您可能需要使用间接${$_}[0]或类似的东西.