print($foo, exit); # Obviously not what you want.
The print function is called with two arguments, $foo, and exit. Both will be evaluated to get at their values, and these values will then be sent to the print function to print out. That is, $foo evaluates to whatever is stored in it (say, the string "hi"), and then exit is evaluated by calling the exit function, which aborts the program. So print never gets a chance to print anything.
This is rather basic. More interesting is why this prints something:
Here the expression consists of a call to the print function with one argument, and then a comma, and then a call to the exit function. As a comma operator evaluates its left argument, throws the return value away, and the evaluates its right argument, first the call to print($foo) is evaluated, resulting in a call to print, this in turn will evaluate $foo and send its value to the print function (making it print out something like "hi"), and then second, the call to exit is evaluated, aborting the program.print ($foo), exit;
You should read Structure and Interpretation of Computer Programs.
Christian Lemburg
Brainbench MVP for Perl
http://www.brainbench.com
In reply to Re: Question of example from Camel Book
by clemburg
in thread Question of example from Camel Book
by nysus
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |