为了账号安全,请及时绑定邮箱和手机立即绑定

perl中grep函数的详解有没有?

perl中grep函数的详解有没有?

慕森卡 2019-03-19 13:12:09
perl中grep函数的详解有没有?
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

先看个 grep 的例子

1

2

3

4

5

6

@list = ( 1..10 ) ;

@want1 = grep { $_ % 2 } @list ;

@want2 = grep !/^1/, @list;# 找出非以 '1' 为开头的元素

 

print "@want1"; # 得出 1 3 5 7 9

print "@want2"; # 得出 2 3 4 5 6 7 8 9 (排除了 1 和 10)

再换一种很传统的写法来做到同一个结果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@list = ( 1..10 );

@want1 = ();

@want2 = ();

foreach ( @list ) {

    if ( $_ % 2 ) {

        push @want1, $_

    }

}

foreach ( @list ) {

    if ( $_ !~ /^1/ ) {

        push @want2, $_

    }

}

print "@want1"; # 得出 1 3 5 7 9

print "@want2"; # 得出 2 3 4 5 6 7 8 9

grep 的作用就是将 最後面那个数组 里面的每一个元素, 一个一个以 $_ 的形式放入 { ... } 或 / ... / 中进行运算, 如果该表达式 /.../ 或 block { ... } 最後的结果为真时, 就会将该 $_ 的值 push 到 等号左边 的数组中 

grep 还有个姐妹叫 map(), 应用方法和逻辑跟 grep 基本上完全一样, 唯一不同的是, grep 只会将 $_ 加到左边数组, 而 map 会将最後的运算结果 ( 像 sub 的 return 值 ) 加到左边数组


 


查看完整回答
反对 回复 2019-03-23
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

新手不建议使用嵌套grep,map

可以使用单层grep @exile1026的答案.
perldoc grep

查看完整回答
反对 回复 2019-03-23
  • 2 回答
  • 0 关注
  • 690 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信