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
Arrays 如何在perl中循环遍历元素子集的数组(按相反顺序)_Arrays_Perl_For Loop - Fatal编程技术网

Arrays 如何在perl中循环遍历元素子集的数组(按相反顺序)

Arrays 如何在perl中循环遍历元素子集的数组(按相反顺序),arrays,perl,for-loop,Arrays,Perl,For Loop,我有一个数组,如下所示。需要按相反顺序打印中间元素(元素索引5到元素索引0) my @array = ( 1 .. 10 ); 我需要的输出: 5 4 3 2 1 我尝试了下面的代码。但它不打印任何内容 #/usr/bin/perl my@array=(1..10); 为$k(5..0){ 打印“$array[$k]\n”; } 代码的问题是表达式(5..0)不返回任何内容,因为它表示起始数字大于结束数字 您可以运行以下代码段来查看问题(未打印任何内容): 要实现此目的,您需要使用: 另一

我有一个数组,如下所示。需要按相反顺序打印中间元素(元素索引5到元素索引0)

my @array  = ( 1 .. 10 );
我需要的输出:

5
4
3
2
1
我尝试了下面的代码。但它不打印任何内容

#/usr/bin/perl
my@array=(1..10);
为$k(5..0){
打印“$array[$k]\n”;
}

代码的问题是表达式
(5..0)
不返回任何内容,因为它表示起始数字大于结束数字

您可以运行以下代码段来查看问题(未打印任何内容):

要实现此目的,您需要使用:

另一件需要考虑的事情是:在Perl中,数组的第一个元素具有索引
0
。因此,您要查找的列表是
(0..4)
,而不是
(0..5)

以下是您的更新代码:

my @array = (1 .. 10);
for my $k (reverse 0 .. 4) {
    print "$array[$k]\n";
}
旁注:。在这些杂注下,代码将失败变量
$k
未在代码中声明:对于我的$k…,它应该是
,而不是$k…

这也可以用以下较短的形式表示:

my @array = (1 .. 10);
print "$array[$_]\n" for (reverse 0 .. 4);
旁注#2:可以修改代码,以便根据数组的长度动态计算应打印的项目。为此,可以使用表达式
$#array
,它返回数组中最高索引的值

考虑:

print "$array[$_]\n" for (reverse 0 .. $#array/2);
如果您的数组是
(1..11)
(即元素名称不均匀),则会打印:

6
5
4
3
2
1
print "$array[$_]\n" for (reverse 0 .. $#array/2);
6
5
4
3
2
1