Perl:语法错误")[".数组切片

Alb*_*ert 1 arrays perl slice

我是Perl的新手并且正在尝试一下.我有这个代码:

use Digest::MD5 'md5';
use Data::Dumper::Perltidy;

my $data = "x";
my $digest = md5($data);

# print first 6 elements
print Dumper map(ord, split(//, $digest))[0..5];
Run Code Online (Sandbox Code Playgroud)

但是因语法错误而失败.我记得PHP有类似的问题,他们计划在未来的版本中解决这个问题.Perl是否还有这个问题,或者它只是错误的方法吗?怎么会是正确的方法?

Eug*_*ash 10

你需要map用parens 包围切片才能工作,例如:

print Dumper( ( map ord, split(//, $digest) )[0..5] );
Run Code Online (Sandbox Code Playgroud)


TLP*_*TLP 7

您正在尝试将下标应用于地图函数,而不是它的值.

print Dumper +( map(ord, split(//, $a) ))[0 .. 5];
Run Code Online (Sandbox Code Playgroud)

会做你期望的.请注意使用+符号以解决歧义.