我的变量 $x 掩盖了同一语句中较早的声明

问题描述 投票:0回答:2

我对这个错误感到困惑。该程序接受用户输入 1 2 3 2 并以特定顺序显示输入。

#!/usr/bin/perl -w
use strict;
use warnings;

print "Enter a number :";

my $num = <STDIN>;
chomp($num);

my @final = split(' ',$num);
my @count;
foreach my $x (@final){

 $count[my $x]++;

}
foreach my $x (@count){

    print my $x .$count[my $x];
}

我的输出:我收到此错误:

“my”变量 $x 掩盖了第 19 行同一语句中的早期声明

预期输出:

  • 1 1
  • 2 2
  • 3 1
perl
2个回答
8
投票

您使用

my
有点过于频繁了。

my
用于声明当前作用域的变量(通常是块
{...}
)。

使用变量,您不需要

my

因此,在第一个循环中,执行以下操作:

$count[ $x ]++;

在第二个循环中:

print "$x: $count[ $x ]\n";

参见 perldoc -f myPrivate-Variables-via-my


-1
投票

在我们的例子中,我们尝试了这并没有多大帮助,只是删除了我多余的陈述。此建议引发错误 Use of uninitialized value $x in array element at ./test.cgi line & Use of uninitialized value $x in concatenation (.) or string at

© www.soinside.com 2019 - 2024. All rights reserved.