in reply to %+ and cloning
Try this version of your code that uses Data::Dump and things become obvious:
#! perl -slw use strict; use warnings; use Storable qw(dclone); use Data::Dump qw[ pp ]; my $str = "Rico"; $str =~ m{(?<name>ico)}xms; my $match = dclone \%+; print \%+,; print " match: $match -", pp $match; $str =~ m{(?<buba>R)}xms; my $match2 = dclone \%+; print \%+; print " match: $match ", pp $match; print "match2: $match2 ", pp $match2; __END__ C:\test>816700 HASH(0x22ee20) match: HASH(0x6f218) -{ # tied Tie::Hash::NamedCapture } HASH(0x22ee20) match: HASH(0x6f218) { # tied Tie::Hash::NamedCapture } match2: HASH(0x6f128) { # tied Tie::Hash::NamedCapture }
%+ is not a real hash, but rather a tied hash. And cloning it appears to simply gives you another tied reference to the same global internal data structure.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: %+ and cloning
by PetaMem (Priest) on Jan 11, 2010 at 12:30 UTC | |
by BrowserUk (Patriarch) on Jan 11, 2010 at 13:04 UTC | |
by JavaFan (Canon) on Jan 11, 2010 at 16:39 UTC | |
by JavaFan (Canon) on Jan 11, 2010 at 12:40 UTC |