http://www.perlmonks.org?node_id=128089


in reply to Re: Trying to get fancy...
in thread Trying to get fancy...

Yep - for each element in @listB, I want to pry out the first element, assign it to $b and then do another nested grep on all elements of @listA and see if $b is in there. If it isn't, then I want it assigned to the overall @listToExpire array.

I rewrote the line to use the { }'s:

@listToExpire = grep { $b = (@{$_})[0] && grep { $a = (@{$_})[0] && $b != $a } @listA } @listB;

Still the same result:
Use of uninitialized value in numeric ne (!=) at ./listMgr.pl line 62.
Use of uninitialized value in numeric ne (!=) at ./listMgr.pl line 62.

I know I could do it in a more readable foreach loop (or a lookup hash), but thought I would take on a challenge, instead. :)

Jason

Update: I got it to work! Thanks, dragonchild! Here's the final version:

@listToExpire = grep { $b = (@{$_})[0]; grep { $a = (@{$_})[0]; $b != +$a } @listA } @listB;

It was those '&&''s ... I still don't understand them outside of the typical boolean EXPR. Need to grok that & the 'and|or' stuff, too.