LINUX.ORG.RU

совершенно дурной вопрос про перл...


0

0

имеем скрипт:

#!/usr/bin/perl
use strict;
use warnings;
my ($box, $user);
my (@mailboxes, @mailusers);
# здесь был код, назнакчающий значения этим массивам.
# выброшен за ненадобностью.
foreach $box (@mailboxes) {
foreach $user (@mailusers) {
next if $box ne $user;
print "$box\n";
}
}

требуется сделать пересечение массива @a из массива @b.

не поможете?

заранее босая сипасиба.

З.Ы. ссылки на маны и пинки по линкам приветствуются.

★★★★

мдя, всем спасибо, проблема решилась при помощи perl cookbook :)))

#/usr/bin/perl
foreach $box (@mailboxes) {
$seen{$box} = "1";
}
foreach $box (@mailusers) {
unless ($seen{$box}) {
push(@diff,$box);
}
}
foreach (@diff) {
print;
print "\n";
}

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

А вот так не делай. Разворот происходит еще в правой части:
~$ perl -e '(@a,@b)=((1,2,3),(4,5,6)); print join "\n", @a,"\n"'
1
2
3
4
5
6

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

да не, разворот тут ни при чем :)

просто я копипастил код, и вместо @mail(boxes|users) написал @(a|b) соответственно.

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

gr_buza ★★★★
() автор топика

@a=(1..4);
@b=(3..6);

@c = map { my $i = $_; grep { $i == $_ } @b } @a;
print join "\n", @c, "\n";

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