On Jul 21, 10:28 am, g...@pbwe.com ("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: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to