Привет!
Подскажите, как можно в Перле вычесть массив из массива?
Имеется два массива, больший и меньший. Нужно найти все записи в большем массиве, которые отсутствуют в меньшем.
Вот, как вариант:@arr1=( elements1 );
@arr2=( elements2 );
my %hash;
my @res;for (@arr1) {
$hash{$_}+=1;
}for (@arr2) {
$hash{$_}+=2;
}for (keys %hash) {
push @res, $_ if $hash{$_}==1;
}В массиве @res - элементы массива @arr1, к-рых нет в @arr2
>Вот, как вариант:
>
>@arr1=( elements1 );
>@arr2=( elements2 );
>my %hash;
>my @res;
>
>for (@arr1) {
> $hash{$_}+=1;
>}
>
>for (@arr2) {
> $hash{$_}+=2;
>}
>
>for (keys %hash) {
> push @res, $_ if $hash{$_}==1;
>}
>
>В массиве @res - элементы массива @arr1, к-рых нет в @arr2
Не проще лиforeach (@small) { $h{$_} = 1 }
foreach (@big) {
unless ($h{$_}) { push(@res) }
>Не проще ли
>
>foreach (@small) { $h{$_} = 1 }
>foreach (@big) {
>unless ($h{$_}) { push(@res) }Проще ;)
просто, первое, что пришло в голову
>Привет!
>Подскажите, как можно в Перле вычесть массив из массива?
>Имеется два массива, больший и меньший. Нужно найти все записи в большем
>массиве, которые отсутствуют в меньшем.
перебор (FOREACH) + перебор (FOREACH) - сравнение значений - создание 3-го массива. Но в этих случаях грамотнее использовать ХЭШ, а не массив.
Всем большой тенькс :)