http://www.perlmonks.org?node_id=335375


in reply to Thoughts on some new operators for perl (6 or 7)

Really, the operator that I want is ''= or some such. This would be the equivalent of ||=, but for comparison against eq '' rather than boolean true-falseness.

I understand that there is a patch out there for a //= operator that does the same thing for undef, and I think that's really cool... but I'd still like to see the empty-string defaulting operator, as well.

------------ :Wq Not an editor command: Wq

Replies are listed 'Best First'.
Re: Re: Thoughts on some new operators for perl (6 or 7)
by Juerd (Abbot) on Mar 10, 2004 at 08:10 UTC

    I'd guess it's not useful enough for the core language, but I might be guessing wrong. However, should it not be implemented, then with Perl 6 you can still choose to do so yourself:

    sub infix:'' ($foo, $bar) { $foo eq '' ? $bar : $foo } sub infix:''= ($foo is rw, $bar) { $foo = $foo '' $bar }
    Likewise, the OP can implement their new operators if they really want it.

    Juerd # { site => 'juerd.nl', plp_site => 'plp.juerd.nl', do_not_use => 'spamtrap' }

      The '//' and '//=' (defined or) operators aren't in the core because they tend to be ambigious with an empty regex (like in split //, $str). They should be in 5.10, though.

      ----
      : () { :|:& };:

      Note: All code is untested, unless otherwise stated

        The '//' and '//=' (defined or) operators aren't in the core because they tend to be ambigious with an empty regex (like in split //, $str). They should be in 5.10, though.

        Ehm, I have no idea what you're responding to, but I do think your example isn't a very good one. The comma in split //, $foo would disambiguate. Perl knows when to expect a value and when to expect an operator (I'm sure you've seen those "... found where ... expected" syntax errors).

        Juerd # { site => 'juerd.nl', plp_site => 'plp.juerd.nl', do_not_use => 'spamtrap' }