Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re(2): using strict and functions

by dmmiller2k (Chaplain)
on Jan 18, 2002 at 09:04 UTC ( #139750=note: print w/ replies, xml ) Need Help??


in reply to Re: using strict and functions
in thread using strict and functions

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


Comment on Re(2): using strict and functions
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2015-07-03 20:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (56 votes), past polls