On Jul 21, Andrew Thomas said:
>Of course.... I apologize - I had meant to include that. Here it is, the
>actual script is quite long so I've pared it down some to try and isolate
>the problem. This is the whole script now and it is still having the same
>problem.
But the person (I think) you're replying to already TOLD you the problem.
You've got:
>while(<READFILE>) {
and then you've got:
> $string = <READFILE>;
The while() line reads a line into $_, and then you read the NEXT line
into $string.
> $string =~ /^(\w+-*\w* *\w*, \w+)\|(\d+)\|(\d+)|/;
You've got a | at the end of your regex that I THINK you want to be \|.
> $patientName = $1;
> $studyID = $2;
> $dateOfBirth = $3;
> print WRITEFILE $patientName, $studyID, $dateOfBirth;
You're missing the newline after you print those things. And you don't
need to use separate variables -- you could just use $1, $2, and $3. And
don't you want a | between these fields still?
And you're using the $DIGIT variables without being sure the regex matched,
which isn't a smart idea.
>}
I'd rewrite the loop as follows:
while (<READFILE>) {
if (/^(\w+-*\w* *\w*, \w+)\|(\d+)\|(\d+)\|/) {
print WRITEFILE "$1|$2|$3\n";
}
}
But maybe you could just write:
while (<READFILE>) {
chomp;
my @fields = split /\|/;
print WRITEFILE join("|", @fields[0..2]), "\n";
}
Perhaps if you tell us exactly what your program is supposed to do, we can
help you write it better.
--
Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/
RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/
<stu> what does y/// stand for? <tenderpuss> why, yansliterate of course.
[ I'm looking for programming work. If you like my work, let me know. ]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]