http://www.perlmonks.org?node_id=1007856


in reply to Re: variable as hash name
in thread variable as hash name

Thank you, Dave. Now, the point is that I'm reading an external file in the following format:

230;238;101;103;138;146;112;116;; 230;238;101;103;146;146;108;112;; 224;238;0;0;146;146;110;118;; 238;238;0;0;146;146;112;114;;

I have an array named @loci_codes with this content:

@loci_codes = qw( Bet01 Bet05 Bet06 Bet12 );

What I want is to read each line ( <> ), split and put the elements in an array

while ( defined( $line = <> ) ) my @alelos = split ";", $line;

Than I want to take the elements of @alelos two by two and put each pair in a different hash. The PROBLEM is that I want each of these hashes to be named after on of the elements of @loci_codes.

while ( @loci_codes ) { $variable = shift @loci_codes; %$variable; $allele1 = shift @alelos; $allele2 = shift @alelos; %$variable{$allele1) += 1; %$variable{$allele2} += 1; }

And doing that for each line of the input, I want to have a hash named after a element of @loci_codes and populated with these pairs.

EXAMPLE:

%Bet01 = ( 230 => 2, 238 => 5, 224 => 1,); %Bet05 = ( 101 => 2, 103 => 2, 0 => 4, ); ...

NOTE: The content of @loci_codes may change according to the input file readed. THATS why I cant use static names for the hashes.