What's going on here?

Christopher Shannon cshannon at mdo.net
Tue Sep 21 15:37:29 CDT 1999


>Can you send the code where you took out the defined($1) and the comma
>operator?


OK, it looks like the problem is solved.  It seems you really pointed out
where the problem was, namely with the while test condition.  Actually, I
was under the mistaken impression that if the next regex was unsuccessful,
the $1 was undefined, or acquired a null value, which is not the case.
Anyway, based on that, the solution I came up with was a little less
elegant, but it works.

Thanks a bunch, Tzadik!

Regards, Chris S.

P.S.  BTW, here is the corrected code:

sub CompileVCodes {
 my $xtype;
 my $regex;
 my @badlist;
 my $vcode;
 my $d;

 ($vcode, $xtype, $regex, @badlist)=@_;
 my $err=\&print_error;
 $vcode->{$xtype}= sub {
  (my $wrd)=@_; # $err is a reference to an error message routine.
  $d=$wrd=~/$regex/i;        # # Here is one change
  while ($d eq '')
   &{$err}(@badlist);
   chomp ($wrd=<STDIN>);
   if ($wrd eq '') {return ''}
   $d=$wrd=~/$regex/i;        # # Here is another change, the first regex is
duplicated
                                          # # at the end of the loop.
  }
  return $wrd;
 };
}




More information about the Baltimore-pm mailing list