in reply to Re: Is there a way to emulate 'print' using prototype?
in thread Is there a way to emulate 'print' using prototype?

The indirect object calls allow you to omit the comma, but they are indirect object calls and you can't omit the object (the file-handle, in this case).

An ordinary function call will allow you to examine the arguments and make whichever ones you want optional, but you won't be able to omit commas.

The only way I know of to change perl's syntax, which is what you're asking, is with a source filter, which is not recommended as it tends to be fragile. If you say that this isn't changing the syntax (look at print), I'd say that print is a builtin, and thus its special handling is (by definition) part of the syntax, but myprint isn't, and doesn't get access to that syntax. I've not tried but you may be able to make a source filter work, mostly. I wouldn't.

  • Comment on Re^2: Is there a way to emulate 'print' using prototype?

Replies are listed 'Best First'.
Re^3: Is there a way to emulate 'print' using prototype?
by ikegami (Patriarch) on May 19, 2011 at 14:37 UTC

    The indirect object calls allow you to omit the comma, but they are indirect object calls and you can't omit the object (the file-handle, in this case).

    I already mentioned indirect method call and its numerous limitations. The one you identified is easily worked around.

    The only way I know of to change perl's syntax, which is what you're asking, is with a source filter

    I've mentioned another in the post to which you replied, and another in this post.

    If you say that this isn't changing the syntax (look at print), I'd say that print is a builtin, and thus its special handling is (by definition) part of the syntax

    No, it's not part of the definition of builtins that they have special parsing rules.

      How would you work around the missing file-handle on the indirect call? How do you do an indirect method call on an object that isn't there?

      Sorry. I missed Devel::Declare. It looks interesting, though complex and incompletely documented.

      I grant you that my comment on special syntax was wrong, and I retract it.

        Follow the link