perl 能解决grep使用变量的问题吗?

perl 能解决grep使用变量的问题吗?

文件a:
10.41.104.79    biweigm2
10.41.104.76    biweigm2
10.41.104.77    biweigm2
10.41.104.78    biweigm2
10.41.104.8     biweigm2

文件b:
10.41.104.78
10.41.104.8

程序如下:
#!/usr/local/bin/perl
open(EP,"b");
while(<EP>)
{
$name=$_;

system("/usr/bin/grep  $name a>>c");
}

要求:以文件b的内容为关键字,从文件a中查询出包含的行,并输出到文件c中,希望结果文件c为:

10.41.104.78    biweigm2
10.41.104.8     biweigm2

问题:我在执行这个程序时,发现程序中$name已经取得值了,但是grep不能调用$name的值来进行查询,好像是在grep里,$name不能进行变量值替换。
请教热心的高手指教,谢谢!
#!perl

open A,"<a";

my %hash;

while(<A>) {
        chomp;
        @t=split;
        $hash{$t[0]}=$t[1];
}

close A;

open B,"<b";

open C,">c";

while(<B>) {
        chomp;
        print C $_ . "\t" . $hash{$_} . "\n";
}


用hash实现算了,本来一简单玩意,但是一开始没用chomp,结果稀奇古怪,感觉被玩了。。。
没搞定,但是如果要grep的话,perl自己就带了
下面是我的代码,还请高手赐教

#!/usr/bin/perl
use strict;
use warnings;

open FILE, "a";
open MATCH,"b";
open OUT, ">>c" or die "Cannot create file: $!\n";
while(<MATCH>) {
        my @array = grep /$_/, <FILE>;
        print OUT @array;
}
每个系统的grep不一定互相兼容 所以我觉得还是用perl实现更好
如果用grep, 那还不用直接用shell,

grep -f ... ...
grep有时候碰到unicode文件会出错
是临时用户吗?
perldoc -f grep
我试了一下,
#!/usr/local/bin/perl
open(FP,"a");
open(EP,"b");
open(OUT, ">>c" );
while(<EP>)
{
        my @array = grep /$_/, <FP>;
        print OUT @array;
}

结果文件c中的内容和a一样了,没有达到预期的目的,
问题在哪呢?

谢谢!
顶一下,高手们帮忙说个话吧,迷茫中
我把第一个数组的变量保存下来替换了$_以后能得到一个,貌似是没有循环

use strict;
use warnings;

open FILE, "a";
open MATCH,"b";
open OUT, ">>c" or die "Cannot create file: $!\n";
foreach my $match (<MATCH>) {
                chomp($match);
                my @array = grep /$match/, <FILE>;
                print OUT @array;
}
修改程序后,如下:
#!/usr/local/bin/perl
open(EP,"b");
open(OUT,">>c" );
while(<EP>)
{
chop();
$name=$_;
$name=~s/\s+//g;
open(FP,"a");
        my @array = grep /$name/,<FP>;
        print OUT @array;
        print  @array;
close(FP);
}
close(EP);
close(OUT);

这样就可以达到效果了,呵呵。不过又出现了一个新问题,如果
文件a 为:
10.1.1.2 huawei
10.1.1.22 huawei
10.1.1.3 huawei
文件b为:
10.1.1.2
那么用该程序,则会输出文件c为
10.1.1.2 huawei
10.1.1.22 huawei,
而不是
10.1.1.2 huawei ,
请问perl的grep有没有办法解决?