stas        02/04/14 23:56:39

  Modified:    src/docs/1.0/guide Changes.pod porting.pod
  Log:
  add a new section presenting a hackish solution for libraries
  collision, via do() or %INC mangling.
  
  Revision  Changes    Path
  1.9       +5 -0      modperl-docs/src/docs/1.0/guide/Changes.pod
  
  Index: Changes.pod
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/Changes.pod,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Changes.pod       13 Apr 2002 18:45:59 -0000      1.8
  +++ Changes.pod       15 Apr 2002 06:56:39 -0000      1.9
  @@ -11,6 +11,11 @@
   
   =head1 ??? ver 1.32
   
  +* guide::porting
  +
  +  o add a new section presenting a hackish solution for libraries
  +    collision, via do() or %INC mangling.
  +
   * guide::troubleshooting
   
     o solution to the 'readdir()/opendir() not working' problem (Louis
  
  
  
  1.6       +52 -0     modperl-docs/src/docs/1.0/guide/porting.pod
  
  Index: porting.pod
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/porting.pod,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- porting.pod       4 Apr 2002 02:24:28 -0000       1.5
  +++ porting.pod       15 Apr 2002 06:56:39 -0000      1.6
  @@ -1855,6 +1855,58 @@
   module names in package declarations, as explained above, you cover
   the first two as well.
   
  +=item A Hack
  +
  +The following solution should be used only as a short term
  +bandaid. You can force reloading of the modules by either fiddling
  +with C<%INC> or replacing use() and require() calls with do().
  +
  +If you delete the module entry from the C<%INC> hash, before calling
  +require() or use() the module will be loaded and compiled again. For
  +example:
  +
  +  ./project/runA.pl
  +  -----------------
  +  BEGIN {
  +      delete $INC{"MyConfig.pm"};
  +  }
  +  use lib qw(.);
  +  use MyConfig;
  +  print "Content-type: text/plain\n\n";
  +  print "Script A\n";
  +  print "Inside project: ", project_name();
  +
  +Apply the same fix to I<runB.pl>.
  +
  +Another alternative is to force module reload via do():
  +
  +  ./project/runA.pl
  +  -----------------
  +  use lib qw(.);
  +  do "MyConfig.pm";
  +  print "Content-type: text/plain\n\n";
  +  print "Script B\n";
  +  print "Inside project: ", project_name();
  +
  +Apply the same fix to I<runB.pl>.
  +
  +If you needed to import() something from the loaded module, call the
  +import() method explicitly. For example if you had:
  +
  +  use MyConfig qw(foo bar);
  +
  +now the code will look as:
  +
  +  do "MyConfig.pm";
  +  MyConfig->import(qw(foo bar));
  +
  +Both presented solutions are ineffective, since the modules in
  +question will be reloaded on each request, slowing down the response
  +times. Therefore use these only when a very quick fix is needed and
  +provide one of the more robust solutions discussed in the previous
  +sections.
  +
  +
   =back
   
   See also the C<perlmodlib> and C<perlmod> manpages.
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to