Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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
List 在Perl中循环遍历列表_List_Perl_Loops_For Loop_Iteration - Fatal编程技术网

List 在Perl中循环遍历列表

List 在Perl中循环遍历列表,list,perl,loops,for-loop,iteration,List,Perl,Loops,For Loop,Iteration,我开始学习Perl,这只是一个基本的for循环,我得到了一个奇怪的输出,并希望对此有一些清晰的认识 @numbers = {1,4,5,6,7,8,9}; for(my$i = 0; $i<=$#numbers; $i++) { print ("$numbers[$i}\n"); } @numbers={1,4,5,6,7,8,9}; 对于(my$i=0;$i您想要这个: @numbers = (1,4,5,6,7,8,9); foreach my $number (@numbe

我开始学习Perl,这只是一个基本的for循环,我得到了一个奇怪的输出,并希望对此有一些清晰的认识

@numbers = {1,4,5,6,7,8,9};
for(my$i = 0; $i<=$#numbers; $i++)
{
    print ("$numbers[$i}\n");
}
@numbers={1,4,5,6,7,8,9};
对于(my$i=0;$i您想要这个:

@numbers = (1,4,5,6,7,8,9);
foreach my $number (@numbers)
{
    print ("$number\n");
}
使用
{1,4,5,6,7,8,9}
实际上是在创建一个对匿名散列的引用,该散列包含键值对
(1=>4,5=>6,7=>8,9=>undef)
当您编写
@numbers={1,4,5,6,7,8,9};
时,该引用成为存储在
@numbers
数组中的唯一标量

此外,如果您只想迭代元素,则无需使用带有计数器的“经典”样式

你可以做:

for my $number (1 .. 9) {
    print "$number\n";
}
确保在编写的每个Perl脚本的开头都有这些指令。这些指令使
Perl
能够捕获错误并警告某些可能错误的代码。作为初学者,您可能希望将这些指令与
警告
结合起来,以获得更详细的信息

这些工具非常方便,尤其是在开始使用Perl时,因为它们可以帮助您防止射中自己的脚。

尝试:

@number=(1,4,5,6,7,8,9);
foreach(@number){
打印美元;
}

您在那里做的是创建一个索引为0的哈希引用数组,即:

$numbers[0] = {
    1 => 4,
    5 => 6,
    7 => 8,
    9 => undef,
};
如果您使用了strict,您会看到:

Global symbol "@numbers" requires explicit package name
警告会告诉你:

Odd number of elements in anonymous hash
使用以下内容启动所有perl脚本:

#!/usr/bin/perl -w
use strict;

(或者
使用警告;
),您将始终能够立即捕获这些类型的错误。即使是经验丰富的Perl程序员也会时不时地出现这些错误。没有任何好的理由将它们排除在外(除非您正在打高尔夫球).

您的示例有语法错误。请确保您发布了实际使用的内容。谢谢分配。大括号被解释为散列。因此在声明数组时习惯使用大括号。没有问题:)我自己仍在为Perl而挣扎。如果它解决了你的问题,请接受。谢谢你用原始海报的代码试过了吗?为什么不呢?问题不在于循环语句,而在于变量的类型。一个在循环本身中,一个在声明中。我的回答集中在循环和哪些较短的备选方案上。谢谢你的评论,我已经编辑了我的帖子+当电脑能告诉你的时候,不要问一百万人<代码>使用严格;使用警告看起来可能有人已经读过了