Jak alokovat pole; jak vytvorik referenci na kopii pole
Honza Pazdziora
adelton na informatics.muni.cz
Úterý Červenec 30 12:35:46 MEST 2002
On Tue, Jul 30, 2002 at 12:04:34PM +0200, Martin Sittek wrote:
> > Jinak samozřejmě
> >
> > @new = @pole;
> >
> > zkopíruje prvky pole bez problémů také.
>
> Ne na skaláry ale na pole (viz. výše uvedený příklad). Výsledek
> by měl odpovídat:
>
> @pole = ([1,2,3], [2,3,4], ...);
>
> No takže ve výsledku to budu asi řešit tak, že se na 'alokaci' vykašlu
> a pro ten druhý případ budy používat [@pole].
Jo, ale to Vám neudělá deep copy. Příklad:
my @a = ( [ 'jezek', 'krtek' ], 5 );
my @n = @{[ @a ]};
print "$a[0][1] $a[1] -> $n[0][1] $n[1]\n";
$a[0][1] = 'slon';
print "$n[0][1]\n";
__END__
krtek 5 -> krtek 5
slon
Mimochodem, možná že to, co hledáte, je Data::Dumper, kterým si
zobrazíte, jak vlastně ty struktury vypadají:
use Data::Dumper;
print Dumper \@a, \@n;
ukáže, že $n[0] je reference na prvek $a[0];
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
... all of these signs saying sorry but we're closed ...
------------------------------------------------------------------------
Další informace o konferenci Perl