作业中的 Perl 'context'

Perl 'context' in assignments

作为Perl的新手,我只是不明白下面结果背后的哲学是什么:

$cnt1 = @arr;           
# this gives the length of the array 'arr'
$cnt2 = @arr[ @indices_arr ];          
# this gives the last element of the @arr[ @indices_arr ];

有谁能解释一下两者的区别吗?

来自perldoc perldata

Assignment to a scalar evaluates the right-hand side in scalar context...

并且:

If you evaluate an array in scalar context, it returns the length of the array.

并且:

Slices in scalar context return the last item of the slice.

@arr是一个数组; @arr[ @indices_arr ] 是数组切片。


至于这背后的哲学:列表和数组在 Perl 中是不同的数据类型,具有不同的行为(不要被切片中使用的 @ 标记抛出,切片是列表,而不是数组) .请参阅 Perl 中的数组与列表:有何区别? 深入解释两者的区别。