Problem when using and creating nested (anonymous) arrays.

M

moller

I'm reposting this under a more appropriate subject
since excel really has nothing to do with my problem.



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;
 

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,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top