Exercise: Finding the Bug

 <  Day Day Up  >  

This exercise shows you how to use the debugger. The program in Listing 12.1 has a problem ”actually two. It's supposed to print these messages:

 20 glasses of Lemonade on the wall 19 glasses of Lemonade on the wall : 1 glass of Lemonade on the wall 0 glasses of Lemonade on the wall 

But it does not. Your task is to type the program in Listing 12.1 and try to find the bugs. Neither of the bugs is a syntax problem ”Perl's warnings are not triggered, and use strict prints no messages ”but the debugger should make the bugs fairly obvious to find.

After you type the program, run Perl with the debugger to try to find the errors. Remember to print relevant variables and expressions occasionally and step through the function calls one at a time.

Listing 12.1. Buggy
 1:   # !/usr/bin/perl -w 2:   # This program contains TWO errors 3:   use strict; 4: 5:   sub message { 6:      my($quant)=@_; 7:      my $mess; 8:      $mess="$quant glasses of Lemonade on the wall\n"; 9:      if ($quant eq 1) { 10:             $mess=s/glasses/glass/; 11:      } 12:      print $mess; 13:  } 14: 15:  foreach(20..0) { 16:     &message($_); 17:  } 

The solution is presented in the "Quiz" section at the end of this hour .

 <  Day Day Up  >  


SAMS Teach Yourself Perl in 24 Hours
Sams Teach Yourself Perl in 24 Hours (3rd Edition)
ISBN: 0672327937
EAN: 2147483647
Year: 2005
Pages: 241

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net