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

  • 相关阅读:
    apache与tomcat负载集群的3种方法
    JFinal 源码分析 [DB+ActiveRecord]
    通过PowerShell获取TCP响应(类Telnet)
    Linux 硬盘分区、分区、删除分区、格式化、挂载、卸载
    常用EXE文件反编译工具
    Shell采集系统cpu 内存 磁盘 网络信息
    MyEclipse运行很慢的原因
    Java令牌生成器
    Shell 编程基础之基本语法结构汇总
    Shell 编程基础之注意技巧
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351975.html
Copyright © 2011-2022 走看看