perl的数据提取与匹配

perl的数据提取与匹配,第1张

@lines是一个数组,里面是文件中的每一行的内容。对该数据的 *** 作方法是

1

2

3

4

foreach $line (@lines) # 循环读取每一行

{

.... # $line是一行的内容

}

读到每一行后,对该行进行 *** 作,使用split函数进行拆分。对于不行的文件格式,有不同的拆分方法,你应该看一行列的拆分方式,比如是用的逗号分隔,还是制表符分隔。拆分方法如下:

1

@cols = split(/[,\t]/, $line) # 对$line进行拆分,拆分依据是逗号或制表符

然后得到的@cols数组就是每一列了,第一列就是$cols[0],第二列是$cols[1],然后你就可以将你的结果输出到OUT了。

说一下你的错误:@pattern是数组变量,数组变量访问的形式,要么是@pattern访问全部变量,要么利用$pattern[$i]的形式访问。你直接写$pattern是访问不到任何东西的。所以需要对@pattern再加一个循环进行正则匹配。下面是我写的perl代码,直接读取数组型字符了,为方面没有读入文件,和你说的问题应该类似。结果图也附上了,不知道和你说的是否符合。

#!/usr/bin/perl

 

@configfile = ("I","am","a","patten1","Not","Apatten")

@patten = ("patten1","patten2","patten3")

$i=0

$j=0

foreach my $line (@configfile)

{

      foreach my $pad1 (@patten)

{

  if ($line =~ /$pad1/){

          print "\$configfile[$i]与\$patten[$j]匹配\n"

   }

        $j++

         }

$j=0

$i ++

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11495563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存