> Thank you, John. This code does exactly what I want. Problem > is, I only understand about 30% of what's going on. I can > figure out the use of the hash, some of the pattern matching > & $1/$2. But can someone elaborate on: > > @keys{ qw/P ST U SL D/ } = \( $Proc, $Start, $Url, $Sleep, $Drive );
This is a shortcut for defining the values of a hash -- it creates $keys{P} == $Proc, $keys{ST} == $Start, etc. > /(\S+)=(.+?)(?=\s+\S+=|\z)/g ^^^ ^^^ ^^^ ^^^^ 1 2 3 4 1) match one or more non-whitespace characters, followed by a literal '=' 2) match one or more anythings, non-greedy 3) a "zero-width positive look-ahead assertion" (check out perldoc perlre for more info on this, basically checks that a pattern exists ahead of what you're currently examining in your regex) 4) this part doesn't make sense to me -- I would think it should be: (?=\s+=|\z) instead... I see no cases where there would be any whitespace after your parameter list is finished, and between, for example, 'ST' and '=', which is what this sequence allows for... > ${$keys{uc $1}} = $2; First of all, $1 and $2 are automatic variables set by backreferences in the previously evaluated regular expression, the one discussed above. The 'uc $1' part makes sure that whatever characters are in $1 are uppercase. It's then read as: take the variable named $keys{uc $1} and set it to $2. Check out perldoc perlref for more information about this, especially the section titled: 'Using References'. After the code is executed, you'd end up with: $P == 'IcwRcsm D=D: ' $SL == '20 ST=d:\icw\rcsm\StartSv.bat' HTH, -dave -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]