in reply to Re: Question on use of 'my'
in thread Question on use of 'my'

Great to hear!

That's not actually how its being used - I guess that I misrepresented the questin with that example. I just wanted to know if it was more proper to declare a list of local variables when you enter a block, than declaring variables to be local as you introduce them

Replies are listed 'Best First'.
Re: Re: Re: Question on use of 'my'
by davido (Cardinal) on May 14, 2004 at 01:12 UTC
    While there are certanly many situations where you might want to have a list of a block's variables declared near the top, there are just as many (if not more) cases where clarity is improved by declaring them as you need them, and no sooner.

    Whenever it makes sense, I like to work it out to where lexical variables have the smallest scope possible, for the briefest amount of code.

    For example:

    sub myfunc { my( $this, $that, @those ) = @_; # Here it may make sense to pull # in the contents early on for # simplicity and clarity's sake. # Code here.... # more code here.... foreach my $alias ( @those ) { # Note we declare $alias only # where it's needed. # Do some stuff here. # Do more stuff... my $another = $alias * 5; # $another is limited to the sco +pe # of the foreach loop. $this += $another; } while ( my $choice = shift @those ) { # Another tightly scoped var +. # Do something else. } return $this }

    This is contrived, but the idea is that I'm keeping scopes narrow, and declaring variables only where they're needed. To me, this helps to keep the declaration near where the variable is actually used, and that, in my opinion, improves readability and maintainability.


    Dave