perl 函数

时间:2023-03-09 01:45:13
perl 函数

文档

函数参数

sub hello{
$len = @args = @_;
print "hello @args\n";
} hello('ajanuw', 'alone'); # hello ajanuw alone

传递hash参数

sub hello{
my (%args) = @_;
foreach my $k (keys %args) {
my $v = $args{$k};
print "$k: $v\n";
}
} %user = (name => 'ajanuw', age => 14);
hello(%user);

return

如果没有使用 return 语句,则子程序的最后一行语句将作为返回值

sub add{
return @_[0] + @_[1];
} print add(1,2)."\n"; # 3

静态变量

这个在js只能用闭包实现

#!/usr/bin/perl
use feature 'state'; sub add{
my $num = @_[0];
state $i = 0;
$i += $num;
return $i;
} add(1);
add(4); print add()."\n"; # 5

析构返回值

sub add{
qw/ajanuw alone/
}
my ($a, $b) = add();
print "$a and $b\n"; # ajanuw and alone

递归

#!/usr/bin/perl

sub echo{
my $n = @_[0];
if($n eq 0){
return 'done.';
}
print "$n\n";
return echo($n-1);
}
echo(3);

回调

#!/usr/bin/perl
use autodie; sub asd{
my ($n, $cb) = @_;
&$cb($n +1);
} asd(123, sub {
print "@_\n";
})

闭包

sub asd{
my $n = shift @_;
return sub {
$n += shift @_;
print "$n\n";
}
} $x = asd(1);
&$x(2);
&$x(3);