in reply to Re: Martin Brown book page 33
in thread Martin Brown book page 33
For extra credit, explain why it doesn't print "23First1Second1" - which would seem to be the most obvious result.
Because the arguments to print are all evaluated first, then printed. ie, it's effectively:
@args = (2,3,first,second); print @args;
So 'first' and 'second' are run (generating output), before the print command w/ the list is performed.
Similarly, foreach (&func1, &func2) { ... } will run both 'func1' and 'func2' before starting the loop:
foreach ( &func1, &func2 ) { print "Looping : $_"; } sub func1 { print "func1 called\n"; return "func1 return val\n"; } sub func2 { print "func2 called\n"; return "func2 return val\n"; }
|
|---|