Stas Bekman wrote:
> pascal barbedor wrote:
>
>>>>
>>> [ .... ]
>>>
>>>> config.pm file
>>>> ---------------------------------------------
>>>> package AFPA::Evolif::Config ;
>>>>
>>>> use XML::LibXML () ;
>>>> use XML::LibXSLT () ;
>>>> use XML::XPath () ;
>>>> use XML::Simple () ;
>>>> use DBI () ;
>>>>
>>> [ ... ]
>>>
>>> Hi,
>>> Could it be that XML::XPath does file tests on the
>>> file $xmlfile passed to it through
>>> XML::XPath->new(filename => $xmlfile)
>>> which would cause '_' to use the stat on $xmlfile, rather
>>> than the original config file?
>>>
>>> best regards,
>>> randy kobes
>>>
>>>
>>>
>>
>>
>>
>> oh yes, this was the answer ! XML::XPATh->new stats the file.
>>
>> thanks for clearing it out !
>>
>> then maybe the last line of reread_conf in mod_perl guide should be
>> modified to
>>
>> $MODIFIED{$file} = -M $file;
>>
>> in case the do ( ) loads something which can possibily stat file.
>
>
> ok, I'll add a note, saying that _ shouldn't be used if it's not known
> whether no other files are stat'ed in between. Or even the other way
> around, so the default will be -M $file
At the end I've just cached the value of -M, and saved an otherwise
needed stat() syscall :)
use vars qw(%MODIFIED);
sub reread_conf{
my $file = shift;
return unless defined $file;
return unless -e $file and -r _;
my $mod = -M _;
unless (exists $MODIFIED{$file} and $MODIFIED{$file} == $mod){
my $result;
unless ($result = do $file) {
warn "couldn't parse $file: $@" if $@;
warn "couldn't do $file: $!" unless defined $result;
warn "couldn't run $file" unless $result;
}
$MODIFIED{$file} = $mod; # Update the MODIFICATION times
}
} # end of reread_conf
--
_____________________________________________________________________
Stas Bekman JAm_pH -- Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide http://perl.apache.org/guide
mailto:[EMAIL PROTECTED] http://ticketmaster.com http://apacheweek.com
http://singlesheaven.com http://perl.apache.org http://perlmonth.com/