这看起来非常简单,但是由于我不熟悉perl,这让我很难搞清楚。我现在一直在寻找关于循环的大量文档,我仍然对此感到难过......我有一个包含while循环的sub,我想在循环外部的循环中使用一个变量值(在循环运行之后),但是当我尝试打印出变量,或者将它返回到sub时,它不起作用,只有当我从循环中打印变量才能正常工作..我会很感激任何关于我做错的建议。
不起作用(不打印$ test):
sub testthis {
$i = 1;
while ($i <= 2) {
my $test = 'its working' ;
$i++ ;
}
print $test ;
}
&testthis ;
Works,打印$ test:
sub testthis {
$i = 1;
while ($i <= 2) {
my $test = 'its working' ;
$i++ ;
print $test ;
}
}
&testthis ;
答案 0 :(得分:9)
在循环中声明变量测试,因此它的作用域是循环,一旦离开循环,变量就不再声明了。
在my $test;
和$i=1
之间添加while(..)
即可。范围现在将是整个子而不是仅循环
答案 1 :(得分:5)
在while循环之前放置my $test
。请注意,它仅包含在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 ;
}
答案 2 :(得分:3)
你可以尝试这个:
sub testthis {
my $test
$i = 1;
while ($i <= 2) {
$test = 'its working' ;
$i++ ;
print $test ;
}
}
&amp; testthis;
注意:每当编写perl代码时,最好在代码的开头添加use strict;
和use warning
。