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

Re: Multiple foreach loops in single statement

by ikegami (Pope)
on Oct 23, 2012 at 16:40 UTC ( #1000499=note: print w/replies, xml ) Need Help??

in reply to Multiple foreach loops in single statement

Statement modifiers are not nestable. But since

do { ... } for ...;
is legal, so is
do { ... for ... } for ...;

But for readability's sake, just don't do that! Especially since

while (...) { ...}


do { ...} while ...;

have different semantics.

A functional language approach would probably achieve what you want better.

print map ord, split //, `cat`;

(Yeah, the outer loop is useless, as you can see.)

Replies are listed 'Best First'.
Re^2: Multiple foreach loops in single statement
by gurpreetsingh13 (Scribe) on Oct 24, 2012 at 03:36 UTC
    Great. Just noticed that we can provide a list too in split function. The docs however mention EXPR --split /PATTERN/, EXPR-- which I assumed to be a scalar.

    Anyways thanks for the help. This was what I wanted to achieve:

    perl -e 'print chr(ord()+1) foreach(split //,`cat`);'
    (a simple one liner to encrypt a file via ascii shift).

      ...we can provide a list too in split function.

      Sorry, no. split operates on a single string (a scalar), but not on a list:

      13:57 >perl -wE " $s = q[abc]; $t = q[mno]; say for split(//, $s, $t); + " Argument "mno" isn't numeric in split at -e line 1. a b c 14:06 >perl -wE " $s = q[abc]; $t = q[mno]; say for split(//, ($s, $t) +); " Useless use of a variable in void context at -e line 1. m n o 14:06 >perl -wE " @u = (q[abc], q[mno]); say for split(//, @u); " 2 14:06 >
      The docs however mention EXPR ... which I assumed to be a scalar.

      Yes, your original assumption was correct. But split returns a list, which is why the output of split can be the subject of a foreach or a map.

      Hope that helps,

      Athanasius <°(((><contra mundum

        I considered myself to have given a good start on perl(as it was in some other languages)....but the wisdom of monks here and my weakness in basics shows there is still a long way to go and a lot to know....

        Thanks for your help. :)

        No. See it clearly.
        perl -e '@lines=`cat`;print $#lines,"\n", $lines[2];'


        18 use Unicode::Collate::Locale;

        this returns a list infact - a list of strings after pumping in entire file splitted on newline.

        And we are providing this list in place of an EXPR in split which makes it a point that we can provide a list too instead of a string.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1000499]
[Corion]: ambrus: I guess my profs were more oldskool that way and didn't farm out stuff except tutoring the exercises to students, but my profs were mostly theoretical mathematicians, not applied
[ambrus]: As in, high-ranking people have to coordinate a department, decide about tricky individual non-professional questions that come up, and submit proposals for grants. Secretaries are useful for helping in that.
[ambrus]: Corion: oh sure, a professor can still choose to do anything themselves if they have time and want to get it right.
[ambrus]: And most of them do write articles themselves at least.

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (9)
As of 2017-09-26 10:46 GMT
Find Nodes?
    Voting Booth?
    During the recent solar eclipse, I:

    Results (293 votes). Check out past polls.