in reply to Re^3: bignum and parenthesis
in thread bignum and parenthesis

what does the parser think the modulo and number is doing there?

It thinks you made a weird coding choice, which is why perl will warn you about it, if you let it:

C:\> perl -Mbignum -le "use warnings; use strict; print ( 7 ** 127 ) +% ( 524287 )" print (...) interpreted as function at -e line 1. Useless use of modulus (%) in void context at -e line 1. 2125450924568016708443303831058962243331938167363998499854997578694839 +02203328714236393937418376186556719543

Yet another reason to always use warnings; use strict; or equivalent.

Replies are listed 'Best First'.
Re^5: bignum and parenthesis
by kcott (Archbishop) on Jul 08, 2023 at 08:05 UTC

    ++ I'm a little late to the party on this one: I've been tied up with other things over the last few days. I was going to mention warnings but, as I see you've already done this, here's some additional information for the AM.

    You're using v5.36.1. If you specify use v5.36 you'll automatically get strict and warnings.

    $ perl -e 'use warnings; print (7 + 1)' print (...) interpreted as function at -e line 1. 8 $ perl -e 'use v5.36; print (7 + 1)' print (...) interpreted as function at -e line 1. 8 $ perl -e 'use v5.36; print +(7 + 1)' 8

    [See "perl5360delta: use v5.36" for other things you'll get automatically.]

    See in perldiag, "%s (...) interpreted as function". You can get that warning with many functions, not just print.

    See in perlop, "Symbolic Unary Operators" (penultimate paragraph)

    'Unary "+" ... It is useful syntactically for separating a function name from a parenthesized expression that would otherwise be interpreted as the complete list of function arguments. ...' [my emphasis]

    — Ken