我有一個這樣的陣列:
my @array = qw( zero one two three four five six seven eigth nine);
如何從@array 輸出一個由長度為 4 的字串組成的子陣列。例如,如果字串等于 4,則新陣列將輸出為@subarray = ( zero four five nine )
uj5u.com熱心網友回復:
內置函式grep充當 Perl 中的“過濾器”操作,能夠根據正則運算式或任意塊過濾串列。
如果給定一個塊,grep將為串列的每個元素呼叫該塊,將隱式變數設定$_為當前值。它將保持回傳真實的值。所以你的過濾器看起來像
my @subarray = grep { length == 4 } @array;
length與許多 Perl 內置函式一樣,可以接受引數(length($a)等),但在沒有引數的情況下呼叫時,它會自動將隱式變數$_作為??引數。
您也可以將正則運算式傳遞給它。如果您擔心您的同事太喜歡您并且想要樹敵,這主要是有用的。
my @subarray = grep(/^.{4}$/, @array);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/525404.html
標籤:perl
下一篇:在perl中使用變數呼叫sed
