in reply to Re: quoting style for lists
in thread quoting style for lists

I see, what use should any unary '-' with bareword have apart from being a shell-option-like string? Thanks.
But even the use of -barewords at other positions than before => and inside $hash{keys} is hairy anyway:

use strict; use warnings; sub foo(){ 'x' } $_ = -foo; # Ambiguous use of -foo # resolved as -&foo() at ./ol line 8. print; # '-x' sub bar() { -1 } $_ = -bar; #Ambigous ... as -&bar() ... print; # 1 !not "--1" my %h = ( -foo => 'FOO' ); print keys %h,' : ',$h{-foo}; # '-foo : FOO'

So to be on the safe side one should quote at these points, because if there is a reserved word 'foo' in the future, you will have a problem writing -foo barely.

--
http://fruiture.de

Replies are listed 'Best First'.
Re: quoting style for lists
by Abigail-II (Bishop) on Aug 01, 2002 at 18:00 UTC
    sub bar() { -1 } $_ = -bar; #Ambigous ... as -&bar() ... print; # 1 !not "--1"
    Documented! From man perlop:
           Unary "-" performs arithmetic negation if the operand is
           numeric.  If the operand is an identifier, a string con-
           sisting of a minus sign concatenated with the identifier
           is returned.  Otherwise, if the string starts with a plus
           or minus, a string starting with the opposite sign is
           returned.  One effect of these rules is that "-bareword"
           is equivalent to "-bareword".
    
    For fun, let "bar" return qq {-1}, and see one of the places in Perl were it matters whether a value is a string or a number.

    Abigail

      clear, because -bar was resolved as - &bar() the minus becomes an Operator and the result depends on what bar() returns. That's what I wanted to express :)

      --
      http://fruiture.de