Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用perl打印列表的前几个元素_Perl - Fatal编程技术网

用perl打印列表的前几个元素

用perl打印列表的前几个元素,perl,Perl,有下一个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; } 使用5.012; 使用警告; #做一些随机数 my

有下一个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;
}
使用5.012;
使用警告;
#做一些随机数
my@list=map{rand}1..10;
说“打印所有10个数字”;
对@list说$u;
说“只打印前5页”;
我的$n=0;
for(@list){
如果$n++<5,则说$u;
}
打印任何数组的前(后)N个元素的更紧凑的形式

下一个是语法错误

$n=0;
#say $_ if($n++ < 5) for @list;
$n=0;
#对@list说$uIf($n++<5);
只需使用:


此外,
毫无例外地使用严格的
,除非你真的喜欢花太多时间寻找细微的范围错误。

要打印前5项:

say for @list[0 .. 4];
say for @list[-5 .. -1];
要打印最后5项,请执行以下操作:

say for @list[0 .. 4];
say for @list[-5 .. -1];

另一种编写方法是使用
while
循环

my $i = 0;
say $list[$i++] while $i < 5;
my$i=0;
说$list[$i++],而$i<5;

此外,破坏性方法:

splice @list, 5;
say for @list;

我认为默认情况下,
use5.012
pragma导入
strict
,但这一点很好,特别是因为
use5.012
不仅可以防止脚本在较旧的Perl下运行,无论其中是否有5.12的新内容,而且,这一点很好。我每个脚本的前两行包括
use strict;使用警告
@AaronMiller第二个链接显然不知道
使用了什么5.010
可以,因为没有它,相关代码就无法编译。而且,不,在顶部有一长串样板文件不是更好的。如果有样板文件,就尽可能地减少它。@darch Which link;如何实现?有关更多详细信息,请参阅
perldoc perldata
,并搜索/Slices/注意,如果
@list
的元素少于5个,则第一个元素将创建它们(因此
@list
将有5个元素,其中一些元素之后将
未定义)第二个将失败并出现错误。如果数组中没有5个元素,如何从一开始最多获取5个元素,而不是添加undef?