John Krahn wrote:
> Debbie Cooper wrote:
> > my @empty = ();
> > my @headings = ();
> 
> Aggregate variables created with my() are empty by default so assigning an 
> empty list to them is redundant.
> 

I hope I am not opening a can of worms by getting into a style
disucssion, and I will preface this entire thread with: 

    Style is a personal issue; pick one that works for you and be
    consistent but not dogmatic.  The style must serve you; you do not
    serve the style.  Read good code, and incorporate stylistic idiom
    that suits the task at hand.

I used to be in the habit of always explicitly assigning to EVERY
variable I used upon declaration, and when declaring a variable that I
will use for a hashref or listref, I still do explicitly assign.

# instantiate a hasref to hold data about some person
my $person = {};

# instantiate a listref to hold my family

my $people = []; 

$person->{hair} = 'blond';
$person->{name} = 'Lawrence'; 
$people->[0] = $person;

Of late, I have gotten out of the habit of explicitly initializing
lists or hashes, but I can see doing that piece of extraneous code to
reinforce in the users mind that the list/hash is starting out
virginal.

More often, I defer the declaration of the lexical variable until I
have the list or hash elements available, so I never declare them as
empty. 

my $person = { hair => 'blond', name => 'Lawrence' } ; 
my $people = [ $person ] ; 

Obviously the solution that elides the intermediate $person variable
should be leaping to every reader's mind now.

my $people = [ { hair => 'blond', name => 'Lawrence } ] ; 

But these are the stylistic differences that serve to distinguish the
masters from the aprentices.

One begins by teaching the novice the straightforward but verbose
technique, and later the shortcuts.  


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to