如何在 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

只需确保它始终是成对的值。