【发布时间】:2010-07-14 09:09:33
【问题描述】:
这看起来很简单,但我很难弄清楚,因为我是 perl 的新手。我现在一直在浏览很多关于循环的文档,但我仍然对此感到困惑......我有一个包含 while 循环的子程序,我想在循环外的循环内使用变量值(在循环运行后),但是当我尝试打印出变量或将其从子程序中返回时,它不起作用,只有当我从循环中打印变量时它才会起作用。我将不胜感激任何关于我做错了什么的建议。
不起作用(不打印 $test ):
sub testthis {
$i = 1;
while ($i <= 2) {
my $test = 'its working' ;
$i++ ;
}
print $test ;
}
&testthis ;
工作,打印 $test:
sub testthis {
$i = 1;
while ($i <= 2) {
my $test = 'its working' ;
$i++ ;
print $test ;
}
}
&testthis ;
【问题讨论】:
-
$i = 1;应该是my $i = 1;,现在的方式是,您正在与外部范围内的变量$i交谈,一旦您开始,这将成为错误的来源从其他子程序内部调用子程序。很有可能$i甚至没有在外部作用域中声明,在这种情况下,您正在与包变量对话。如果你在use strict; use warnings;下运行,那么strict杂注会抛出关于未声明变量的错误。
标签: perl variables loops scope while-loop