如何在 Perl 中传递可选参数? (对于初学者)
How to pass optional parameters in Perl? (For a beginner)
我读过 http://www.perl101.org/subroutines.html 但我就是不明白可选参数。
我想给following sub in PDF::API2打电话。文档说“-indent”是一个选项。我该如何传递缩进 20 的参数?
这就是我现在传递的内容:
$txt->section($str, $contentwidth,$heightmax);
这是子
sub section {
my ($self,$text,$width,$height,%opts)=@_;
my $overflow = '';
foreach my $para (split(/\n/,$text)) {
if(length($overflow) > 0) {
$overflow .= "\n" . $para;
next;
}
($para,$height) = $self->paragraph($para,$width,$height,%opts);
$overflow .= $para if (length($para) > 0);
}
if (wantarray) {
return ($overflow,$height);
}
return $overflow;
}
my ($self, $text, $width, $height, %opts) = @_;
%opts
送人。您需要传递一个键值对列表。这不是参考,只是可选的附加值。
$self
由 Perl 为您插入。然后你就得到了你已经传递的三个强制参数。之后就是选项了。
$obj->section( $text, $width, $height, -indent => 1 );
将这些选项分配给 %opts
的方式会将高度之后的所有剩余参数放入该哈希中,稍后将传递给 $self->paragraph
。
只需确保它始终是成对的值。
我读过 http://www.perl101.org/subroutines.html 但我就是不明白可选参数。
我想给following sub in PDF::API2打电话。文档说“-indent”是一个选项。我该如何传递缩进 20 的参数?
这就是我现在传递的内容:
$txt->section($str, $contentwidth,$heightmax);
这是子
sub section { my ($self,$text,$width,$height,%opts)=@_; my $overflow = ''; foreach my $para (split(/\n/,$text)) { if(length($overflow) > 0) { $overflow .= "\n" . $para; next; } ($para,$height) = $self->paragraph($para,$width,$height,%opts); $overflow .= $para if (length($para) > 0); } if (wantarray) { return ($overflow,$height); } return $overflow; }
my ($self, $text, $width, $height, %opts) = @_;
%opts
送人。您需要传递一个键值对列表。这不是参考,只是可选的附加值。
$self
由 Perl 为您插入。然后你就得到了你已经传递的三个强制参数。之后就是选项了。
$obj->section( $text, $width, $height, -indent => 1 );
将这些选项分配给 %opts
的方式会将高度之后的所有剩余参数放入该哈希中,稍后将传递给 $self->paragraph
。
只需确保它始终是成对的值。