5.10之前是否为Perl静态变量创建使用’我的$x if 0’技巧?

在5.10之前的Perl中没有“状态”声明.

我遇到了一个在这些Perl中创建静态变量的例子:我的$x如果为0. if 0条件使变量像静态变量一样:

use strict; use warnings;
add() for 1..7;

sub add {
    my @arr = () if 0;

    push @arr,'+';
    print @arr,"\n";
}

打印:

+
++
+++
++++
+++++
++++++
+++++++

在5.10之前的所有版本的Perl中,这种行为是否一致?

解决方法

我一直使用范围大括号来创建静态变量.
add() for 1..2;       # Append to existing.
add('foo','bar');    # Re-initialize if args are passed.
add() for 1..2;       # Append to existing.
{
    my @arr;
    sub add {
        @arr = @_ if @_;
        push @arr,'+';
        print @arr,"\n";
    }
}

相关文章

忍不住在 PerlChina 邮件列表中盘点了一下 Perl 里的 Web 应用框架(巧的是 PerlBuzz 最近也有一篇相关...
bless有两个参数:对象的引用、类的名称。 类的名称是一个字符串,代表了类的类型信息,这是理解bless的...
gb2312转Utf的方法: use Encode; my $str = "中文"; $str_cnsoftware = encode("utf-8...
  perl 计算硬盘利用率, 以%来查看硬盘资源是否存在IO消耗cpu资源情况; 部份代码参考了iostat源码;...
1 简单变量 Perl 的 Hello World 是怎么写的呢?请看下面的程序: #!/usr/bin/perl print "Hello W...
本文介绍Perl的Perl的简单语法,包括基本输入输出、分支循环控制结构、函数、常用系统调用和文件操作,...