zoukankan      html  css  js  c++  java
  • Perl use strict 控制变量

    
    use strict 的影响:
    
    [root@june2 perl]# cat 5.pl 
    #!/usr/bin/perl
    use strict;
    @array=qw/1 2 3 4 5 6 7 8/;
    foreach my $var (@array){print "$var
    "};
    
    [root@june2 perl]# perl 5.pl 
    Global symbol "@array" requires explicit package name at 5.pl line 3.
    Global symbol "@array" requires explicit package name at 5.pl line 4.
    Execution of 5.pl aborted due to compilation errors.
    
    [root@june2 perl]# cat 5.pl 
    #!/usr/bin/perl
    use strict;
    our @array=qw/1 2 3 4 5 6 7 8/;
    foreach my   $var (@array){print "$var
    "};
    
    [root@june2 perl]# perl 5.pl 
    1
    2
    3
    4
    5
    6
    7
    8
    
    
    [root@june2 perl]# cat 5.pl 
    #!/usr/bin/perl
    use strict;
    my @array=qw/1 2 3 4 5 6 7 8/;
    foreach  $var (@array){print "$var
    "};
    
    [root@june2 perl]# perl 5.pl 
    Global symbol "$var" requires explicit package name at 5.pl line 4.
    Global symbol "$var" requires explicit package name at 5.pl line 4.
    Execution of 5.pl aborted due to compilation errors.
    
    这意味着从这里开始到闭合范围结尾的这个区间里,任何变量要么是一个词法范围变量, 要么是一个明确声明允许
    使用的全局变量。如果两者都不是,将导致编译错误。如果下列 之一为真,则一个全局变量是明确允许使用的:
    它是 Perl 的程序范围内的特殊变量之一(参阅第二十八章)。
    它带有包括其包名字的全称(参阅第十章)。
    它被输入到当前包(参阅第十一章)。
    它通过一个 our 声明伪装成了一个词法范围的变量。(这是我们向 Perl 中 增加 our 声明的主要原因。)
    当然,还有第五种可能——如果该用法让人觉得烦,只需要在内层块里用下面语句取消掉它:
    no strict 'vars';
    你还可以利用这个用法打开对符号解引用和光字的随机使用的严格检查。通常人们只是说:
    use strict;
    这样就把三个检查都打开了。参阅第三十一章的 use strict 部分获取更多信息。

  • 相关阅读:
    构建之法阅读笔记一
    第一冲刺阶段 工作总结 02
    第一冲刺阶段 工作总结 01
    学习进度条 第七周
    团队计划会议 01
    团队博客 一 需求分析
    学习进度条 第六周
    数组练习3 求最大连通子数组的和
    03构建之法阅读笔记之三
    团队项目个人每日总结(4.19)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351975.html
Copyright © 2011-2022 走看看