oakbox has asked for the wisdom of the Perl Monks concerning the following question:
I have a real pickle of a problem here and I'm not even sure how to googlefoo this one. I have an array reference. I am pushing hashrefs onto it. These arrays are being cloned if they are substantially *similar*. If they are different ENOUGH, a new, unique, hashref is pushed onto the arrayref. If they are too similar, then they are cloned? I'm not even really sure about *how* different the hashrefs need to be before the elements are not cloned.
Here is some code:
#!/usr/bin/perl use strict; my $Action; my $piece; $piece->{this} = 123; $piece->{that} = 'some text'; foreach my $other (111...113){ $piece->{theother} = $other; push(@{$Action}, $piece); } use Data::Dumper; print Dumper($Action); foreach my $section (@{$Action}){ print Dumper($section) . "\n"; }
What I EXPECT to get out of this is an arrayref of hashreferences that are slightly different (different values for 'theother' key).
$Action->[ { this => 123, that => 'some text', theother => 111 }, { this => 123, that => 'some text', theother => 112 }, { this => 123, that => 'some text', theother => 113 } ]
What the actual output is:
$VAR1 = [ { 'that' => 'some text', 'theother' => 113, 'this' => 123 }, $VAR1->[0], $VAR1->[0] ]; $VAR1 = { 'that' => 'some text', 'theother' => 113, 'this' => 123 }; $VAR1 = { 'that' => 'some text', 'theother' => 113, 'this' => 123 }; $VAR1 = { 'that' => 'some text', 'theother' => 113, 'this' => 123 };
What is going on here? This seems like some sort of memory optimization gone wrong. Is there any way I can 'force' perl to *do what I mean* in this case?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Unwanted cloning of array elements
by hippo (Archbishop) on May 07, 2021 at 10:26 UTC | |
by oakbox (Chaplain) on May 07, 2021 at 10:37 UTC | |
by AnomalousMonk (Archbishop) on May 07, 2021 at 11:19 UTC | |
|
Re: Unwanted cloning of array elements
by bliako (Abbot) on May 07, 2021 at 11:35 UTC | |
|
Re: Unwanted cloning of array elements
by Anonymous Monk on May 07, 2021 at 10:42 UTC |