Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re^5: Multiple foreach loops in single statement

by Athanasius (Abbot)
on Oct 24, 2012 at 13:56 UTC ( #1000644=note: print w/ replies, xml ) Need Help??


in reply to Re^4: Multiple foreach loops in single statement
in thread Multiple foreach loops in single statement

gurpreetsingh13,

I understand your reasoning, and for most languages you would be correct. But Perl is different: in Perl, the behaviour of functions and operators depends on context. For example, here is what the documentation says about backticks:

The collected standard output of the command is returned ... In scalar context, it comes back as a single (potentially multi-line) string, or undef if the command failed. In list context, returns a list of lines ..., or an empty list if the command failed.

So, in your script:

perl -e 'print chr(ord()+1) foreach(split //,`cat file.pl`);'

the expression `cat file.pl` is in scalar context (because split expects a scalar expression here), so the output of the cat command is fed to split as a single, multi-line string. But in your other script:

perl -e '@lines=`cat file.pl`;print $#lines,"\n", $lines[2];'

the assignment to an array (@lines) puts `cat file.pl` into list context, so the output of the cat command is here not a single string as before, but rather a list of strings (one for each line).

Context is a central concept in Perl. You can read up on it in the references given by Anonymous Monk, above, or in Chapter 2 of Programming Perl by Christiansen, foy, and Wall (in the section beginning on page 76 of the 4th Edition).

Hope that helps,

Athanasius <°(((><contra mundum


Comment on Re^5: Multiple foreach loops in single statement
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (10)
As of 2015-07-08 07:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (96 votes), past polls