Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: foreach loop on one line

by Kenosis (Priest)
on Dec 03, 2013 at 00:49 UTC ( #1065348=note: print w/ replies, xml ) Need Help??


in reply to foreach loop on one line

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!


Comment on Re: foreach loop on one line
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1065348]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (16)
As of 2014-08-21 14:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (136 votes), past polls