At 1:04 AM -0800 3/25/03, Michael G Schwern wrote: >This is odd: > >$ perl -wle "require Pod::Man; print $@" > >$ perl -wle "eval 'require Pod::Man'; print $@" >Pod/Man.pm did not return a true value at (eval 1) line 3. > >$ perl -v > >This is perl, v5.8.0 built for VMS_AXP > > >Pod::Man doesn't have an explicit true value at the end. I've seen this >with other modules. Why is the behavior different when its eval'd? > >I only see this behavior on VMS.
% perl -wle 'eval "require Pod::Man"; print $@' Pod/Man.pm did not return a true value at (eval 1) line 3. % perl -v This is perl, v5.8.0 built for darwin The difference is Perl 5.6.x (which does not complain) and Perl 5.8.x, which does complain, regardless of platform. I've been rooting around in pp_ctl.c, specifically pp_entereval and pp_leaveeval, and I'm in way over my head. However, it does look like pp_entereval initializes the the "gimme" variable, sticks it into the context via the PUSHBLOCK macro, and then nothing ever changes it before pp_leaveeval fetches it out again. But I'm very likely missing something in one of those byzantine macros and if this is a bug I don't think I'll be the one to fix it. -- ________________________________________ Craig A. Berry mailto:[EMAIL PROTECTED] "... getting out of a sonnet is much more difficult than getting in." Brad Leithauser
