开发者

Perl, using variable from within While loop outside of the loop?

开发者 https://www.devze.com 2023-01-07 11:15 出处:网络
This seems really simple but it is giving me a hard time figuring it out as I\'m new to perl.. I\'ve been looking through a lot of documentation now about loops and I am still stumped by this... I hav

This seems really simple but it is giving me a hard time figuring it out as I'm new to perl.. I've been looking through a lot of documentation now about loops and I am still stumped by this... I have a sub that contains a while loop and I want to use a variable value from within the loop outside of the loop (after the loop has run), however when I try to print out the variable, or return it out of the sub, it doesn't work, only when I print the variable from within the loop does it work.. I would appreciate any advice as to what I'm doing wrong.

Doesn't work (doesn't print $test ):

sub testthis {    
    $i = 1;
    while ($i <= 2) {    
        my $test = 'its w开发者_JS百科orking' ;    
        $i++ ;
    }
    print $test ;
}

&testthis ;

Works, prints $test:

sub testthis {
    $i = 1;
    while ($i <= 2) {
        my $test = 'its working' ;
        $i++ ;
        print $test ;
    }
}

&testthis ;


You declare variable test inside the loop, so it scope is the loop, as soon as you leave the loop the variable is not longer declared.
Add my $test; just between $i=1 and while(..) and it will work. The scope will now be the entire sub instead of only the loop


Place my $test before the while loop. Note that it will only contain the last value that is assigned in the while loop. Is that what you are after?

// 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 ;
}


you can try this one:

sub testthis {
my $test
$i = 1;
while ($i <= 2) {

$test = 'its working' ;

$i++ ;

print $test ;
}

}

&testthis ;

Note: whenever write perl code, its better to add use strict; and use warning in the beginning of the code.

0

精彩评论

暂无评论...
验证码 换一张
取 消