Problem using/creating nested anonymous arrays

M

moller

I'm new to perl but not to programming in general.

I have been trying to put some data into an excel
sheet. And it works fine.... if I hardcode the data.

And I of cource I dont want to do that.


This code works:

my $table = [["040101",11,12,13,14,15],
["040102",21,22,23,24,25],
["040103",31,32,33,34,35],
["040104",41,42,43,44,45],
["040105",51,52,53,54,55]];

$Sheet->Range("A3:E7")->{Value} = $table;



So my (probably stupid) question is:
How do I create the $table array dynamicly?

foreach (sort (keys %My_hash)) {
my $A = $My_hash{$_} { data_a };
my $B = $My_hash{$_} { data_b };
my $C = $My_hash{$_} { data_c };
my $D = $My_hash{$_} { data_d };
my $E = $My_hash{$_} { data_e };

And here I would like to create each "row" in the array

}


I have tried using an normal array like this but this goes wrong.
I get nonsens data in my excel file.

my @arr;

foreach (sort (keys %My_hash)) {
my $A = $My_hash{$_} { data_a };
my $B = $My_hash{$_} { data_b };
my $C = $My_hash{$_} { data_c };
my $D = $My_hash{$_} { data_d };
my $E = $My_hash{$_} { data_e };

push @arr, [$_, $A, $B, $C, $D, $D];
}

$Sheet->Range("A3:E7")->{Value} = @arr;


I'm quite sure ther is somthing basic I'm missing.

Any suggestions apreciated.
 
G

Gunnar Hjalmarsson

I have been trying to put some data into an excel
sheet.

This code works:

my $table = [["040101",11,12,13,14,15],
["040102",21,22,23,24,25],
["040103",31,32,33,34,35],
["040104",41,42,43,44,45],
["040105",51,52,53,54,55]];

$Sheet->Range("A3:E7")->{Value} = $table;

$table is a *reference* to an array of array references.

I have tried using an normal array like this but this goes wrong.
I get nonsens data in my excel file.

my @arr;

foreach (sort (keys %My_hash)) {
my $A = $My_hash{$_} { data_a };
my $B = $My_hash{$_} { data_b };
my $C = $My_hash{$_} { data_c };
my $D = $My_hash{$_} { data_d };
my $E = $My_hash{$_} { data_e };

push @arr, [$_, $A, $B, $C, $D, $D];
}

$Sheet->Range("A3:E7")->{Value} = @arr;

Try to use a *reference* to the array of array references:

$Sheet->Range("A3:E7")->{Value} = \@arr;
 
M

moller

Gunnar Hjalmarsson said:
I have been trying to put some data into an excel
sheet.

This code works:
my $table = [["040101",11,12,13,14,15],
["040102",21,22,23,24,25],
["040103",31,32,33,34,35],
["040104",41,42,43,44,45],
["040105",51,52,53,54,55]];
$Sheet->Range("A3:E7")->{Value} = $table;

$table is a *reference* to an array of array references.

I have tried using an normal array like this but this goes wrong.
I get nonsens data in my excel file.
my @arr;
foreach (sort (keys %My_hash)) {
my $A = $My_hash{$_} { data_a };
my $B = $My_hash{$_} { data_b };
my $C = $My_hash{$_} { data_c };
my $D = $My_hash{$_} { data_d };
my $E = $My_hash{$_} { data_e };
push @arr, [$_, $A, $B, $C, $D, $D];
}
$Sheet->Range("A3:E7")->{Value} = @arr;

Try to use a *reference* to the array of array references:

$Sheet->Range("A3:E7")->{Value} = \@arr;

Gaah!! I could have sworn I already tried that.
Well it works anyway.
Thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,997
Messages
2,570,241
Members
46,831
Latest member
RusselWill

Latest Threads

Top