in reply to Re: Re: Re: Help needed to make a conditional statement
in thread Help needed to make a conditional statement

Sorry - I see I wasn't very clear, although you're absolutely right in your interpretation. After operating on the first input @in the @db should contain
my @db = (1, 3, 5, 7, 9, 11); my @in = (1, 2, 5, 8, 9, 10, 13); # results in: my @db = (3, 7, 11);
operating on the second example should give:
my @db = (1, 3, 5, 7, 9, 11); my @in = (21, 22, 25, 28, 29, 210, 213); # results in: my @db = (1, 3, 5, 7, 9, 11, 21, 22, 25, 28, 29, 210, 21 +3);

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Help needed to make a conditional statement
by djantzen (Priest) on Dec 05, 2002 at 00:05 UTC

    Good, then we don't even require conditionals. Simply make two passes over the arrays: the first to remove elements that exist in @in; the second to append elements in @in to @db:

    #my @db = (1, 3, 5, 7, 9, 11); #my @in = (1, 2, 5, 8, 9, 10, 13); my @db = (1, 3, 5, 7, 9, 11); my @in = (21, 22, 25, 28, 29, 210, 213); my (%db_lookup, %in_lookup); @db_lookup{@db} = (); @in_lookup{@in} = (); my @out = grep { not exists $in_lookup{$_} } @db; push @out, grep { not exists $db_lookup{$_} } @in; print "view: @out \n";

    Output from the first set is: 3 7 11 2 8 10 13. This differs from your sample output, but I think this actually does what you want. The second sample gives: 1 3 5 7 9 11 21 22 25 28 29 210 213, which matches exactly.