Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: using strict and functions

by runrig (Abbot)
on Jan 17, 2002 at 22:01 UTC ( [id://139566]=note: print w/replies, xml ) Need Help??


in reply to using strict and functions

You can localize them to the functions (the 'BEGIN' is so that any initializations to the variables get done no matter where you place these functions in the program):
BEGIN { my ($var1, $var2) = ("this", "that"); sub sub1 { # use $var1, $var2 } sub sub2 { # use $var1, $var2 } }
Update: It's hard to tell what you really want or need from your description, so its a good thing there are lots of good answers here..

Replies are listed 'Best First'.
Re(2): using strict and functions
by dmmiller2k (Chaplain) on Jan 18, 2002 at 09:04 UTC

    This turns sub1 and sub2 into closures (see 'What's a closure?'). While it is not always necessary to use BEGIN blocks, without them (i.e. normal blocks), declaration order becomes significant.

    Update: A trick I use occasionally is to declare a set of lexical variables in a BEGIN block along with access functions. Within the program, only the access functions are visible.

    BEGIN { my ($var1, $var2, $var3); my @array1; my %hash1; sub var1 { $var1 = $_[0] if @_; $var1 } sub var2 { $var2 = $_[0] if @_; $var2 } sub var3 { $var3 = $_[0] if @_; $var3 } # for arrays and hashes, call in scalar context and # dereference to manipulate contents sub array1 { wantarray ? @array1 : \@array1 } sub hash1 { wantarray ? %hash1 : \%hash1 } }

    Of course, rather than hand code access functions for every variable, I typically define a hash containing my variables as keys, and an AUTOLOAD to define access functions dynamically on first use.

    dmm

    If you GIVE a man a fish you feed him for a day
    But,
    TEACH him to fish and you feed him for a lifetime

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://139566]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (7)
As of 2024-03-28 13:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found