perl 代码中 变量 匹配变量的正则表达式的写法

在一段perl代码中需要从文件中逐行读取$line,与模式数组中的某一个模式变量进行匹配$pattern.$patten是字母和阿拉伯数字的字符串,$line是apach... 在一段perl 代码中需要从 文件中逐行读取 $line, 与模式数组中的某一个模式变量进行匹配 $pattern. $patten 是字母和阿拉伯数字的字符串, $line 是apache服务器的配置文件。代码片段:
foreach my $line(@configfile){

if( $line =~ / $patten / ){
print $line;

}else { ; }

}
我需要正则表达式:“$line 与 模式变量 $pattern 至少匹配一次”。 自己试了多次 /($patten)+/, /$pattern+/ 都不行, 请 Perl 正则表达式高手指点! 多谢!
展开
 我来答
1114326684
2018-06-15 · TA获得超过117个赞
知道小有建树答主
回答量:169
采纳率:42%
帮助的人:77.2万
展开全部

说一下你的错误:@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 ++;
}

lucifer_001
推荐于2018-06-17 · TA获得超过684个赞
知道小有建树答主
回答量:414
采纳率:0%
帮助的人:409万
展开全部

很怀疑你是打错字母了

$pattern = 'abcd';
$line = 'abcdefg';

if($line=~m/$pattern/){
    print $line;
   
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vicky安清凡
2019-09-02
知道答主
回答量:15
采纳率:0%
帮助的人:1.4万
展开全部
匹配变量需要添加反义字符\,也就是~/\$pattern/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
835087020ccc
2015-05-27 · TA获得超过914个赞
知道小有建树答主
回答量:620
采纳率:50%
帮助的人:274万
展开全部
目测是可行的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式