LINUX.ORG.RU

Вот это работает: #!/usr/bin/perl -w

@a=('mama','papa','i','veselaja','mama','semja','papa');

for($i=0;$i<$#a;$i++){ for($b=$i+1;$b<$#a+1;$b++) { if($a[$i] eq $a[$b]){delete $a[$b];} } }

получаем @a содержит "mama,papa,i,veselaja,semja"

P.S. Правда это совсем не похоже на Perl-way, наверняка можно сделать гораздо елегантней ...но сейчас думать совсем не хочется, что первое(читай самое простое) в голову пришло то и написал...

Интересно было бы посмотреть варианты "по Перлее"...

golodranez ★★★★
()

Вот это работает:
#!/usr/bin/perl -w

@a=('mama','papa','i','veselaja','mama','semja','papa');

for($i=0;$i<$#a;$i++){
for($b=$i+1;$b<$#a+1;$b++)
{
if($a[$i] eq $a[$b]){delete $a[$b];}
}
}

получаем @a содержит "mama,papa,i,veselaja,semja"

P.S. Правда это совсем не похоже на Perl-way, наверняка можно сделать гораздо елегантней ...но сейчас думать совсем не хочется, что первое(читай самое простое) в голову пришло то и написал...

Интересно было бы посмотреть варианты "по Перлее"...

golodranez ★★★★
()
Ответ на: комментарий от golodranez

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

ugoday ★★★★★
()

%hash = map { $_ => 1} @src;
@dst = keys %hash;

anonymous
()
Ответ на: комментарий от golodranez

сортировать и удалить дубли. в шелле для строк в файле это $ cat a.txt | sort | uniq > b.txt

без сортировки получается сложность алгоритма квадратическая, что неоптимально

vasilin
()

perl:

чтобы выбрать повторения из массива можно воспользоваться строчкой:

@uniq=grep{!$hash{$_}++} @mass;

для того, чтобы убрать строки в массиве, содержащие какие-то 
произвольные одинаковые данные, можно немного модифицировать 
приведенную строчку:

@uniq=grep{!$hash{$1}++ if m&$name\001($value)\001$other\n&} @mass;

shell:

cat /var/log/httpd.access.log | grep "site/mv" | awk '!_[$0]++'

vilfred ☆☆
()
Ответ на: комментарий от vilfred

я создатель топика

всем огромное спасибо за ваши ответы

я тоже думал про то чтобы воспольховаться утилитой шела uniq ,но это как то, я не знаю ,хочется что бы весь код был на перле

удачи всем

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.