in reply to Re: Need an $a and $b as in perl's sort routine
in thread Need an $a and $b as in perl's sort routine

But then the code is not usable from a module, no?

I have used things like the following in the past:

sub exec_callback { my $code = shift; my $caller = caller; no strict 'refs'; no warnings 'once'; local(*{$caller."::a"}) = \my $a; local(*{$caller."::b"}) = \my $b; $a = {}; $b = 1; $code->(); }

Good Day,
    Dean

Replies are listed 'Best First'.
Re^3: Need an $a and $b as in perl's sort routine
by demerphq (Chancellor) on Jan 11, 2006 at 16:12 UTC

    But then the code is not usable from a module, no?

    A fully qualified global name is always accessable and usable from everywhere. The "problem" I think you are indirectly referring to is when you have a module X that uses globals that exist within the package that other code must then fully qualify using the full package name. For a variable named $X::x thats not so bad, but when the package is Some::Long::Package::Name it starts getting clumsy.

    The options are to export the globals in to the consumers package or to use "special globals" (like $a, $b, and $_) or to just use vars in package main. Assuming that you don't have a lot of globals in use in package main (IME a safe assumption) using such vars is IMO a reasonable choice. In other words typing $::Hash isn't so tough. Typing $Some::Long::Package::Name::Hash is.

    ---
    $world=~s/war/peace/g