Amit Saxena wrote: > Hi all, > > I am trying to make a perl code which would read a matrix (basically an > array which contains references to other arrays) and initialize a hash with > the first value of each dereferenced array acting as a key and remaining > elements as values using references. > > The source code and output are mentioned below :- > > Source Code > ----------------- > > [root]# cat k1.pl > #! /usr/bin/perl > > use strict; > use warnings; > > my @arr = ( > [1, 2, 3, "a", "b"], > [4, 5, 6, "c", "d"], > [7, 8, 9, "e", "f"] > ); > my @arr1; > my %h; > my $a; > my $key1; > my $i; > my $n; > > print "Matrix is as follows :- \n"; > foreach $a (@arr) > { > print "Row = @{$a}\n"; > > @arr1 = ""; > $n = @{$a}; > > for ($i=1; $i<=$n-1;$i++) > { > $arr1[$i-1] = ${$a}[$i]; > } > > $h{ ${$a}[0] } = [EMAIL PROTECTED]; > > } > > print "Hash is as follows :- \n"; > foreach $key1 (keys %h) > { > print "Key -> [$key1] : Value -> [EMAIL PROTECTED]"; > } > > print "\n"; > [root]# > > > Actual Output > ------------------- > > [root]# perl k1.pl > Matrix is as follows :- > Row = 1 2 3 a b > Row = 4 5 6 c d > Row = 7 8 9 e f > Hash is as follows :- > Key -> [4] : Value -> [8 9 e f] > Key -> [1] : Value -> [8 9 e f] > Key -> [7] : Value -> [8 9 e f] > > [root]# > > > > Expected Output > ------------------- > > [root]# perl k1.pl > Matrix is as follows :- > Row = 1 2 3 a b > Row = 4 5 6 c d > Row = 7 8 9 e f > Hash is as follows :- > Key -> [4] : Value -> [5 6 c d] > Key -> [1] : Value -> [2 3 a b] > Key -> [7] : Value -> [8 9 e f]
The code below doesw what uyou require. HTH, Rob use strict; use warnings; my @arr = ( [qw/ 1 2 3 a b /], [qw/ 4 5 6 c d /], [qw/ 7 8 9 e f /], ); my %h; print "Matrix is as follows :- \n"; foreach $a (@arr) { print "Row = @{$a}\n"; my @vals = @$a; my $key = shift @vals; $h{$key} = [EMAIL PROTECTED]; } print "Hash is as follows :- \n"; foreach my $key (keys %h) { my $val = $h{$key}; print "Key -> [$key] : Value -> [EMAIL PROTECTED]"; } print "\n"; -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/