Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143954
  • 博文数量: 47
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 402
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-11 10:08
文章存档

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替换的时候,应该需要特别注意。

阅读(1275) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~