小编Lig*_*ger的帖子

令人费解的是Perl本地my(数组)就像一个全局变量,在后续迭代中很脏

只是想知道为什么@b表现得像全局,每次调用子程序时都必须重置.我的(变量)不应该超过例程,但这个是持久的.第一次迭代可以工作,但是后续的迭代会在没有for循环设置为0的情况下被破坏.

另外,@ b没有响应; 打印加入(); @ B =(0)X @ $一个; 映射; 或者对它的任何其他调用,除了直接查询$ b(#)之外什么都没有.不可能是Perl盔甲的缝隙,不是吗?

是的,如果我注释掉第一次迭代和for循环,第二次迭代会起作用,但后续的迭代不起作用.

sub firstDupe {
    my ($a) = @_;
    my @b;
    # need for next line inexplicable, @b acts like global, ideas?
    my $l = scalar(@{$a})+1; for ($i=0; $i < $l; $i++){ $b{$i}='0'; }
    for (@{$a}){
        return int($_) if $b{$_}++;
    }
    return -1;
}

my @pb= (2, 1, 3, 5, 3, 2);
$val=&firstDupe(\@pb);
my $ret="\nRet: $val";

@pb= (2, 4, 3, 5, 1);
$val=&firstDupe(\@pb);
$ret = $ret.", $val";

@pb= (1); …
Run Code Online (Sandbox Code Playgroud)

perl

4
推荐指数
1
解决办法
104
查看次数

Perl(使用CGI)如果没有包或对象引用,则无法调用方法"header"

好吧,十年来第一次使用Perl,有点生疏.从那时起思考也许是一些更新(天才吧?)

Alrighty,这是Perl 5,版本16,颠覆3 x86_64-linux-thread-multi,在AWS micro上有29个已注册的补丁.

Perl附带了它,我只是安装了perl-CGI perl-Data-Dumper

#!/usr/bin/perl
use CGI;                                        # load cgi routines
my $q = CGI>new;                                # cgi object
print   $q->header(),
        $q->start_html("Hello World"),
        $q->h1('Hello'),
        $q->end_html;
~
Run Code Online (Sandbox Code Playgroud)

当我逐步构建程序时,似乎有一个简单而直截了当的可能性.但是如果我在命令行(或浏览器)运行它,我会遇到错误.

如果没有创建第4行的包或对象引用,则无法调用方法"header".

第4行是打印$ q-> header(); "create"是文件名.

有任何想法吗?让我了解Perl 2017的最新消息?生锈的问题总是非常简单.

oop perl cgi

0
推荐指数
1
解决办法
88
查看次数

标签 统计

perl ×2

cgi ×1

oop ×1