检查Array是否在Perl

时间:2017-06-17 17:40:01

标签: arrays perl printing pattern-matching contain

我正在使用XML文件,我正在尝试检查一行是否在整个文档中包含指定的String。读取文件似乎工作,并将String拆分为数组也是成功的。但是我的代码不打印包含指定字符串的行,我无法弄清楚错误是什么。我尝试了三种不同的方法来检查String是否被包含(见下文)。 谢谢你的帮助!

use strict;
use locale;

my($daten1, $daten2, @datenarray1, @datenarray2, $datenarray1, $datenarray2, $i, $j, $l);

open (FHIN, '0a_nur_Text_nur_795.xml') || die "Die Datei 0a_nur_Text_nur_795.xml konnte nicht geoeffnet werden: $!";  
        while(<FHIN>) {     

            $daten1=$daten1.$_; #Daten als String einlesen
            }  


close (FHIN);

$daten1 = lc $daten1;

@datenarray1= split(/\n/,$daten1); 


for($i=0; $i<@datenarray1; $i++)
{
    #if( grep { $_ eq '795.25-M'} $datenarray1[$i])
    #if($datenarray1[$i] =~m/795.25-M/)
    if(index($datenarray1[$i], '795.25-M') != -1)
    {
        print $datenarray1[$i];
    }
}

该文件是XML文件。

1 个答案:

答案 0 :(得分:0)

您已将文件内容转换为小写版本 $daten1 = lc $daten1;

您查找带有大写字母的字符串 if(index($datenarray1[$i], '795.25-M') != -1)

如果字符串(795.25-m)或使用带有i修饰符的正则表达式,请查找小写版本。
if($datenarray1[$i] =~ /795\.25-M/i )

BTW 1)您的代码非常&#34; unperlish&#34;恕我直言。 2)您可以在第一个while循环中查找字符串(在逐行处理文件期间)。