Loading ...
Sorry, an error occurred while loading the content.

54359Re: PATCH porting.pod "First Mystery"

Expand Messages
  • Stas Bekman
    Sep 5, 2003
    • 0 Attachment
      Brian McCauley wrote:
      [...]
      OK, your last post's examples were more to the point of wanting to destroy
      objects at the end of the request, and hence here is a new summary:

      - move the perl4 lib solution to the perl_reference.pod
      - suggest turning a lexical variable declared with my() into a global variable
      declared with our() to avoid the closure, with the following "but"s:

      o if with my() it wasn't crucial to initialize the variables
      (since my() initialized them to 'undef'), now all variables declared with
      our() must be explicitly initialized.

      s/my $counter = 0/our $counter = 0/;

      [Brian: notice that I prefer *not* to suggest using local() to init vars, and
      rather have users do that explicitly, which is a good practice]

      o since the initialization of global variables happens at the beginning of
      the request, if a variable which contains an object:

      my $query = CGI->new;

      is made global:

      our $query = CGI->new;

      it won't be destroyed untill the next request. If you wish to make sure
      that it's destroyed at the end of the request, you must local()'ize the
      variable:

      local our $query = CGI->new;

      - users of perl < 5.6 have to use 'use vars' instead of 'our'. So the above
      examples become:

      use vars qw($counter);
      $counter = 0;

      and:

      use vars qw($query);
      local $query = CGI->new;

      - point to perl_reference.pod for other workarounds/solutions.

      Please let me know if I have missed something from your last posts suggestions.

      __________________________________________________________________
      Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
      http://stason.org/ mod_perl Guide ---> http://perl.apache.org
      mailto:stas@... http://use.perl.org http://apacheweek.com
      http://modperlbook.org http://apache.org http://ticketmaster.com



      --
      Reporting bugs: http://perl.apache.org/bugs/
      Mail list info: http://perl.apache.org/maillist/modperl.html
    • Show all 20 messages in this topic