我必须对一些老的Perl代码进行故障排除,但我无法弄清楚$teilnehmer
在此代码中的价值。
# Teilnehmer einlesen
foreach ( $c = 0; $c <= @htmllines; $c++ ) {
if ( $htmllines[$c] !~ /(<!--responses: $delkursnr-->0)/ ) {
if ( $htmllines[$c] =~ /<!--responses: $delkursnr-->(.*)/ ) {
$rspbegin = $c;
}
$teilnehmer = $_;
}
}
答案 0 :(得分:0)
$teilnehmer = $htmllines[$c]
这意味着:
foreach ($c = 0;$c <= @htmllines;$c++) {
if ($htmllines[$c] !~ /(<!--responses: $delkursnr-->0)/) {
if ($teilnehmer = $htmllines[$c] =~ /<!--responses: $delkursnr-->(.*)/){
$rspbegin = $c;
};
}
}
它与:
相同moment
有关$ _的更多信息,请访问Google
答案 1 :(得分:0)
已经完成了一段时间,因为我已经完成了Perl,但是我没有在这里安装它,所以我无法对其进行测试。
似乎代码应该在@htmllines
中找到满足某些正则表达式相关条件的最后一个元素,并将数组元素存储到变量$teilnehmer
中,并将其在数组中的索引存储到变量$rspbegin
。请注意,循环中的特定迭代可能会设置$teilnehmer
的值,但不会设置$rspbegin
的值。因此它们实际上并不对应于数组中的同一条目。
此外,循环以$c <= @htmllines
为界。这意味着循环将在数组结尾之后最后一次使用$htmllines[$c] = undef
运行。我不知道外部的if
块将如何处理它,因为它是负的正则表达式匹配项。如果否定匹配返回false,则这不是问题-它将忽略这种情况。但是,如果返回真值,则$teilnehmer
将设置为undef
。这是循环的最后一次迭代,因此以后不会覆盖该值。
另一件事:$delkursnr
的值是什么?它是否包含任何正则表达式特殊字符?正则表达式的特殊字符如下:^$()[].?*+{}|\
...我可能已经错过了一些。 (不过,{/-
应该没问题。)如果正则表达式中有特殊字符,则应在正则表达式中用$delkursnr
替换正则表达式中的\Q$delkursnr\E
。参见https://perldoc.perl.org/perlre.html#Quoting-metacharacters。