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 部分获取更多信息。

  • 相关阅读:
    多线程 线程队列的实现
    如何使用vagrant在虚拟机安装hadoop集群
    【leetcode】Rotate List
    麒麟(Kylin)与Ubuntu的寓意相通
    山寨APP恶意吸费隐患 门槛底致监管盲点
    2013年软件设计师之考前复习笔记:IP地址
    .gitkeep
    cmd 里面运行git提示“不是内部或外部命令,也不是可运行的程序”的解决办法...
    windows常用命令行命令
    PhpStorm terminal无法输入命令的解决方法
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351975.html
Copyright © 2011-2022 走看看