in reply to Re: (Expert) Splicing a slice
in thread (Expert) Splicing a slice
I keep ruminating on this, trying to understand what you're trying to do. I'm guessing that you want to have one master array that holds data and attributes, but you want to be able to grow/shrink the data portion of it, while maintaining the aliases to the attributes. If so, the splice limitation I mentioned above might not be a problem. For example:
use strict; use warnings; use Data::Alias; my @data = ( 1 .. 3 ); my @attributes = ( 'a' .. 'd' ); my @master = ( scalar @data, @data, @attributes ); alias my @alias = @master[ 1 + $master[0] .. $#master ]; print "After alias\n"; print "master: ", join(q{,}, @master ), "\n"; print "attrib: ", join(q{,}, @alias ), "\n"; print "\n"; $alias[0] = 'z'; print "After change\n"; print "master: ", join(q{,}, @master ), "\n"; print "attrib: ", join(q{,}, @alias ), "\n"; print "\n"; splice @master, 2, 0, '6'; $master[0]++; print "After splice\n"; print "master: ", join(q{,}, @master ), "\n"; print "attrib: ", join(q{,}, @alias ), "\n"; print "\n";
Prints
After alias master: 3,1,2,3,a,b,c,d attrib: a,b,c,d After change master: 3,1,2,3,z,b,c,d attrib: z,b,c,d After splice master: 4,1,6,2,3,z,b,c,d attrib: z,b,c,d
The splice happens in the data section, which is not aliased, and it doesn't disturb the alias to the attributes. So offsets you define for specific attributes (from the start of @alias) would be preserved.
-xdg
Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: (Expert) Splicing a slice
by dragonchild (Archbishop) on Sep 28, 2005 at 18:55 UTC | |
|
Re^3: (Expert) Splicing a slice
by ikegami (Patriarch) on Sep 28, 2005 at 16:40 UTC | |
by xdg (Monsignor) on Sep 28, 2005 at 18:19 UTC |