【发布时间】:2020-07-29 03:35:04
【问题描述】:
当参数被省略时,如何让 perl sub 使用$_,就像chr 一样?这是最好的方法吗?
my @chars = map { chr } @numbers; # example
my @trimmed_names = map { trim } @names;
sub trim
{
my $str = shift || $_;
$str =~ s/^\s+|\s+$//g;
return $str;
}
【问题讨论】:
-
够用了
my $str = shift; -
@PolarBear 不是它不是
-
根据 url perlmaven.com/how-to-set-default-values-in-perl 设置默认值的常用方法是使用 //
sub f { my ($count, $other_param) = @_; $count //= $SOME_DEFAULT; } -
简而言之:(1)一个合格的“是”我会说(2)子声明必须在它使用之前出现,如果一个人要调用不带括号的(3)
||会删除0和''(空字符串)这两个可能的参数,所以使用//(定义或)。更多详情见答案 -
@CJ7 你可以使用 Params::Validate 包metacpan.org/pod/Params::Validate (只是我的观点,因为你提到你想用作char(作为内置函数))示例
sub foo { my @str = validate_pos( @_, { default => $_ } ); print "\n @str \n"; } foo("Batman"); my @a = (1..9); foreach(@a){ foo; }
标签: perl parameters subroutine