perl中的map
#!/usr/bin/perl -w
use 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用法相對于重復的數組搜索,更簡單高效。
打印結果是:
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
轉載于:https://www.cnblogs.com/LCX/archive/2010/04/22/1718136.html
總結
- 上一篇: 用平常心去对待不平常的事
- 下一篇: 基于SuperMap Objects写的