Sharan Basappa wrote:
> 
> I am using debugging for a program of mine.
> 
> The debugger exits probably after a regex match fail. I am not sure
> why it should exit.
> Any ideas, clues?
> 
> Regards
> 
> main::(StTrAuto.pl:106):          my @new_auto_tr = ();
>   DB<2> s
> main::(StTrAuto.pl:107):          foreach $temp (@auto_tr)
> main::(StTrAuto.pl:108):          {
>   DB<2> s
> main::(StTrAuto.pl:109):            if($temp =~ m/^$start_state)/)
> main::(StTrAuto.pl:110):            {
>   DB<2> s
> Unmatched ) in regex; marked by <-- HERE in m/^0) <-- HERE / at
> StTrAuto.pl line 109.
>  at StTrAuto.pl line 109
> Debugged program terminated.  Use q to quit or R to restart,
>   use O inhibit_exit to avoid stopping after program termination,

The error is delayed until run time because you have a variable interpolated
into your regular expression.

  m/^$start_state)/

Your debugger has said, "Unmatched ) in regex," and although there would have
been no error if $start_state had an open parenthesis to match the literal one
in your regex, I think it's much more likely that you meant

  m/^$start_state$/

or even better

  if ($temp eq $start_state) {
    :
  }


I also think that you have not written

  use strict;
  use warnings;

at the start of your program, and anything that is presented to this list should
at least have those in place.

My final comment is that $temp is an awful name for a variable under almost any
circumstances.

HTH,

Rob

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to