Jdavis wrote:
> hello,
> I have a hash. To use this hash with a module I need it in this form...
>
> @data = (
> ["12am","1am","2am","3am","4am","5am","6am", "7am", "8am"], ### key
> [ 251, 102, 55, 36, 113, 200, 32, 99, 4], ###val
> );
>
> I confused.. How could I get a hash to the above structure
Hi 'J'. ( It'd be nice to know a name! )
I think the following does what you want. I've written some code to buil
a %data hash as I think you have it from the contents of your post. The final
'while' loop is the bit you're interested in: it takes the hash and builds the
@data array from it as you've described. I've dumped the hash and the array
so that you can see what's in them.
Cheers,
Rob
use strict;
use warnings;
use Data::Dumper;
# Build the array from the supplied data
#
my @data;
while ( <DATA> ) {
next unless /\[/;
s/#.+$//;
push @data, [/\w+/g];
}
die unless @data == 2;
die unless @{$data[0]} == @{$data[1]};
# Build the 'source' hash as I imagine it to be
#
my %data;
@[EMAIL PROTECTED] = @{$data[1]};
# Empty the @data array and rebuild it from the hash
#
@data = ();
while (my ($k, $v) = each %data) {
push @{$data[0]}, $k;
push @{$data[1]}, $v;
}
# Show what we've done
#
print Data::Dumper->Dump([\%data, [EMAIL PROTECTED], [qw(*data *data)]);
__END__
@data = (
["12am","1am","2am","3am","4am","5am","6am", "7am", "8am"], ### key
[ 251, 102, 55, 36, 113, 200, 32, 99, 4], ###val
);
output
%data = (
'3am' => '36',
'12am' => '251',
'4am' => '113',
'5am' => '200',
'1am' => '102',
'6am' => '32',
'7am' => '99',
'2am' => '55',
'8am' => '4'
);
@data = (
[
'3am',
'12am',
'4am',
'5am',
'1am',
'6am',
'7am',
'2am',
'8am'
],
[
'36',
'251',
'113',
'200',
'102',
'32',
'99',
'55',
'4'
]
);
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]