You see, is not that I'm not open to alternatives. Is just that I read a lot of foruns adressing this problem (of use variavles as variables name) and as much as I tried, I was unable to use hash of hashes to solve my needs.
So I wanted to use the dirt way because I needed to solve it fast. But YES, I would like to improve my code to not have to disable strict. And I am thankfull for your help.
So here is the code I'm using now. Any improvement is welcome.
#!/usr/bin/perl
#use strict;
use warnings;
my $input_data = << 'REPORT_OF_INPUT';
Bet01;;Bet05;;Bet06;;Bet12;;
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;;
REPORT_OF_INPUT
my @inputs = split "\n", $input_data;
my $line = shift @inputs;
$line =~ s/;;/;/g;
my @loci_codes = split ";", $line;
foreach $line ( @inputs )
{
my @alelos = split ";", $line;
foreach my $locus ( @loci_codes )
{
no strict 'refs';
my $allele1 = shift @alelos;
my $allele2 = shift @alelos;
${$locus}{$allele1} += 1;
${$locus}{$allele2} += 1;
}
}
foreach $locus ( @loci_codes )
{
foreach my $key ( keys ( %{$locus} ) )
{
print "$locus ", $key, " = ", $$locus{$key}, "\n";
}
}
I'm using the data inside the code here just to make it easier for decode. But in my real program the content of $input_data will come from an external file. So its content may vary.
-
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.
|