2011年10月12日 星期三

Perl map函數應該注意的事情


map BLOCK LIST
map EXPR,LIST
EXPR可以是子函數名、正則表達式等。LIST是輸入列表或陣列。
簡單地說,map就是起了一個替代 foreach 循環的作用,map會把LIST中的元素一個個取出,放到系統變量$_中,然後調用 BLOCK 去處理。
BLOCK 處理過的結果由map返回,仍然是一個LIST


#map_study.pl

@arr = (1 .. 10);
sub square {
   if ($_ >5)
   {
        $result =  $_*$_;
        return $result;
   }else{
        $result =  0;
        return $result;
   }
}


@arr2 = (21..30);
@squared = map(square,@arr2);
print "square(\@arr2)=>","@squared","\n";

@squ = map {$_*$_} @arr;
#@squ = map (square,@arr);
print "\@squ => @squ\n";

#輸出結果:
#square(@arr2)=>441 484 529 576 625 676 729 784 841 900
#@squ => 1 4 9 16 25 36 49 64 81 100





@array = map (chr, @array);

can be rewritten with any of the following code lines:

@array = map (chr $_, @array);
@array = map { chr } @array;
@array = map { chr $_ } @array;

沒有留言:

張貼留言