神奇的perl(2)

发布时间 2023-06-24 22:37:11作者: 水泊waterPerl

数组

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;