Rich Busse wrote: > > I'm currently processing lines from an input file this way: > > $_ = "P=IcwRcsm D=D: SL=20 ST=d:\icw\rcsm\StartSv.bat > U=http://uslv..." > @Token = split ; > foreach (@Token) > { > $Proc = $' if (/P=/i) ; > $Start = $' if (/ST=/i) ; > $Url = $' if (/U=/i) ; > $Sleep = $' if (/SL=/i) ; > $Drive = $' if (/D=/i) ; > } > > Probably not very Perl-ish, but I'm ending up with > $Start="d:\icw\rcsm\StartSv.bat" as needed. > > Now I'd like to pass parameters to the program in $Start. Something like: > > P=IcwRcsm D=D: SL=20 ST=d:\icw\rcsm\StartSv.bat Parm1 Parm2 > U=http://uslv... > > or even with delimiters if it helps: > > P=IcwRcsm D=D: SL=20 ST="d:\icw\rcsm\StartSv.bat Parm1 Parm2" > U=http://uslv... > P=IcwRcsm D=D: SL=20 ST='d:\icw\rcsm\StartSv.bat Parm1 Parm2' > U=http://uslv... > > so I end up with $Start="d:\icw\rcsm\StartSv.bat Parm1 Parm2". > > Any suggestions appreciated. TIA...
Here is one way to do it: $_ = q[P=IcwRcsm D=D: SL=20 ST=d:\icw\rcsm\StartSv.bat Parm1 Parm2 U=http://uslv...]; my ( $Proc, $Start, $Url, $Sleep, $Drive ); my %keys; @keys{ qw/P ST U SL D/ } = \( $Proc, $Start, $Url, $Sleep, $Drive ); while ( /(\S+)=(.+?)(?=\s+\S+=|\z)/g ) { ${$keys{uc $1}} = $2; } print "Proc: $Proc\nStart: $Start\nUrl: $Url\nSleep: $Sleep\nDrive: $Drive\n"; John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]