Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: array within an array

by aartist (Scribe)
on Oct 07, 2011 at 14:40 UTC ( #930196=note: print w/ replies, xml ) Need Help??


in reply to array within an array

You need to define 'charges' properly. Do you mean to say?

@charges = ( [qw/ch1 ch2 ch3 ch4 ch5 ch6 ch7 ch8/], [qw/ch1 ch2 ch3 ch4 ch5/], [qw/ch1 ch2 ch6 ch7/], [qw/ch4/], [qw/ch3 ch9/], [qw/ch2 ch4/], )
I am inclined to provide this as you said in other comment that last ch4 should not be replaced with 'chx'.


Comment on Re: array within an array
Download Code
Re^2: array within an array
by cesear (Novice) on Oct 07, 2011 at 15:18 UTC
    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.

      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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://930196]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (4)
As of 2015-07-04 17:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls