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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access