perl 中的@$ 是什么?
What is @$ in perl?
我遇到了这个,希望它是 $@
的错字:
use strict;
use warnings;
eval {
my $error = Not::Here->new();
};
warn @$;
令我惊讶的是它输出了这个:
Can't locate object method "new" via package "Not::Here" (perhaps you forgot to load "Not::Here"?) at dollar_array.pl line 6.
...caught at dollar_array.pl line 9.
我无法找到关于 @$
的任何信息,并且它未在 perlvar, nor in eval
中列出
由于输出显示caught at ...
,看来这是perl的异常处理中的东西。
@$
在 Perl 中(还)没有意义。它存在是因为 $$
存在(对于每个特殊变量 "sigil-char",所有其他 "another_sigil-char" 变量都存在)。因此,warn
没有参数 - 您可以仅使用 warn;
来验证 - 您将获得相同的输出。
现在,让我们阅读 warn 的文档:
If the output is empty and $@
already contains a value (typically from a previous eval) that value is used after appending "\t...caught"
to $@
. This is useful for staying almost, but not entirely similar to die
.
$@
包含来自 eval
的异常,因此该行为是预期的。
我遇到了这个,希望它是 $@
的错字:
use strict;
use warnings;
eval {
my $error = Not::Here->new();
};
warn @$;
令我惊讶的是它输出了这个:
Can't locate object method "new" via package "Not::Here" (perhaps you forgot to load "Not::Here"?) at dollar_array.pl line 6. ...caught at dollar_array.pl line 9.
我无法找到关于 @$
的任何信息,并且它未在 perlvar, nor in eval
由于输出显示caught at ...
,看来这是perl的异常处理中的东西。
@$
在 Perl 中(还)没有意义。它存在是因为 $$
存在(对于每个特殊变量 "sigil-char",所有其他 "another_sigil-char" 变量都存在)。因此,warn
没有参数 - 您可以仅使用 warn;
来验证 - 您将获得相同的输出。
现在,让我们阅读 warn 的文档:
If the output is empty and
$@
already contains a value (typically from a previous eval) that value is used after appending"\t...caught"
to$@
. This is useful for staying almost, but not entirely similar todie
.
$@
包含来自 eval
的异常,因此该行为是预期的。