[英]Variable declaration in BEGIN block
在如下的脚本中,是否可以在不删除'my'的情况下有效地仅仅声明'var'一次并使其在BEGIN块之外可见?
echo -e "\n\n\n" | \
perl -lne 'BEGIN { my $var="declared & initialized once" } print $var'
另外,为什么在没有'my'的情况下声明var会使它在BEGIN块之外可见?
放一个my $var;
在BEGIN
块之前:
$ perl -le 'my $var; BEGIN { $var = "declared"; } print $var;'
declared
my
给出了变量词法范围,因此在BEGIN
块之外的示例中没有定义$var
。 有效地删除my
使其成为一个全局变量,可以在赋值后通过脚本访问它。
另外,为什么在没有'my'的情况下声明var会使它在BEGIN块之外可见?
那时你还没有宣布。 如果您没有使用use strict
(默认情况下会阻止声明),它会自动声明为全局声明。 在单行中, strict
伤害超过它的帮助; 我完全没有在这样的背景下做声明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.