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

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


慕森卡
浏览 695回答 2
2回答

眼眸繁星

先看个 grep 的例子123456@list = ( 1..10 ) ;@want1 = grep { $_ % 2 } @list ;@want2 = grep !/^1/, @list;# 找出非以 '1' 为开头的元素 print "@want1"; # 得出 1 3 5 7 9print "@want2"; # 得出 2 3 4 5 6 7 8 9 (排除了 1 和 10)再换一种很传统的写法来做到同一个结果123456789101112131415@list = ( 1..10 );@want1 = ();@want2 = ();foreach ( @list ) {    if ( $_ % 2 ) {        push @want1, $_    }}foreach ( @list ) {    if ( $_ !~ /^1/ ) {        push @want2, $_    }}print "@want1"; # 得出 1 3 5 7 9print "@want2"; # 得出 2 3 4 5 6 7 8 9grep 的作用就是将 最後面那个数组 里面的每一个元素, 一个一个以 $_ 的形式放入 { ... } 或 / ... / 中进行运算, 如果该表达式 /.../ 或 block { ... } 最後的结果为真时, 就会将该 $_ 的值 push 到 等号左边 的数组中 grep 还有个姐妹叫 map(), 应用方法和逻辑跟 grep 基本上完全一样, 唯一不同的是, grep 只会将 $_ 加到左边数组, 而 map 会将最後的运算结果 ( 像 sub 的 return 值 ) 加到左边数组 

慕尼黑8549860

新手不建议使用嵌套grep,map。可以使用单层grep @exile1026的答案.perldoc grep
打开App,查看更多内容
随时随地看视频慕课网APP