2010-07-14 71 views
5

perl中是否有一行代碼可以實現這種功能。Perl數組操作

Array = [100,200,300,400,500]; 

percent = 50% 

new_Array = [50,100,150,200,250]; 

也就是說,我給一個數組並指定一個百分比。它應該給我一個新的數組與給定的百分比的原始數組值。

應該照顧單數,並給我這個價值的上限或下限。

我知道如何手動完成。只是想知道perl在商店裏有什麼令人驚訝的東西?

謝謝。

回答

3

無論何時你想變換列表,map是一個不錯的選擇。這裏有一個例子:

my @list = (100, 200, 300, 400, 500); 
my @new = map { int($_ * 0.5) } @list; 

print "@new"; 

輸出:

50 100 150 200 250 
+0

謝謝:),做圓整的東西。 – jerrygo 2010-07-14 23:52:34

7

map將允許您轉換列表中的每個項目。

my $percent = 50; 
my @original = qw/100 200 300 400 500/; 
my @manipulated = map { $_ * $percent/100 } @original; 
+1

您可能需要在顯式的'int()'中引入因爲它聽起來像提問者想四捨五入。 – Hudson 2010-07-14 20:49:24

+0

謝謝。這確實是一個很好的解決方案:) – jerrygo 2010-07-14 23:50:33

4

至於你問的Perl的單行確實神奇,那就是:

print join " ", map { int($_ * 0.5) } (qw(100 200 300 400 500)); 

這給

50 100 150 200 250 
+0

謝謝。這也起作用:) – jerrygo 2010-07-14 23:53:02