+ -
当前位置:首页 → 问答吧 → 《Intermediate Perl》书中一段代码不太明白,求解

《Intermediate Perl》书中一段代码不太明白,求解

时间:2011-01-30

来源:互联网

在P59页,有一段代码:
[code]my @input_numbers = (1, 2, 4, 8, 16, 32, 64);
my  @indices_of_odd_digit_sums = grep {
    my $number = $input_numbers[$_];
    my $sum;
    $sum += $_ for split //, $number;
    $sum % 2;
} 0..$#input_numbers;
这段代码用于找出在input_numbers数组里元素和为奇数的索引,对“$sum += $_ for split //, $number“不是太明白,split函数默认是以空白分割字符的,对于数字是不是直接按位数分割的呢?这行的split函数并没有把结果赋值给某个列表,是不是默认赋值给$_了呢?如果是的话,那么这行的$_是不是和上面那个$_不是同一变量了呢?

作者: _LoveLinux   发布时间: 2011-01-30

这里 split 的第一个参数是每个字符分开,比如 'abcd' 分成 'a', 'b', 'c', 'd'

split 在这里返回分割成的 list,供 for 循环。

作者: zhlong8   发布时间: 2011-01-30