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]

Reply via email to