2010-07-14 3 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

7

map позволит вам преобразовать каждый элемент в список.

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

Возможно, вам нужно будет ввести явный 'int()' в карту, поскольку это звучит так, как вопросик хочет округлить. – Hudson

+0

Спасибо. это действительно отличное решение :) – jerrygo

4

Как вы просили одной строки Perl, который делает волшебство, вот оно:

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

это дает

50 100 150 200 250 
+0

Спасибо. Это тоже работает :) – jerrygo

Смежные вопросы