in reply to File reading
use strict; use warnings; my $fileText; do {local $/; $fileText = <DATA>}; my $rxOK = qr {(?xms) ^First\sName (?=.*?^Last\sName) }; print $fileText =~ $rxOK ? qq{File OK\n} : qq{File BAD\n}; __END__ ..... First Name ..... ..... Last Name .....
This seems to be working for all of the failure cases I can think of. I hope it is of use.
Cheers,
JohnGG
Update: To cope with multiple occurences of "First Name" or "Last Name" in the file you could insert the following after reading the file.
Update 2: That last update was cobblers, it doesn't work properly. Whoops ;(my $fCnt = $fileText =~ /First\sName/g; die qq{"First Name" occurs more than once\n} if $fCnt > 1; my $lCnt = $fileText =~ /Last\sName/g; die qq{"Last Name" occurs more than once\n} if $lCnt > 1;
Update 3: Should have assigned to a list, not a scalar.
my @fCnt = $fileText =~ /First\sName/g; die qq{"First Name" occurs more than once\n} if @fCnt > 1; my @lCnt = $fileText =~ /Last\sName/g; die qq{"Last Name" occurs more than once\n} if @lCnt > 1;
|
|---|