rand
имеет два синтаксиса:
Если то, что следует, rand
может быть началомвыражения (EXPR
), Perl предполагает, что вы используете последнюю форму.
*
может начинать EXPR
, поэтому rand*...
анализируется как rand EXPR
.Это означает, что rand*100
эквивалентно rand(*100)
.
$ perl -MO=Deparse,-p -wle'print(rand*100)'
BEGIN { $^W = 1; }
BEGIN { $/ = "\n"; $\ = "\n"; }
print(rand(*100));
-e syntax OK
$ perl -wle'print(rand*100)'
Argument "*main::100" isn't numeric in rand at -e line 1.
0.57355563536203