so how is that superior to using an explicit "name" level in your hash? Using a variable as a name simply introduces exactly the same effect as adding a "name" level to a hash, but you have no easy way to debug your code. If you use a conventional hash you can use modules like Data::Dump (or better still, use an IDE or the debugger) to inspect the contents of the hash for debugging purposes. Consider:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dump;
my @loci_codes = qw( Bet01 Bet05 Bet06 Bet12 );
my %data;
for my $dataIn (
qw(
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;;
)
)
{
my @alelos = split ";", $dataIn;
for my $code (@loci_codes) {
++$data{$code}{shift @alelos};
++$data{$code}{shift @alelos};
}
}
Data::Dump::dump(\%data);
for my $code (@loci_codes) {
print "$code: ";
print join ', ',
map {"$_ ($data{$code}{$_})"} sort {$a <=> $b} keys %{$data{$c
+ode}};
print "\n";
}
prints:
{
Bet01 => { 224 => 1, 230 => 2, 238 => 5 },
Bet05 => { "0" => 4, "101" => 2, "103" => 2 },
Bet06 => { 138 => 1, 146 => 7 },
Bet12 => { 108 => 1, 110 => 1, 112 => 3, 114 => 1, 116 => 1, 118 =>
+1 },
}
Bet01: 224 (1), 230 (2), 238 (5)
Bet05: 0 (4), 101 (2), 103 (2)
Bet06: 138 (1), 146 (7)
Bet12: 108 (1), 110 (1), 112 (3), 114 (1), 116 (1), 118 (1)
True laziness is hard work
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.