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
In reply to New user, confusion over print and lists by jktstance
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |