On Fri, Mar 7, 2008 at 5:10 AM, Philipp Knechtle <[EMAIL PROTECTED]> wrote:
> Hi
> I am working with subarrays in a main array. When I copy the main array:
>
> my @mainarray = ([1,2,3],[4,5,6],[7,8,9])
> my @arraytwo = @mainarray
>
> the references get copied. When I then modify the subarray data in
> @arraytwo they are of course also modified in @mainarray.
>
> So I use the command:
>
> push @arraytwo, [EMAIL PROTECTED] for @mainarray
>
> to copy the array. Is there a nicer way to do it?
What you want is a deep copy. The easiest way to get a deep copy is
to use dclone from Storable*:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use Storable qw<dclone>;
my @mainarray = ([1,2,3],[4,5,6],[7,8,9]);
my @arraytwo = @{dclone([EMAIL PROTECTED])};
@{$arraytwo[0]} = reverse @{$arraytwo[0]};
print Dumper([EMAIL PROTECTED], [EMAIL PROTECTED]);
* see perldoc Storable or http://perldoc.perl.org/Storable.html
--
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/