Perl:在这种特殊情况下,哈希不允许使用字母数字键

问题描述

我通过创建哈希发现了奇怪的行为:

perl -e "%x = (1 => 10,p2 => 20); while ( ($k,$v) = each %x ) { print \"key $k value $v\n\";}"

给出以下输出

key p2 value 20
key 1 value 10

但是,如果我将密钥p2更改为1p2,则会收到错误消息:

perl -e "%x = (1 => 10,1p2 => 20); while ( ($k,$v) = each %x ) { print \"key $k value $v\n\";}"

输出为:

Syntax error at -e line 1,near "1p2"
Execution of -e aborted due to compilation errors.

为什么会报错?

(Win10,StrawBerry Perl v5.30.0)

解决方法

引用perlop(添加了强调):

“ =>”运算符(有时发音为“ fat逗号”)是逗号的同义词,不同之处在于,如果它的左侧单词以字母或下划线开头,则会导致其左侧的单词被解释为字符串。 / strong>,并且仅由字母,数字和下划线组成。这包括可能被解释为运算符,常量,单数字v字符串或函数调用的操作数。如果对此行为有疑问,则可以显式引用左操作数。

由于1p2以数字开头,因此=>的特殊行为不适用。您必须像普通字符串一样将其引用,以防止解析错误。

,

你应该做

Folder

引用哈希键

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...