in reply to Modify code help
The line 'my $slotnumber = <OUTFILE>;' is only ever going to get you one line from OUTFILE, but you may already know this. I'm kind of suprised that it's giving you a 5 instead of a 1, though, with the sample data that you provided.
I'm almost afraid to offer advice since I may not fully grasp the issue, but would it not be an straight-forward matter to print each match to a separate line in OUTFILE, and then just read each match in a while loop as you eject?
Update:
It's probably not necessary to print anything to another file, unless you're going to need those values for another purpose, so your code could probably be simplified into something like:
use strict; use warnings; system ("c:\\Perl\\DataPro\\convert.bat"); open(DPSLOTFILE, "< c:\\Perl\\DataPro\\newreport.txt") or die "Can't o +pen file: $!"; while ( <DPSLOTFILE> ) { my $dpdrivloc = "MSL6000 Trinity"; if ( /\Q$dpdrivloc\E:\s*(\d+)/ ) { #use match for system call! system("c:\\Perl\\DataPro\\omnimm -eject \"MSL6000 Trinity\" $1 -l +ocation \"blahblahblah\""); print OUTFILE "$1"; } } close DPSLOTFILE;
|
|---|