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.

Recommended Answers

All 2 Replies

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.