我试图在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; 但它不会将结果保存在数组或变量中吗?
或是否有任何一个班轮来实现欲望输出?
答案 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);