in reply to Reference Question

Move my @doc inside the loop so you get a new instance of the doc array each time through. Consider:

use strict; use warnings; my @doc_nums = qw(1 2 3 4 5 6 7 8 9); my @docs; foreach( @doc_nums ) { my @doc; push @doc, int rand 10 for 1..3; push @docs, \@doc; } print "@$_\n" for @docs;

Prints:

9 5 8 9 5 7 2 2 1 3 0 4 8 6 4 6 1 7 6 5 5 8 6 9 9 9 7

or you could change the reference to a copy:

use strict; use warnings; my @doc_nums = qw(1 2 3 4 5 6 7 8 9); my @docs; my @doc; foreach( @doc_nums ) { @doc = (); push @doc, int rand 10 for 1..3; push @docs, [@doc]; } print "@$_\n" for @docs;

DWIM is Perl's answer to Gödel