in reply to accessing hash
I had to indent your code before I was able to read it. Then I simplified it a bit, so that I could execute it (I needed a substitute for your data file):
#!/usr/bin/perl use warnings; $putword=0; $q63=7; &getfile("query63.txt"); sub getfile { @data=(1); for($i=0; $i<=$#data;$i++){ $index=$i; @words=split(/\s+/,$data[$index]); if(3==2) { if (1 != 0){ } } else { @words = split(/\s+/,$data[$index]); %query=(2 =>{ctf=>5, df=>5, 1=>{doclen =>42, tf =>5, } }, ); #When I write here,I can get value..here inside the loop + print "inside ",$query{2}{1}{doclen},"\n"; } } #when I write here,I got nothing,,this is outside of loop.. print "outside ", $query{2}{1}{doclen},"\n"; } # prints: #inside 42 #outside 42
The output was as expected quite sensible. So if you don't get anything outside the loop, your loop probably deleted or overwrote again the data it printed inside the loop
Very good advice from toolic, especially Data::Dumper should help you greatly in finding the problem.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: accessing hash
by sierpinski (Chaplain) on May 28, 2010 at 16:40 UTC | |
|