Perl,在循环的内部使用变量,而在循环的外部使用变量?
这看起来很简单,但由于我是perl新手,所以很难理解。。我已经看过很多关于循环的文档了,我仍然被这个问题难住了。。。我有一个包含while循环的sub,我想在循环之外的循环中使用一个变量值(在循环运行之后),但是当我尝试打印出变量或从sub返回变量时,它不起作用,只有在从循环中打印变量时它才起作用。。如果你能告诉我我做错了什么,我将不胜感激 不工作(不打印$test):Perl,在循环的内部使用变量,而在循环的外部使用变量?,perl,variables,loops,scope,while-loop,Perl,Variables,Loops,Scope,While Loop,这看起来很简单,但由于我是perl新手,所以很难理解。。我已经看过很多关于循环的文档了,我仍然被这个问题难住了。。。我有一个包含while循环的sub,我想在循环之外的循环中使用一个变量值(在循环运行之后),但是当我尝试打印出变量或从sub返回变量时,它不起作用,只有在从循环中打印变量时它才起作用。。如果你能告诉我我做错了什么,我将不胜感激 不工作(不打印$test): subtestthis{ $i=1; 而($i您在循环内声明变量test,因此它的作用域是循环,一旦您离开循环,变量就不再声明
subtestthis{
$i=1;
而($i您在循环内声明变量test,因此它的作用域是循环,一旦您离开循环,变量就不再声明。
将my$test;
添加到$i=1
和while(…)
之间,它将起作用。作用域现在将是整个子循环,而不仅仅是循环将my$test
放在while循环之前。请注意,它将只包含在while循环中分配的最后一个值。这就是您想要的吗
// will print "it's working" when 'the loop is hit at least once,
// otherwise it'll print "it's not working"
sub testthis {
$i = 1;
my $test = "it's not working";
while ($i <= 2) {
$test = "it's working";
$i++ ;
}
print $test ;
}
//将在“循环至少命中一次”时打印“它正在工作”,
//否则它会打印“它不工作”
子测试此{
$i=1;
my$test=“它不工作”;
而($i你可以试试这个:
sub testthis {
my $test
$i = 1;
while ($i <= 2) {
$test = 'its working' ;
$i++ ;
print $test ;
}
}
subtestthis{
我的$test
$i=1;
虽然($i啊,好的,我现在明白了..谢谢..我一直在看的教程太基础了,甚至没有提到这一点,我想我应该从现在开始直接转到perl手册页$i=1;
应该是我的$i=1;
,按照现在的方式,您正在与外部范围中的变量$i
对话,这将是一旦您开始从其他子例程内部调用子例程,就会出现错误源。$i
很可能甚至没有在外部作用域中声明,在这种情况下,您正在与包变量对话。如果您在使用strict;使用warnings;
下运行,则strict
杂注将引发错误r关于未声明的变量。
// will print "it's working" when 'the loop is hit at least once,
// otherwise it'll print "it's not working"
sub testthis {
$i = 1;
my $test = "it's not working";
while ($i <= 2) {
$test = "it's working";
$i++ ;
}
print $test ;
}
sub testthis {
my $test
$i = 1;
while ($i <= 2) {
$test = 'its working' ;
$i++ ;
print $test ;
}
}