in reply to Re: array within an array
in thread array within an array

no @charges is just one long list. I am trying to simulate a groups of actually charges for one account, using this trivial example.

ch3 ch4 ch6 as a 'group' are replaced as 'chx' in list(array) in @charges.

Replies are listed 'Best First'.
Re^3: array within an array
by hbm (Hermit) on Oct 07, 2011 at 16:21 UTC

    I think this does what you want:

    use warnings; use strict; my @charges = qw/ch1 ch2 ch3 ch4 ch5 ch6 ch7 ch8 ch1 ch2 ch3 ch4 ch5 ch1 ch2 ch6 ch7 ch4 ch3 ch9 ch2 ch4/; my %bundle1 = map { $_ => 0 } qw(ch3 ch4 ch6); my %b = %bundle1; my @final; my @del; for (@charges) { if (exists $bundle1{$_}) { delete $b{$_}; if (!keys %b) { # seen them all, so reset %b = %bundle1; @del = (); push@final,'chx'; } else { # keep it, in case not all are seen push@del,$_; } } else { push@final,$_; } } push@final,@del; # add back any remainders print "@final\n"; __OUTPUT__ ch1 ch2 ch5 chx ch7 ch8 ch1 ch2 ch5 ch1 ch2 chx ch7 ch9 ch2 ch4 ch3 ch +4

    One possible problem: it will slightly alter the order of your list if a partial bundle is seen.