Is this not valid code?
Very close, but no, it's not. You need a code block with that foreach, as it is:
do { print "$_ could not be restored!\n" unless ( exists $found{$_} ) +} foreach (@files);
or (more commonly)
foreach (@files) { print "$_ could not be restored!\n" unless ( exists $found{$_} ); }
or you could
exists $found{$_} or print "$_ could not be restored!\n" foreach @file +s;
Why does this last one work? An (inclusive) or statement is true iff one of its disjuncts is true. If exists $found{$_} is true, there's no need to evaluate the 'expression' on the other side of the or, because the entire or statement is true. However, if exists $found{$_} is not true, then the other side of the or will be evaluated, viz., print "$_ could not be restored!\n".
Hope this helps!
In reply to Re: foreach loop on one line
by Kenosis
in thread foreach loop on one line
by halecommarachel
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |