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


In reply to Re: Re: Re: Question on use of 'my' by davido
in thread Question on use of 'my' by nmerriweather

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.