7

有下一个 perl 代码

use 5.012;
use warnings;

#make some random numbers
my @list = map { rand } 1..10;

say "print all 10 numbers";
say $_ for @list;

say "print only first 5";
my $n=0;
for (@list) {
        say $_ if $n++ < 5;
}

用于打印任何数组的第一个(最后一个)N 个元素的更紧凑的形式?

接下来是语法错误...

$n=0;
#say $_ if($n++ < 5) for @list;
4

4 回答 4

12

要打印前 5 个项目:

say for @list[0 .. 4];

要打印最后 5 个项目:

say for @list[-5 .. -1];
于 2013-07-19T18:58:43.790 回答
3

只需使用列表切片

#!/usr/bin/perl
use strict;

my @list = map { int(rand*10) } 1..10;
print join(', ', @list[0..4]) . "\n";

此外,use strict无一例外,除非您真的很喜欢花太多时间寻找细微的范围界定错误。

于 2013-07-19T18:57:03.553 回答
2

另一种用while循环编写它的方法。

my $i = 0;
say $list[$i++] while $i < 5;
于 2013-07-19T19:03:24.737 回答
1

此外,一种破坏性的方法:

splice @list, 5;
say for @list;
于 2013-07-19T19:25:27.497 回答