jktstance has asked for the wisdom of the Perl Monks concerning the following question:
Hi all, I'm learning Perl (my only other programming experience is Tcl) and I'm having some trouble.
I'm confused over lists, so I looked up some help and found this thread at Stack Overflow.
I looked up the perldoc of reverse (reverse) and I on the page, there is some code, which I've slightly modified:
I get the following output:#!/usr/bin/perl use strict; use warnings; print join(", ", reverse "world", "One"), "\n"; # One, world print scalar reverse ("dlrow ,", "owT"),"\n"; # Two, world $_ = "dlrow ,eerhT"; print reverse; # No output, list context $_ = "dlrow ,ruoF"; print scalar reverse; # Four, world
My first question is why isn't the third line printed? Reverse supposedly returns a list and the perldoc of print says that a list is one of it's arguments. Why doesn't this work? My second question is that if I explicitly state the $_ after reverse in the third print statement, then it prints out the string, but it is NOT reversed:One, world Two, world Four, world
I get the following output:#!/usr/bin/perl use strict; use warnings; print join(", ", reverse "world", "One"), "\n"; # One, world print scalar reverse ("dlrow ,", "owT"),"\n"; # Two, world $_ = "dlrow ,eerhT"; print reverse $_; # No output, list context $_ = "dlrow ,ruoF"; print scalar reverse $_; # Four, world
What is going on here? Why does listing $_ explicitly as an argument to reverse cause print to work, but reverse() is not performed?One, world Two, world dlrow, eerhTFour, world
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: New user, confusion over print and lists
by tobyink (Canon) on Jan 23, 2014 at 17:07 UTC | |
Re: New user, confusion over print and lists
by choroba (Cardinal) on Jan 23, 2014 at 16:01 UTC | |
by jktstance (Novice) on Jan 23, 2014 at 18:26 UTC | |
Re: New user, confusion over print and lists
by LanX (Saint) on Jan 23, 2014 at 16:43 UTC |
Back to
Seekers of Perl Wisdom