Forum Webscript.Ru
Программирование => Perl => Тема начата: Alniger от 24 Мая 2006, 11:26:14
-
Народ здрасьте.
Не могу сообразить как чистить массив от лишнего
Массив:
@array=("1","2","temp",""," ","6");
после очистки
@array=("1","2","temp","6");
Т.е. нужно удалить пустые элементы (пример array[3]) и элементы содержащие пробел (пример array[4]), и собрать его.
А возможно ли узнать, номер элемента содержащий слово temp, т.к. его положений в массиве может быть где угодно.
Заранее Вам спасибо.
-
array[3] не существует и так.
Для уборки пробелов
@array = grep {$_ ne " "} @array;
-
perldoc -f grep
-
Подскажите, есть 2 массива:
@array1=("2","3","5");
@array2=("1","5","1");
Количество элементов может быть разным, но одинаковыми по количеству в них.
Как можно произвести деление элементов:
вид таков:
@array3=("$array1[0]/$array2[0]","$array1[1]/$array2[1]","$array1[2]/$array2[2]").
и затем вывести сумму элементов в массиве
@array4 = (сумма@array3)
Заранее спасибо
-
@array3 = map { $_*shift @array2 } @array1;
-
Извините, не правильно написал в начале
Как можно произвести деление элементов:
вид таков:
@array3=("$array1[0]/$array2[0]","$array1[1]/$array2[1]","$array1[2]/$array2[2]").
и затем вывести сумму элементов в массиве
@array4 = (сумма@array3)
-
Спасибо огромное.
$sum = eval(join("+",@array3));
-
# perl -MBenchmark
@q = map { int rand 256 } 0..255;
timethese (100_000,{ A => sub { my $sum = 0; return (map { $sum+=$_ } @q)[-1]; },B => sub { return eval (join "+",@q); } } );
Benchmark: timing 100000 iterations of A, B...
A: 8 wallclock secs ( 7.60 usr + 0.00 sys = 7.60 CPU) @ 13157.89/s (n=100000)
B: 40 wallclock secs (39.34 usr + 0.03 sys = 39.37 CPU) @ 2540.01/s (n=100000)
#