我是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];
但是因语法错误而失败。我记得PHP有类似的问题,他们计划在未来的版本中解决这个问题。 Perl是否还有这个问题,或者它只是错误的方法吗?怎么会是正确的方法?
答案 0 :(得分:10)
你需要将map
括在parens中以便切片工作,例如:
print Dumper( ( map ord, split(//, $digest) )[0..5] );
答案 1 :(得分:7)
您正在尝试将下标应用于地图功能,而不是它的值。
print Dumper +( map(ord, split(//, $a) ))[0 .. 5];
会做你所期望的。请注意使用+
符号来解决歧义。
答案 2 :(得分:2)
除了其他工作答案之外,请考虑您限制map
语句的结果,当您通过限制拆分可以获得相同的结果时。这将传递较少的数据,以便ord
映射,并为您的程序保存一些工作:
print Dumper map(ord, ( split(//, $digest) )[0..5] );
但是由于分裂内置了它,因此可以进一步简化为
print Dumper map(ord, split(//, $digest, 6) );