>>>>> "PS" == Peter Scott <pe...@psdt.com> writes:

  PS> On Mon, 26 Apr 2010 22:16:27 +0800, Tim Bowden wrote:
  >> I've just realised I almost never use named arrays or hashes anymore.
  >> It's almost always anonymous references instead.  That lead me to wonder
  >> what criteria experienced perl hackers have as to when to use a named
  >> array or hash, and when to start with an anonymous ref instead.  My very
  >> informal criteria tends to be to use an anonymous ref from the start if
  >> I'm going to be passing it to a sub, and a named array or hash
  >> otherwise.  I've found the former to be much more common.  Thoughts?

  PS> I create arrays and hashes by default, not references to anonymous 
  PS> versions.  I'd sooner not be putting arrows in unnecessarily.  I can 
  PS> always enreference an aggregate in the call to a sub.

my choice is usually based on usage. if i am building up data
structures, the members are almost always anon refs - no need to have
named vars for them. if i am passing stuff around you almost have to use
refs. if i have a need for scoped data then named vars are usually
best. same for file lexicals in general. but again, if one was being set
via a sub i will pass a ref (e.g. a parse_args sub that uses a getopt
will return a hash ref of all the options for use by the program).

you never NEED anon refs as you can always make one from my declaring a
named variable and getting and keeping a reference to it. the next time
the my is executed perl will allocate a new variable and the previous
content will now be anonymous. an example is

$ref = do{ \my %foo } ; # same as $ref = {}

the [] and {} syntax is therefore very nice sugar that i would surely
miss if not allowed.

uri

-- 
Uri Guttman  ------  u...@stemsystems.com  --------  http://www.sysarch.com --
-----  Perl Code Review , Architecture, Development, Training, Support ------
---------  Gourmet Hot Cocoa Mix  ----  http://bestfriendscocoa.com ---------

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to