全部博文(47)
2013年(47)
分类: PERL
2013-03-13 15:41:52
在unix/Linux中有一个强大的命令用来搜索文件中的模式,相信大家都比较熟悉,那就是grep,同样在perl中,grep也被用来进行搜索某个模式。下面我们来看一下grep的一个例子:
#! /usr/bin/perl
use strict;
use warnings;
my @array = qw(greyhound bloodhound hello hand);
my @hound = grep /hound/,@array;
print "hound:@hound\n";
my @hounds = grep s/hound/hounds/,@array;
print "hounds:@hounds\n";
print "array:@array\n";
在上面的程序中,原始数组为array,我们新建了一个数组hound,用来匹配array中存在hound这个字符串的元素。使用grep的时候,array中的元素依次赋值给默认变量$_,然后通过默认变量来匹配hound,如果匹配到了,就把匹配到的元素放置到数组hound中。另外我们需要注意另外一个问题,如果我们在grep中使用替换s///,则原始的数组也会被修改。例如我们将hound替换为hounds,在新建的数组hounds中存储的元素均为匹配到hound之后又添加了s的元素,而且原始的数组array中,所有的hound已被替换为hounds了。下面我们看一下这个程序的输出结果:
hound:greyhound bloodhound
hounds:greyhounds bloodhounds
array:greyhounds bloodhounds hello hand
从上面的运行结果我们可以看出,array的元素确实发生了变化,因此在使用grep替换的时候,应该需要特别注意。