数组
qw使用分隔符区分元素,指定数组
#!/usr/bin/perl
use v5.36;
my @ns=qw(22 88 11 220);
say $ns[1];
say $ns[3];
say $ns[0];
#!/usr/bin/perl
use v5.36;
my @ns=qw(qq aaa bb cc);
print "$_\n" for (@ns);
my @ns=(22,88,11,220);
say $ns[1];
say $ns[3];
say $ns[0];
特殊变量$#数组告诉数组最后一个元素的索引:
#!/usr/bin/perl
use v5.36;
say $#ns;
if ,unless
#!/usr/bin/perl
use v5.36;
my $x=-11;
sub numMax($a,$b){
return $b if $a<$b;
return $b unless $a<$b;
}
my $result= numMax $x,88;
say $result;
[maisipu@fedora learnperl]$ ./learn1.pl
qq
aaa
bb
cc
3
[maisipu@fedora learnperl]$
for(each)
for(each)修饰符是一个迭代器:它为LIST中的每个项执行一次语句(每个项依次使用$_别名)
#!/usr/bin/perl
use v5.36;
my $x=-11;
sub numSum(@nums){
my $res=0;
foreach (@nums){
$res+=$_;
}
return $res;
}
my $result= numSum(($x,88,11,22));
say $result;
#!/usr/bin/perl
use v5.36;
my $x=-11;
sub numSum(@nums){
my $res=0;
for (@nums){
$res+=$_;
}
return $res;
}
my $result= numSum(($x,88,11,22));
say $result;
#!/usr/bin/perl
use v5.36;
my $x=-11;
sub numSum(@nums){
my $res=0;
for (@nums){
$res+=$_;
}
return $res;
}
my @ns=($x,88,11,220);
my $result= numSum(@ns);
say $result;
通过索引方式访问数组元素:
#!/usr/bin/perl
use v5.36;
my @ns=(1,10,100,1000);
say $#ns;
say $_ for 0..$#ns;
上面程序的执行结果如下:
#!/usr/bin/perl
use v5.36;
my @ns=(1,10,100,1000);
say $#ns;
say $_ for 0..$#ns;
#!/usr/bin/perl
use v5.36;
my $x=-11;
sub numSum(@nums){
my $res=0;
for (0 .. $#nums){
$res+=$nums[$_];
}
return $res;
}
my @ns=($x,88,11,220);
my $result= numSum(@ns);
say $result;
也可指定迭代取出的变量。
#!/usr/bin/perl
use v5.36;
my $x=-11;
sub numSum(@nums){
my $res=0;
foreach my $num(@nums){
$res+=$num;
}
return $res;
}
my $result= numSum(($x,88,11,22));
say $result;