亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 782 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號