Problem when using and creating nested (anonymous) arrays.

Discussion in 'Perl' started by moller@notvalid.se, Feb 18, 2004.

  1. Guest

    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.
    , Feb 18, 2004
    #1
    1. Advertising

  2. wrote:
    > I have been trying to put some data into an excel
    > sheet.


    <snip>

    > 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.

    <snip>

    > 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;

    --
    Gunnar Hjalmarsson
    Email: http://www.gunnar.cc/cgi-bin/contact.pl
    Gunnar Hjalmarsson, Feb 18, 2004
    #2
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Reporter
    Replies:
    3
    Views:
    465
    Mike Schilling
    May 12, 2007
  2. Philipp
    Replies:
    21
    Views:
    1,109
    Philipp
    Jan 20, 2009
  3. Replies:
    2
    Views:
    90
  4. wana
    Replies:
    4
    Views:
    131
    Eric Bohlman
    Oct 17, 2004
  5. Replies:
    1
    Views:
    213
Loading...

Share This Page