Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl-在数组中搜索并保存结果_Perl_Variables_Search - Fatal编程技术网

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

Perl-在数组中搜索并保存结果,perl,variables,search,Perl,Variables,Search,我正在尝试搜索xml文件中的文本,并尝试将结果保存在数组中。 基本上它是在搜索字符串“” 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)/);

我正在尝试搜索xml文件中的文本,并尝试将结果保存在数组中。 基本上它是在搜索字符串“”

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";
my$infle='build.xml';

打开我的$input,循环外部不存在
$1

您需要像这样访问数据:

foreach(@finaldata){
print "$_\n";
}
<>我也会考虑改写:

while (<$input>){
    chomp;
        if ($_ =~ /(http:.*html)/) {
            print "$1\n";
            push @finaldata, $1;
        }
}
while(){
咀嚼;
如果($\ux=~/(http:.*html)/){
打印“$1\n”;
推送@finaldata,$1;
}
}

循环外不存在
$1

您需要像这样访问数据:

foreach(@finaldata){
print "$_\n";
}
<>我也会考虑改写:

while (<$input>){
    chomp;
        if ($_ =~ /(http:.*html)/) {
            print "$1\n";
            push @finaldata, $1;
        }
}
while(){
咀嚼;
如果($\ux=~/(http:.*html)/){
打印“$1\n”;
推送@finaldata,$1;
}
}

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

while (<$input>) {
   if ( /(http:.*html)/ ) {
      print "$1\n";
      push @finaldata, $1;
   }
}
您正试图使用从正则表达式匹配中捕获的字符串为数组编制索引

应该是

print "$finaldata[0]\n"
或许

print "$_\n" for @finaldata

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

while (<$input>) {
   if ( /(http:.*html)/ ) {
      print "$1\n";
      push @finaldata, $1;
   }
}
您正试图使用从正则表达式匹配中捕获的字符串为数组编制索引

应该是

print "$finaldata[0]\n"
或许

print "$_\n" for @finaldata

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

print join(',', @finaldata);

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

print join(',', @finaldata);

感谢您的快速回复和帮助!感谢您的快速回复和帮助!感谢您的快速回复和帮助!感谢您的快速回复和帮助!感谢您的快速回复和帮助!感谢您的快速回复和帮助<代码>推送@finaldata,/(http:.*html)/。最后,
为@finaldata打印“$\un”
push@finaldata,/(http:.*html)/。最后,
为@finaldata打印“$\un”