http://qs1969.pair.com?node_id=11102642


in reply to Re: Perl logical operators
in thread Perl logical operators

When did this form become valid? I used on my dev box (5.28) but on production (5.16) I get a syntax error and need to use

use constant {true=>1,false=>0}

Replies are listed 'Best First'.
Re^3: Perl logical operators
by choroba (Cardinal) on Jul 10, 2019 at 13:49 UTC
    Interestingly, it's a difference in Perl parser, not in constant. As usually, help the parser by telling it the { doesn't start a block, but a hash reference:
    use constant +{ qw( true 1 false 0 ) };

    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
Re^3: Perl logical operators
by hippo (Bishop) on Jul 10, 2019 at 13:48 UTC

    perldelta for 5.18.0 says:

    use no longer tries to parse its arguments as a statement, making use constant { () }; a syntax error (perl #114222).

    which I believe refers to this.