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.

-K

-- 
Kevin Pfeiffer
International University Bremen

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

Reply via email to