> -----Original Message-----
> From: James Edward Gray II [mailto:[EMAIL PROTECTED]
> Sent: Saturday, 28 February 2004 6:27 AM
> To: Gary Stainburn
> Cc: [EMAIL PROTECTED]
> Subject: Re: Trainset - initial release
>
> On Feb 27, 2004, at 8:32 AM, Gary Stainburn wrote:
>
> > Hi folks,
>
> Howdy.
>
> Okay, let's cover some basic syntax nit picks first.
>
> 1. Don't call subs with &debug. That has special meaning that could
> get you into trouble one of these days. Stick with debug().
Watch out for examples from perl 4 which *needed* the '&'. Nowadays it
probably doesn't do exactly as you imagine.
> 2. I prefer $self->{_BLOCKS}= { }; to
> %{$self->{_BLOCKS}}=();. It's a
> little less noisy.
Also more correct :-) Why dereference a HASH reference and assign a
LIST
to it, when you could assign a HASH reference to a HASH reference.
> 3. Just FYI, if you're trying to use a consistent case with
> something
> like $dir=uc($dir);, lc() is usually preferable to uc(). Uppercase
> isn't as consistent in some dialects, so it makes your code more
> portable.
Never thought of that. Owe you one here!
> 4. Don't nest subs. They don't work like that, so don't
> show it like
> that.
[ I couldn't find nested sub's in the source. ? ]
Subs do nest. Just not the way you expect.
Its not true 'namespace nesting' like in C++ where
the nested function is actually Parent::child(), but
scope nesting which is afaik unique to perl and
while very powerful, also rather freaky.
-------------- SAMPLE -------------------
sub jack
{
my $v;
sub jill
{
my $j = shift;
print "jill: v = $v".$/;
print "jill: j = $j".$/;
print "jill:total = ".($v+$j).$/;
}
$v = shift;
print "jack:v is now $v".$/;
}
jill 3;
jack 2;
jill 3;
jack 5;
jill 3;
---------------- OUTPUT -----------------
jill: v =
jill: j = 3
jill:total = 3
jack:v is now 2
jill: v = 2
jill: j = 3
jill:total = 5
jack:v is now 5
jill: v = 2 <---- v is 2? why is it not 5?
jill: j = 3
jill:total = 5
-----------------------------------------
Its an example of closure, and tends to make my brain hurt,
so don't nest unless you mean it :-)
> Good luck.
ditto.
>
> James
>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>