Est-ce que quelqu'un sait ce que parser, ou les décisions précédence ont donné lieu à la mise en garde «L'utilisation de « changement » sans parenthèses est ambigu pour le code émis étant comme:Pourquoi l'avertissement "Utiliser de" décalage "sans parenthèses est ambigu" émis par Perl?
shift . 'some string';
# and not
(shift) . 'some string'; # or
shift() . 'some string';
Est-ce intentionnel de faire certaines constructions syntaxiques plus facile? Ou est-ce simplement un artefact de la façon dont l'analyseur de perl fonctionne?
Note: Ceci est une discussion sur la conception de la langue, pas un endroit pour suggérer
"@{[shift]}some string"
Je voudrais upvote, mais "ma limite de vote quotidien est atteinte." Je pense que c'est un bug, parce que je pense que SO est tombé pendant quelques minutes juste au moment où il était censé se réinitialiser, alors je suis pénalisé pour avoir voté hier. –
dans le cas de rand (; $) je peux voir un cas pour l'avertissement, cependant, avec le décalage ne semble pas être, puisque le prototype de décalage (; \ @) empêcherait une chaîne ou un nombre d'être un argument valide –
@Eric Strom: cette erreur vient du tokenizer, qui n'est pas si intelligent. Indépendamment, le prototype de shift n'est pas vraiment (; \ @), car cela en ferait un opérateur de liste et c'est en fait un opérateur unaire. – ysth