--- 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: <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
> 

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/


Reply via email to