Perl变量在sub中的作用域

zac*_*ams 1 perl scope

我如何根据papertype的条件来定位这个变量?

我已经尝试了几种方式,我遇到了错误,我感到很困惑.

sub paperdisplay_getPaperLink {
    my ( $self, $args ) = @_;
    my $paper    = $args->{paper};
    my $linktext = $args->{linktext};
    my $session  = $args->{session};

    my $query    = $self->request;
    my $password = $query->param('password');

    if ( $paper->{Type} eq 'Break' ) {
        my $url = $something;
    } else {
        my $url = $somethingelse;
    }

    my $link = qq(<a title="$linktext" target="other" href="$url">$linktext</a>);

    return $link;
}
Run Code Online (Sandbox Code Playgroud)

amp*_*ine 6

你必须在你想要使用它的块中声明它.如果你在块ifelse块中声明它,它只会存在于那里.当块结束时,该变量将被销毁.

my $url;
if ($paper->{Type} eq 'Break') {
    $url = $something
} else {
    $url = $somethingelse
}
# $url still exists down here
Run Code Online (Sandbox Code Playgroud)

  • 因为计算机不值得拥有它.这是顽皮的,必须受到惩罚.但老实说,它取决于场景 - 如果_usually_它将是一个状态,但_occasionally_它将是不同的,设置'默认状态'并切换它击中异常我觉得提高代码清晰度. (3认同)