--- "D. Bolliger" <[EMAIL PROTECTED]> wrote: > klute am Montag, 9. Juli 2007 23:04: > > --- Chris Charley <[EMAIL PROTECTED]> wrote: > > > ----- Original Message ----- > > > From: "klute" <[EMAIL PROTECTED]> > > > Newsgroups: perl.beginners > > > To: <beginners@perl.org> > > > Sent: Monday, July 09, 2007 4:20 PM > > > Subject: Help needed created this data structure > > > > > > > Hi All, > > > > > > > > I am new to Perl and was hoping to get advice > on > > > > creating the following data structure: > > > > > > > > I have an Affiliate Parent Groups, Affiliate > > > > > > Groups, > > > > > > > and Affiliates. Each affiliate has > affiliateId, > > > > affiliateName. > > > > > > > > I guess what I'd like to have is an array of > > > > > > hashes > > > > > > > where the array would contain Affiliate Parent > > > > > > Groups. > > > > > > > Each item in the array would contain a hash > map > > > > > > with > > > > > > > Affiliate Group name as the key and An array > of > > > > Affiliates (each having AffiliateId and > > > > > > AffiliateName) > > > > > > > as the value. > > > > > > > > How would I go about creating such structure > and > > > > adding values to it in a loop? > > > > > > > > Any help will be greatly appreciated! > > > > > > > > James > > > > > > Its hard to see what structure you want without > some > > > sample data. > > > Send some data as it is in the file. > > > > > > Have you tried any coding yet? > > > > > > Chris > > Hi Chris, > > > > I did try coding this but I am afraid to confuse > > everyone with what I came up with so far. I can > paste > > what I have if you feel that it would help. > > > > Here is the sample data: > > > > Affiliate Parent Group: Google > > -> Affiliate Group: Google Advertiser > > --> Affiliate (Aff Id: 1, Aff Name: Frank) > > --> Affiliate (Aff Id: 2, Aff Name: Mary) > > > > -> Affiliate Group: Google Publisher > > --> Affiliate (Aff Id: 3, Aff Name: Lori) > > --> Affiliate (Aff Id: 4, Aff Name: Mike) > > > > > > Affiliate Parent Group: Yahoo > > -> Affiliate Group: Yahoo Advertiser > > --> Affiliate (Aff Id: 5, Aff Name: Marlene) > > --> Affiliate (Aff Id: 6, Aff Name: Larry) > > -> Affiliate Group: Yahoo Publisher > > --> Affiliate (Aff Id: 7, Aff Name: Alex) > > --> Affiliate (Aff Id: 8, Aff Name: Glenn) > > Hello Klute > > (please don't top post to keep the conversation > readable) > > The following script extracts the information out of > your sample data. > There are no checks if the data format is "correct" > (nesting order, additional > text). > > It does not result in an array of hashes, but in a > single hash. > Modify it if needed :-) > > Dani > > > #!/usr/bin/perl > > use strict; > use warnings; > > use Data::Dumper; > > my %data; > > # holds the current first and second level > # > my ($parent_group, $aff_group); > > while (<DATA>) { > > # a loop block, so we can use next > { > # skip blank lines > /^\s*$/ > and next; > > # record current first level > /^A.*?: (.*)/ and $parent_group=$1 > and next; > > # record current second level > /^\s+->.*?: (.*)/ and $aff_group=$1 > and next; > > # fill %data, with completed three levels > /-->.*?: (\d+).*?: (\w+)/ > and > $data{$parent_group}{$aff_group}{$1}=$2; > } > > } > > print Data::Dumper::Dumper \%data; > > > __DATA__ > Affiliate Parent Group: Google > -> Affiliate Group: Google Advertiser > --> Affiliate (Aff Id: 1, Aff Name: Frank) > --> Affiliate (Aff Id: 2, Aff Name: Mary) > > -> Affiliate Group: Google Publisher > --> Affiliate (Aff Id: 3, Aff Name: Lori) > --> Affiliate (Aff Id: 4, Aff Name: Mike) > > > Affiliate Parent Group: Yahoo > -> Affiliate Group: Yahoo Advertiser > --> Affiliate (Aff Id: 5, Aff Name: Marlene) > --> Affiliate (Aff Id: 6, Aff Name: Larry) > -> Affiliate Group: Yahoo Publisher > --> Affiliate (Aff Id: 7, Aff Name: Alex) > --> Affiliate (Aff Id: 8, Aff Name: Glenn) >
Thanks guys for your replies. It works! So what data structure am I dealing with here? $data{$parent_group}{$aff_group}{$1}=$2; Best, James ____________________________________________________________________________________ Take the Internet to Go: Yahoo!Go puts the Internet in your pocket: mail, news, photos & more. http://mobile.yahoo.com/go?refer=1GNXIC -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/