Hi,

Dave Thomas wrote:

> Hugh Sasse Staff Elec Eng <hgs / dmu.ac.uk> writes:
>
> > On 12 Jun 2000, Dave Thomas wrote:
> >
> > >
> > > How about making any assignment to one of these globals-with-a-
> > > side-effect generate a warning if -w was in effect. That way you'd at
> > > least know that it was happening.
> >
> > Would it be possible to have a test for "when calling this code, it
> > is possible to exit leaving a global variable changed"?.  There are
> > only so many wasy to leave a method, module... without completely
> > crashing.
>
> Well, you _could_ implement Perl's 'local' facility for Ruby globals:
>
> <snip>
>
> For example:
>
>      $; = "hello"
>      $/ = "goodbye"
>      $, = ", "
>
>      local(:$;, :$/, :$,) {
>        $; = 'hi';
>        $/ = nil
>        $, = " - "
>        print $;, $/, "\n"     #=> hi - nil -
>      }
>
>      print $;, $/, "\n"       #=> hello, goodbye,
>
> This is pretty tacky code - the 'local' method should check that it is
> only passed true globals, and should reject $_ and $!. That's left as
> an exercise to the reader (as we say) ;-)

Well, I like the original thought--but not the idea of implementing
it--because it "breaks the meaning/uniformity" of the global variable naming
convention, and it adds too much Perl-like explicit overhead.

Seems to me that an explicitly local convention for automatically localized
variants would be desirable (which sprang into being upon reference, an took
the corresponding global values as defaults if not set). Maybe something like
"$$;", "$$/", "$$," and so on would be the most natural and easiest to
remember.

--
Conrad Schneiker
(This note is unofficial and subject to improvement without notice.)