Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Losing or overwritting values

by RhetTbull (Curate)
on Jan 05, 2003 at 01:22 UTC ( #224349=note: print w/ replies, xml ) Need Help??


in reply to Losing or overwritting values

Here's the problem (or one of them):

while (<USEDPW>) { my $pw = @chars[map{rand @chars} (1..17)]; } unless ($_ ne my $usedpw) { print "Your unique ID is: $pw\n"; } my $pw; open(USEDPW, "> $usedpw") or die "crap on me for writing $!"; flock USEDPW, 2; print USEDPW "$pw\n";
You have 2 separate variables named $pw. You used my which is a Good Thing but forgot that my lexically scopes your variables. That means that the my $pw inside the while(<USEDPW>) loop is a completely different variable than the one declared outside the loop. pfaut fixed it in his post but didn't tell you why he did it. You need to declare the $pw variable outside the loop so it stays in scope. For example:
#notice we declare it OUTSIDE the loop my $pw; while (<USEDPW>) { $pw = @chars[map{rand @chars} (1..17)]; } unless ($_ ne my $usedpw) { print "Your unique ID is: $pw\n"; } open(USEDPW, "> $usedpw") or die "crap on me for writing $!"; flock USEDPW, 2; print USEDPW "$pw\n";
You should have gotten a "Use of uninitialized value in print" warning when you ran your code.


Comment on Re: Losing or overwritting values
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://224349]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (12)
As of 2015-07-30 10:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (271 votes), past polls