我正在使用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文件。
答案 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循环中查找字符串(在逐行处理文件期间)。