Ну тоесть есть два массива разной длинны. Хочется, чтобы они перебирались и на экран бы выводились их различия. По алгоритму это видится так:
для каждого элемента 1-го массива - если такого нет во втором массиве, то пусть он выводится на экран.
Блин, никак не могу понять, как такое написать.
Хочу это сделать средствами Perl , так как с diff возиться не хочется - очень большие массивы.
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 ?
}}
Для таких целей пользуют Хеши.
Вариант$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"; }
}
>Для таких целей пользуют Хеши.
>Вариант
Спасибо огромное :))
Вариант работает :))
>
>$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"; }
>}