这两个定义有什么区别?

bol*_*bol 2 perl perl-hash

为什么这是语法错误:

my @hash{1..4}=(1..4);
Run Code Online (Sandbox Code Playgroud)

但不是这个:

my %hash;
@hash{1..4}=(1..4);
Run Code Online (Sandbox Code Playgroud)

shi*_*nin 6

第一个例子是一个词法范围的'my' +一个哈希切片,它预先假定一个人可以以一种无效语法的切片方式声明一个哈希.你的第二个例子是合适的,首先声明哈希,假设你使用严格+警告;


ike*_*ami 5

my 需要变量或parens中的变量列表作为参数.

@hash{1..4}
Run Code Online (Sandbox Code Playgroud)

不是那些,所以

my @hash{1..4}
Run Code Online (Sandbox Code Playgroud)

是语法错误.