URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1417
[ Назад ]

Исходное сообщение
"Никак не могу врубиться, как из одного массива изъять содержимое друго"

Отправлено zlinuxan , 20-Фев-03 07:05 
Ну тоесть есть два массива разной длинны. Хочется, чтобы они перебирались и на экран бы выводились их различия. По алгоритму это видится так:
для каждого элемента 1-го массива - если такого нет во втором массиве, то пусть он выводится на экран.
Блин, никак не могу понять, как такое написать.
Хочу это сделать средствами Perl , так как с diff  возиться не хочется - очень большие массивы.

Содержание

Сообщения в этом обсуждении
"RE: Никак не могу врубиться, как из одного массива изъять содерж..."
Отправлено RUSLAN , 20-Фев-03 12:47 
for($i=0;$i<=@array1;$i++)
{
  $f_loop=0;    
  for($k=0;$k<=@array2;$k++)    
     {
   if($array1[$i]=~/$array2[$k]/)    # mogno eshe tak ^$array2[$k]$
       {

    $f_loop++;      
        }      
      }
     if($f_loop==0)
        {
        
       print "$array1[$i] \n";    # ya neponyal massiv dolgen                              # vivoditsya ili element massiva ?
           }             

  }


"RE: Никак не могу врубиться, как из одного массива изъять со..."
Отправлено konst , 20-Фев-03 13:32 
Для таких целей пользуют Хеши.
Вариант

$f1 = $ARGV[0]; # Файл1 (если считка из файла)
$f2 = $ARGV[1]; # Файл2 (если считка из файла)
open (F1,"$f1") || die "$!\n";
open (F2,"$f2") || die "$!\n";
while(<F1>) { chomp;$h1{$_} = 1; }
while(<F2>) { chomp;$h2{$_} = 1; }
close(F1); close(F2);    

foreach $a (keys %h1) {
    unless ($h2{$a}) { print "H1(yes),H2(no):$a\n"; }
}
foreach $a (keys %h2) {
    unless ($h1{$a}) { print "H2(yes),H1(no):$a\n"; }
}


"RE: Никак не могу врубиться, как из одного массива изъять со..."
Отправлено zlinuxan , 20-Фев-03 16:46 
>Для таких целей пользуют Хеши.
>Вариант
Спасибо огромное :))
Вариант работает :))
>
>$f1 = $ARGV[0]; # Файл1 (если считка из файла)
>$f2 = $ARGV[1]; # Файл2 (если считка из файла)
>open (F1,"$f1") || die "$!\n";
>open (F2,"$f2") || die "$!\n";
>while(<F1>) { chomp;$h1{$_} = 1; }
>while(<F2>) { chomp;$h2{$_} = 1; }
>close(F1); close(F2);
>
>foreach $a (keys %h1) {
>    unless ($h2{$a}) { print "H1(yes),H2(no):$a\n"; }
>}
>foreach $a (keys %h2) {
>    unless ($h1{$a}) { print "H2(yes),H1(no):$a\n"; }
>}