--- "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
____________________________________________________________________________________
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/