Ari*_*ule 5 iteration perl loops for-loop list
我开始学习Perl,这只是一个基本的小循环,我得到一个奇怪的输出,并希望有一些清晰度.
@numbers = {1,4,5,6,7,8,9};
for(my$i = 0; $i<=$#numbers; $i++)
{
print ("$numbers[$i}\n");
}
Run Code Online (Sandbox Code Playgroud)
输出是HASH(0x23a09c).
这实际意味着什么,为什么我得到这个结果.
关于阿里安
pca*_*cao 17
你要这个:
@numbers = (1,4,5,6,7,8,9);
foreach my $number (@numbers)
{
print ("$number\n");
}
Run Code Online (Sandbox Code Playgroud)
随着{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";
}
Run Code Online (Sandbox Code Playgroud)
请确保您有use strict;和use warnings;你写的每一个Perl脚本的开始.这些指令可以perl捕获错误并警告某些可能错误的代码.作为初学者,您可能希望将这些warnings与诊断相结合以获取更详细的信息.
这些非常方便,特别是在开始使用Perl时,因为它们可以帮助您防止自己在脚下射击.
你在做什么是在索引0处创建一个带有散列引用的数组,即:
$numbers[0] = {
1 => 4,
5 => 6,
7 => 8,
9 => undef,
};
Run Code Online (Sandbox Code Playgroud)
如果您使用过严格,您会看到:
Global symbol "@numbers" requires explicit package name
Run Code Online (Sandbox Code Playgroud)
并且警告会告诉你:
Odd number of elements in anonymous hash
Run Code Online (Sandbox Code Playgroud)
用以下内容启动所有perl脚本:
#!/usr/bin/perl -w
use strict;
Run Code Online (Sandbox Code Playgroud)
(或者use warnings;)你将永远能够立即发现这些错误.即使是经验丰富的Perl程序员也会不时制作它们.真的没有任何理由让他们离开(除非你打高尔夫球).