It might not look nice but I would do the following:

#!/usr/local/bin/perl

use strict;
use warnings;

my $arrayref = [ [ [ 'user1', 'c'], [ 'user2', 'a'], [ 'user2', 'b' ],[
'user2', 'd' ],[ 'user3', 'a' ],[ 'user2', 'f' ] ] ];

my %hash;
foreach my $arrayreference ( @{${$arrayref}[0]} ) {
 if ( ! defined $hash{${$arrayreference}[0]} ) {
  $hash{${$arrayreference}[0]} = { group => [ ${$arrayreference}[1] ] };
 } else {
  push @{${$hash{${$arrayreference}[0]}}{group}}, ${$arrayreference}[1];
 }
}

use Data::Dumper;
print Dumper %hash;

It prints:
$ perl test.pl
$VAR1 = 'user1';
$VAR2 = {
          'group' => [
                       'c'
                     ]
        };
$VAR3 = 'user3';
$VAR4 = {
          'group' => [
                       'a'
                     ]
        };
$VAR5 = 'user2';
$VAR6 = {
          'group' => [
                       'a',
                       'b',
                       'd',
                       'f'
                     ]
        };

Which is I believe what you are after right?

Regards,

Rob

On Fri, May 13, 2011 at 12:11 PM, Agnello George
<agnello.dso...@gmail.com>wrote:

> Hi All
>
> I have a small issue in arranging data with a array ref .
>
> $arrayref = [ [ [ 'user1, 'c'], [ 'user2', 'a'], [ 'user2', 'b' ],[
> 'user2', 'd' ],[ 'user3', 'a' ],[ 'user2', 'f' ] ] ];
>
>
> i tried the following
>
> my %sh ;
>
> foreach my $i ( @$arrayref) {
> push (@{$sh{$i->[0]}},{group => [$i->[1]  } );
>   }
>
>
> required hash
>
>  %sh = (  user1 => { group => [  c ] },
>
>            user2 => { group => [ a b d f] },
>
>              user3 => { group => [ a ] }
>  )
>
>
>
> but i am not able to get it in this format .
>
> Can some one please help me out
>
> Thanks a lot
>
>
> --
> Regards
> Agnello D'souza
>
> --
> 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