Perl - 在数组中搜索并保存结果

时间:2014-08-05 17:18:11

标签: perl variables search

我试图在xml文件中搜索文本并尝试将结果保存在数组中。 基本上它正在搜索字符串" http://sdsad.com/a.html"

Perl脚本

my $infile = 'build.xml';
open my $input, '<', $infile or die "Can't open to $infile: $!";   
my @finaldata = ();
while (<$input>){
    chomp;
    print "$1\n" if ($_ =~ /(http:.*html)/);
    push (@finaldata, $1);
    }

print "$finaldata[$1]\n";

输出http://sdsad.com/a.html; 但它不会将结果保存在数组或变量中吗?

或是否有任何一个班轮来实现欲望输出?

3 个答案:

答案 0 :(得分:2)

请注意,无论正则表达式是否匹配,您都会将$1推送到数组中。这可能会为您提供数组{@ 1}}的几个元素。你应该这样做

undef

另外,在

while (<$input>) {
   if ( /(http:.*html)/ ) {
      print "$1\n";
      push @finaldata, $1;
   }
}

您正尝试使用从正则表达式匹配中捕获的字符串来索引数组。

应该是

print "$finaldata[$1]\n"

或者

print "$finaldata[0]\n"

答案 1 :(得分:1)

你的循环之外不存在$1

您需要像这样访问您的数据:

foreach(@finaldata){
print "$_\n";
}

我也会考虑重写:

while (<$input>){
    chomp;
        if ($_ =~ /(http:.*html)/) {
            print "$1\n";
            push @finaldata, $1;
        }
}

答案 2 :(得分:1)

您将$ 1添加为值,但在打印中,您尝试将其用作索引。尝试:

print join(',', @finaldata);