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/


Reply via email to