Making the Script Smarter
Once we know about it, it’s an easy
matter to modify the original data file to fix the Best Glue Products
listing. But it would be nice if we could make the
&parse_exhibitor
subroutine smart enough to spot those
sorts of problems on its own. By adding some sanity checks and
having the script output appropriate error messages if they fail, we
can make the process of policing the data file for these sorts of
errors much easier.
For example, &parse_exhibitor
uses the
following lines to parse the company’s name:
if ($line_count == 1) { $co_name = $line;
What if that line somehow ended up being blank? The code in the main body of our script shouldn’t allow that to happen, but it doesn’t hurt to program defensively. Let’s modify those lines to look like this:
if ($line_count == 1) { unless ($co_name = $line) { warn <<"EOF"; line_count=1, but got a false co_name. skipping exhibitor. ($exhibit_file line number $.) EOF return; }
By placing the assignment to the $co_name
variable
inside a logical test, we can test the value being assigned for
truth. In the event that a false company name is assigned, we issue a
warning, including the name of the file we were parsing
($exhibit_file
) and the special variable
$.
, which gives the line number of the filehandle
most recently read from. (This will help us locate the problematic
listing in $exhibit_file
.) Then we use the
return
function, which causes a subroutine to stop whatever it’s doing and returns program execution ...
Get Perl for Web Site Management now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.