http://qs321.pair.com?node_id=1212642


in reply to Disabling the interpretation of diamond <> operator in package?

I'm afraid you can't do this in your Perl program.

It's about context... and happens in the depths of Perl's toke.c. After the name of a subroutine, '<' might be the start of the sub's parameter list, either some diamond or a heredoc. Unfortunately, the code handling these does not have a fallback to "ok, let's try an operator instead" if it's neither. A '>', on the other hand, does not have any ability to produce a parameter list, and is only tested as an operator.

All the workarounds seen here - bla(), (bla), &bla, sub bla() - move Perl into a context where only operators are permitted, and I can't come up with anything else.

BTW: Overloading doesn't play any role here. It only affects code which has been successfully parsed.

  • Comment on Re: Disabling the interpretation of diamond <> operator in package?

Replies are listed 'Best First'.
Re^2: Disabling the interpretation of diamond <> operator in package?
by LanX (Cardinal) on Apr 10, 2018 at 17:48 UTC
    Thanks for checking the parser's code! haj++

    > BTW: Overloading doesn't play any role here. It only affects code which has been successfully parsed.

    Yeah I'm aware of this, but wanted to give some context (no pun intended ;-)

    Cheers Rolf
    (addicted to the Perl Programming Language and ☆☆☆☆ :)
    Wikisyntax for the Monastery