> > > @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.
> 
> $keys{P} = \$Proc, $keys{ST} = \$Start, etc.

Okay... Fair enough. Maybe I'm missing something, but why in the world
would you want to make something a hash of references to scalars when a
hash of scalars would work just as well?

> From the OP's post, the data is:
> 
> q[P=IcwRcsm D=D: SL=20 ST=d:\icw\rcsm\StartSv.bat Parm1 Parm2 
> U=http://uslv...];
> 
> /(\S+)=(.+?)(?=\s+\S+=|\z)/g  will match:
> (P)=(IcwRcsm)(?= D=)
> (D)=(D:)(?= SL=)
> (SL)=(20)(?= ST=)
> (ST)=(d:\icw\rcsm\StartSv.bat Parm1 Parm2)(?= U=)
> And finally:
> (U)=(http://uslv...)(?=\z)
> 
> The (?=\s+\S+=) pattern ensures that the data captured in $2 
> has no trailing whitespace.

Alright, thanks for that explanation, I see how that would work for
every case but the last one - what if there was trailing whitespace
after the value for U and before the end of the string? (?=\s+\S+=)
seems like it would pick up the trailing whitespace in that case because
it needs a non-whitespace character to complete the match for the group.
How about:

/(\S+)=(.+?)(?=\s+\S+=|\s+|\z)/g
                      ^^^^

To catch trailing whitespace at the end of the line of data?

> > After the code is executed, you'd end up with:
> > 
> > $P == 'IcwRcsm D=D:    '
> > $SL == '20 ST=d:\icw\rcsm\StartSv.bat'
> 
> Wrong.  Run the code I posted and see for yourself.

Yeah, my mistake, I just typed that wrong :)

Cheers,

 -dave



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

Reply via email to