The problem/quirk I am noticing can be shown with the following change to Chris's code below: #!perl -wl $_ = 1; foo(1); # 1 foo(2); # undef /(1)/; print $1; # 1 /(2)/; print $1; # 1 foo(2); sub foo { /($_[0])/; print $1; } I would think that the $1 in Main is in a different scope than the $1 in foo. But this does not necessarily seem the case... -K "Do not meddle in the affairs of dragons, because you are crunchy and taste good with ketchup." > From: Chris Nandor <pudge@pobox.com> > Date: Thu, 14 Sep 2000 19:07:50 -0400 > To: Ronald J Kimball <rjk@linguist.dartmouth.edu> > Cc: Keary Suska <aksuska@insideflyer.com>, MacPerl_List <macperl@macperl.org> > Subject: Re: [MacPerl] Callbacks not reliable? > > At 18:35 -0400 2000.09.14, Ronald J Kimball wrote: >> On Thu, Sep 14, 2000 at 03:31:49PM -0600, Keary Suska wrote: >>> I had always thought in m// or s/// that if the pattern doesn't match that >>> the callback variables (i.e. $1, $2, $3 ...) would be undefined. I am >>> finding that this isn't the case at least with a substitution. >> >> That is incorrect. $<digit> and the other regex special variables contain >> the values from the last *successful* pattern match in the current scope. >> An unsuccesful match does not reset these variables. > > But these variables are automatically local()d to the enclosing block, I > think: > > #!perl -wl > $_ = 1; > foo(1); # 1 > foo(2); # undef > /(1)/; print $1; # 1 > /(2)/; print $1; # 1 > > sub foo { > /($_[0])/; > print $1; > } > > -- > Chris Nandor pudge@pobox.com http://pudge.net/ > Open Source Development Network pudge@osdn.com http://osdn.com/ # ===== Want to unsubscribe from this list? # ===== Send mail with body "unsubscribe" to macperl-request@macperl.org