--- klute <[EMAIL PROTECTED]> wrote:
>
> --- "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: <[email protected]>
> > > > 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
>
Also, I am not quite sure how to iterate through this
structure and print its contents without using Dumper.
Can anyone help?
Thanks very much!
James
____________________________________________________________________________________
Get the free Yahoo! toolbar and rest assured with the added security of spyware
protection.
http://new.toolbar.yahoo.com/toolbar/features/norton/index.php
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/