在变量范围内的Perl变量
问题描述:
根据papertype的条件,我将如何范围为该变量?在变量范围内的Perl变量
我已经尝试了几种方法,我得到的错误,我很困惑。
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;
}
答
你必须声明它在你想使用它的块。如果你声明它的if
或else
块内,它只会存在那里。块结束时变量将被销毁。
my $url;
if ($paper->{Type} eq 'Break') {
$url = $something
} else {
$url = $somethingelse
}
# $url still exists down here
答
使用Conditional Operator初始化的变量,而不需要一个if块:
my $url = $paper->{Type} eq 'Break'
? $something
: $somethingelse;
+0
也谢谢你。 – 2014-08-28 16:06:51
非常感谢你。 – 2014-08-28 15:51:53
或者你也可以在循环之外做'my $ url = $ somethingelse;'并且如果条件成立就改变它。 – Sobrique 2014-08-28 16:01:21
@Sobrique为什么自相矛盾,让电脑做额外的工作? – amphetamachine 2014-08-28 16:05:07