#!/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