i copied the code as is, and got no error. are you sure line #29 is where you are calling $_incr_count->()? are you sure the code you are executing is what you posted?
On Wednesday, March 27, 2002, at 06:47 PM, Paul Tremblay wrote: > I am coppying the code below directly from *Object Oriented > Perl* by Conway. (Error message is below.) > > > package CD::Music; > #use strict; # turn this off for testing purposes > > { > > my $_count = 0; > sub get_count {$_count} > my $_incr_count = sub {++$_count};#create an anonymous subroutine > $_incr_count->();# it works if I call it here > > sub new{ > $_incr_count->();#call the anonymous subroutine > #this line above causes the error below > > > #Isn't this where the anonymous subroutine should go? > #my $_incr_count = sub {++$_count}; > > > my ($class) = @_; > bless { > _name => $_[1], #second value passed to subroutine > _artist => $_[2], #third value passed to subroutine > _publisher => $_[3], #and so on > _ISBN => $_[4], > _tracks => $_[5], > _room => $_[6], > _shelf => $_[7], > _rating => $_[8], > }, $class; > } > } > > I am getting this error message: > > /home/paul/bin/test16.pl > Use of uninitialized value in subroutine entry at /home/paul/bin/test16.pl > line 29. > Undefined subroutine &main:: called at /home/paul/bin/test16.pl line 29. > > I am nearly positive that this error message results because the > reference to the anonymous subroutine expires once I start the > subroutine new. > > Could a more experienced user confirm this? > > I believe that the annonymous subroutine (and the other code > that initializes the counter) should go in the new subroutine > block. The idea is make sure you can't access the subroutine > directly. This happens as long as I make an anonymous > subroutine--no matter where I put it. > > Thanks! > > PS: Typos in computer books can really cause you to lose your > mind. You keep thinking that you typed something wrong! > > -- > > ************************ > *Paul Tremblay * > *[EMAIL PROTECTED]* > ************************ > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] >