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]