Forum Webscript.Ru
Программирование => Perl => Тема начата: Steve от 15 Ноября 2001, 13:03:54
-
Вот в Delphi есть TStringList, которым можно создать список строк с уникальными значениями, а как сделать это на Perl, можно маленький примерчик. Заранее спасибо.
-
Что есть уникальные значения? Значения строк? или ключей? Яснее пжалста...
Задачу опиши...
-
Что есть уникальные значения? Значения строк? или ключей? Яснее пжалста...
Задачу опиши...
Вообщем необходимо создать список строк или массив.
При добавлении в него нового значения небходимо проверить есть ли там оно. Если есть, то не добавлять.
На дельфе я строил список, сортировал каждый раз после добавления, и если в отсортированном списке было значение, то оно не добавлялось.
Теперь, наверно, понятно.
-
$string="Looking for this";
$found=0;
foreach(@array)
{
if($_ eq $string) { $found=1; }
}
if(!$found)
{
push(@array,$string);
}
-
sub check_uniq {
#----------------------------------------
my @list=@_;
my %uniq=();
foreach my $elm(@list){
if ($uniq{$elm}){return 0;}
$uniq{$elm}++;
}
return 1;
}
Проверим:
if (&check_uniq(@array, $check_me)){push(@array, $check_me);}
-
А еще вот как:
%seen=();
@unique=grep{!$seen{$_}++}@list;
-
Всем спасибо за советы! Проблема решена.
-
Казахский вариант :D
$mail="f:/mail.txt";
open (OUT, "<$mail");
$sort="f:/sort.txt";
open (IN, ">$sort");
@ma=;
for $mi (@ma){
$hahs{$mi}=$mi;# Вот это то что работает
}
for $key ( keys %hahs){
print IN "$key";
}
Работа скрипта основана на том что ключ значение эдентичны
И если в в массиве поподётся ещё один идентчный "адрес" то ключ значение просто перезапишутся
потерев собой предедущюю идентичную пару