perl中grep的对象可以为变量吗 正确方法是怎样?我的详细问题与脚本是这样的

我有一个文件1,假设里面内容为刘德华张学友周星星文件2假设它里面内容为:房间大量框架梁1111facasffaljdsalfljdsaldfasfafadfadfdsa周... 我有一个文件1,假设里面内容为
刘德华
张学友
周星星

文件2 假设它里面内容为:
房间大量框架梁 1111 fa casf
faljdsal fljdsal dfas fa
fad fad fdsa 周星星
房道龙框架梁 刘德华 1111
张学友 dfdsa发 vaf

我想在文件2中找到包含文件1的信息,放在文件3,期望的结果是:
fad fad fdsa 周星星
房道龙框架梁 刘德华 1111
张学友 dfdsa发 vaf

但是我按网上的方法 无论如何修改grep的用法 得到的文件3要不与文件2一样 要不就变成一个非常大的文件。 解决这个问题方法很多,但是我想知道grep如何使用变量来选取。谢谢了
展开
 我来答
jianxia2k
2015-07-02 · TA获得超过399个赞
知道小有建树答主
回答量:368
采纳率:82%
帮助的人:140万
展开全部

问题应该是出在while (<A>) 这里。

这句是把文件中每一行取出来,赋给系统变量$_,而$_这个变量是很特殊的,perl中好多的功能都会用到这个,所以可能会带来不可知的后果,我们应该尽量避免使用$_。


另外,<B>这个不能多次使用,除非你使用seek重置文件指针,不然的话,第一次执行完了,第二次里面的值就是空了。


可以改成:


my @b = <B>;
foreach my $line (<A>) {
    chomp($line);
    next if (!$line);
    @a = grep (/$line/, @b);
    print C @a;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式