On Jul 21, 10:28 am, [email protected] ("H Kern") wrote:
> Hi, My first newbie post. I wish to have two arrays indexed by a hash
> table. The simple program below runs and behaves properly initializing the
> hash table with the information I wish it to have.
>
> However, Perl generates the following suggestion on the @header{}
> assignment statements,
>
> "Scalar value @header{"keys"} better written as $header{"keys"} at
> iifm.pl line..."
>
> If I rewrite it as Perl suggests, the two %header{} elements get
> initialized to the size of the arrays instead of the arrays. Why does Perl
> make this suggestion, and how do I get rid of it without getting rid of
> the "use warnings" statement?
>
> Thanks, --H
>
> use strict;
> use warnings;
> my %header;
>
> open( IN, "<", $ARGV[0] );
>
> @header{"keys"} = split(/\t\n/, <IN>);
> @header{"info"} = split(/\t\n/, <IN>);
In perl you cann't store array as value of hash but reference.
maybe following is what you want.
use strict;
use warnings;
my %headers;
open IN, "<$ARGV[0]";
my @v1 = split("\t \n", <IN>);
my @v2 = split("\t \n", <IN>);
$headers{"keys"} = \@v1;
$headers{"info"} = \@v2;
for my $key (keys %headers){
print "$key => @{$headers{$key}}\n";
}
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/