繁体   English   中英

BEGIN块中的变量声明

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM