in reply to Re: (jeffa) Re: 'print' puzzle
in thread 'print' puzzle
Puts the contents of $bar on the filehandle FOO. We're all clear on that.print FOO $bar;
Does exactly the same thing in a nicely Perl 4-ish way. Perl's parser knows that the first argument to print (regardless of the parens) might be a filehandle which won't be comma-separated from the first thing to be printed. Now:print(FOO $bar);
Falls into the same trap. You're just specifying the package that the filehandle is in. The solutions:print(Package::FOO $bar);
The + tells the parser that the parens don't go with the print (and therefore the Package::FOO) and they're just grouping. So the parser isn't looking for a filehandle anymore. The Package::FOO gets used with indirect object syntax.print +(Package::FOO $bar);
The parser doesn't see a first-argument space-separated from the things to be printed and knows that Package::Foo is Something Else. (Later it'll know it's a function call.)print(Package::FOO($bar));
Same goes here, the parser doesn't see a filehandle here and knows that it shouldn't go looking here for one.print(&Package::FOO $bar);
I hope that helps. More importantly I hope my lack-of-sleep answer didn't cause more questions than answered...
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Re: (jeffa) Re: 'print' puzzle
by John M. Dlugosz (Monsignor) on Nov 13, 2001 at 03:18 UTC | |
by clintp (Curate) on Nov 13, 2001 at 04:25 UTC |