我有3个数组,然后我打开一个txt文件,其中包含firstname,lastname和email(单独包含一些html代码,如下所示)
<first>Mike<first>
<sec>stone<sec>
<email>mike@rt.com<email>
我首先计算文件中的行,然后我解析这个文件并将第一个,最后一个和电子邮件放在3个不同的数组中,然后从每个数组元素中删除htmls标记。但是我面临的问题就像全局符号在删除html标签时在其中一个变量中需要显式包名,即使我已经用我的声明了 这是片段
if ( $ct <= $end ) {
my $i = 0;
}
$ct++;
}
my $j = 0;
my $l = @lines;
while ( $j < $l ) {
if ( $lines[$j] =~ m/@/ ) {
50 $line[$i] = $lines[$j];
51 $j = $j - 3;
52 $last[$i] = $lines[$j];
53 $j++;
54 $first[$i] = $lines[$j];
55 $i++;
56 $j = $j + 7;
57;
}
else 58 {
59 $j++;
60
}
我得到的错误就像
Global symbol "$i" requires explicit package name at pqwe.pl line 50.
Global symbol "$i" requires explicit package name at pqwe.pl line 53.
Global symbol "$i" requires explicit package name at pqwe.pl line 55.
Global symbol "$i" requires explicit package name at pqwe.pl line 56.
Execution of pqwe.pl aborted due to compilation errors.
答案 0 :(得分:2)
您需要将$i
声明移出if
块。检查以下代码:
#!/usr/bin/perl
use strict;
use warnings;
my $var = 1;
if ( $var eq 1)
{
my $i = 100;
}
print $i."\n";
输出:
# perl test.pl
Global symbol "$i" requires explicit package name at test.pl line 12.
Execution of test.pl aborted due to compilation errors.
现在,我将$i
声明移出if
块:
#!/usr/bin/perl
use strict;
use warnings;
my $i;
my $var = 1;
if ( $var eq 1)
{
$i = 100;
}
print $i."\n";
输出:
# perl test.pl
100
在perl文档中阅读有关它的更多信息:http://perldoc.perl.org/perlintro.html#Variable-scoping 和http://perlmaven.com/scope-of-variables-in-perl