我不确定这段代码是怎么回事,我相信它与我的变量的范围有关,但是从"我的"到"我们的"没有做任何事情。错误出现在第二个if块中,我试图让它打印$ question1,perl说" $ question1需要一个特定的包名"。那里的代码只是对我稍后在程序中需要做的测试。我只需要$ question变量就可以在整个程序中使用。
foreach my $line ( split /:/, $test ) {
my $match1 = "1";
my $match2 = "2";
if ( $line =~ /$match1/ ) {
my $question1 = $line;
print "$question1\n";
}
if ( $line =~ /$match2/ ) {
my $question2 = $line;
print "$question2\n";
print "$question1\n";
}
}
答案 0 :(得分:2)
要将变量的范围增加到某个块之外,您需要将其声明移到该块之外,如下所示:
my ($question1, $question2); # both are now initialized to undef
foreach my $line (split /:/, $test) {
my $match1 = "1";
my $match2 = "2";
if ($line =~ /$match1/) {
$question1 = $line; # NOT declaring with 'my', JUST assigning
}
if ($line =~ /$match2/) {
$question2 = $line; # NOT declaring with 'my', JUST assigning
}
}