Im following a perl book, and one exercise has you enter a number, sum them up until you type 999(the exit code). Their example works, but when I try using use strict, I cant figure out how to get the variable in the while loop to go global

Here's what I tried:

#!/usr/bin/perl -w
use strict;
my $n = 0;

while ($n != 999) {
    my $sum += $n;
    print "Enter a number, 999 to stop: ";
    $n = <STDIN>;
}

print "the sum is ", $sum;

Ive read its best to use strict in code, so its why im asking.

You have to define the variable in scope outside the loop. By using "my" inside, it loses scope outside.

#!/usr/bin/perl -w
use strict;
my $n = 0;
my $sum=0;
while ($n != 999) {
    $sum += $n;
    print "Enter a number, 999 to stop: ";
    $n = <STDIN>;
}
 
print "the sum is ", $sum;

You have to define the variable in scope outside the loop. By using "my" inside, it loses scope outside.

#!/usr/bin/perl -w
use strict;
my $n = 0;
my $sum=0;
while ($n != 999) {
    $sum += $n;
    print "Enter a number, 999 to stop: ";
    $n = <STDIN>;
}
 
print "the sum is ", $sum;

Thanks :)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.