From: Kevin Pfeiffer <[EMAIL PROTECTED]>
> In article <[EMAIL PROTECTED]>, Jenda Krynicky wrote:
> 
> > From: [EMAIL PROTECTED]
> >> What I am trying to do is to take lines out of a file that are
> >> formatted like:
> >> 
> >> SYSTEM="value1" DOMAIN="value2" etc.
> >> 
> >> There are about 1000 lines like that and what I need to do is to
> >> take all of the keys (like system and domain) and put them into a
> >> hash. But each of those keys has multiple values that it can have.
> >> I need to then stick the values that each one has throughout the
> >> file into an array, and put the array into the hash. It will be
> >> like this:
> >> 
> >> 
> >> KEYS                     VALUES
> >> system                [value1, value2, value3...]
> >> domain                [value1, value2, value3...]
> >> 
> >> I then need to print them out. How would I go about doing this?
> > 
> > Assuming the variable names are words and the values are always
> > quoted and do not span several lines you could do something like
> > this:
> > 
> > while (<FILE>) {
> > while (/(\w+)="([^"]*)"/g) {
> > push @{$data{$1}}, $2;
> > }
> > }
> 
> Here is my attempt...
> 
> my %sys;
> while (<DATA>) {
>    my (undef, $system, undef, $domain) = split /"/, $_;
>    push @{$sys{$system}}, $domain;
> }
> 
> I split on the quote mark (so they had better be there). I'm pretty
> sure there is a way to use an array slice to pull just the 2nd and 4th
> value, but I can't remember the syntax and so settled for the "(undef,
> $keep_this, undef, etc...)" trick.

my ($system, $domain) = (split /"/, $_)[1,3];

HTH, Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
        -- Terry Pratchett in Sourcery


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to