sub build_list { ($RECORD,$RI,$RECORDxRI,$RECORDxRI_count_REF,$EACH_RECORD_REF) = @_; %RECORDxRI_count = %$RECORDxRI_count_REF; %EACH_RECORD = %$EACH_RECORD_REF; $RECORDxRI_count{$RECORDxRI}++; $EACH_RECORD{$RECORD} = ''; return(\%RECORDxRI_count,\%EACH_RECORD); } while { @record = split('\t',$_); $RI = @record[38]; ($RECORD,$junk) = split('{',@record[54]); $RECORDxRI = $RECORD . ',' . $RI; ($RECORDxRI_count_REF,$EACH_RECORD_REF) = &build_list($RECORD,$RI,$RECORDxRI,\%$RECORDxRI_count,\%EACH_RECORD); %RECORDxRI_count = %RECORDxRI_count_REF; %EACH_RECORD = %$EACH_RECORD_REF; # NOTE: I have to dereference both hashes # on every iteration of the while loop } # end while data