【发布时间】:2010-03-01 17:00:23
【问题描述】:
我对如何从 Perl 文件中获取所有标量和数组的想法如下:
open (InFile, "SomeScript.pl");
@InArray = <InFile>;
@OutArray = {};
close (InFile);
$ArrayCount = @InArray;
open (OutFile, ">outfile.txt");
for ($x=0; $x<=$ArrayCount; $x++){
$Testline = @InArray[$x];
if($Testline =~ m/((@|\$)[A-Z]+)/i){
$Outline = "$1\n";
push @OutArray, $Outline;
}
}
print OutFile @OutArray;
close(OutFile);
...这很好用。问题是如果多个变量出现在一行上,它只会抓取第一个变量。一个例子可能是:
$FirstVar = $SecondVar + $ThirdVar;
脚本只会抓取$FirstVar 并输出到文件。这可能仍然有效,因为 $SecondVar 和 $ThirdVar 必须在其他地方初始化,然后继续行有任何意义。我想该规则的例外是同时初始化多个变量的行。
真实 Perl 代码中的示例会破坏这个脚本吗? 另外,如何从同一行中获取与我的正则表达式条件匹配的多个项目?
【问题讨论】:
-
"for my $Testline (@InArray)" 足以循环遍历列表中的元素。此外,不需要显式计算标量 $ArrayCount,因为这是在标量上下文中使用时 @InArray 的值。
-
你所说的“继续行”是什么意思?
-
我的意思是前面的例子,或者那段上面的代码 sn-p。以“$FirstVar =". 开头的行
标签: regex perl variables file-io