perl中的map

來源:互聯網
上載者:User
#!/usr/bin/perl -wuse strict;my @array = (5, 'a', 'c', 10, 'b'  );my @new_array = (map { $_*2 if m/\d/; } @array);print "@new_array \n" ;print $#new_array;#print join(",", @new_array), "\n";

map用法樣本2

1. 轉換檔名為檔案大小

@sizes = map { -s $_ } @file_names;

-s是個檔案測試操作符,它返回某個檔案的size。所以上面這句就返回@file_names數組裡每個檔案的大小,結果也是個數組。

2. 轉換數組到hash:找到某個數組值的索引

代替重複的搜尋數組,我們可以用map來轉換數組到hash,並通過hash關鍵字來進行直接尋找。如下的map用法相對於重複的數組搜尋,更簡單高效。

@teams = qw(Miami Oregon Florida Tennessee Texas              Oklahoma Nebraska LSU Colorado Maryland); %rank = map { $teams[$_], $_ + 1 } 0 .. $#teams; print "Colorado: $rank{Colorado}\n";  print "Texas: $rank{Texas} (hook 'em, Horns!)\n";  

列印結果是:
Colorado: 9
Texas: 5 (hook 'em, Horns!)

上述code容易理解哦,0 ..$#teams 是個列表,$#teams代表@teams最後一個元素的下標值(這裡是9),所以這個列表就是0-9這幾個數了。map遍曆上述列表,將每個列表元素臨時設定為$_,並對$_在中間的{}裡進行計算;{ $teams[$_], $_ + 1 },這裡每次計算後返回一個2元素的列表,列表結果是某個數組值和對應的數組下標加1,明白了呀?

由於對每個LIST元素進行計算時,都產生一個2元素的列表,所以總的map結果就可看作一個hash了。hash關鍵字就是數組元素,hash值是對應的數組下標加1。
http://www.chinaunix.net/jh/25/632333.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.