Mark Stosberg wrote:
Hello,

Recently I ran into a bug with File::MMagic where it returns
inconsistent results under mod_perl.

Could it simply be a matter of fixing the use of the DATA handle, as
Stats suggest here?

http://mail-archives.apache.org/mod_mbox/perl-modperl/200403.mbox/[EMAIL 
PROTECTED]


Yep.  It's definitly the problem.  The work around is to pass a magic
definition file into MMagic when the object is created. Easier said than done.

Maybe the best solution is move the DATA section to a variable.  It's
not as elegant as reading the data from a DATA section, but it's
mod_perl compliant.

Hmm... You might try adding this to your startup.pl (or whatever is per-loading perl modules).

# a bit of a hack
use vars qw($magicObject);
BEGIN {
  if($ENV{MOD_PERL}) {
    # load from <DATA>
    $magicObject = File::MMagic->new();
    # save it globally
    {
      no strict;
      # save original method
      *{"File::MMagic::original_new"} = *{"File::MMagic::new"}{CODE};
      # replace original method
      *{"File::MMagic::new"} = sub {
        return $magicObject;
      };
    } # end no strict
  }
}


It's untested. And it probably leaks memory, too.  :(

Rob

Reply via email to