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/