http://www.perlmonks.org?node_id=1022666


in reply to Re^2: perl 5.12 BSD portability (CPAN test result)...print
in thread perl 5.12 BSD portability (CPAN test result)...print

CPAN test reports are like money - 95% of it is controlled by just 5% of the population (or something like that).

There are a small handful of individuals who submit a vast number of CPAN test reports. Check the failure reports you are getting - are they all from the same person? If so, perhaps their system is configured unusually.

Otherwise, I'd personally just document the problem and then forget about it. Something like:

=head1 BUGS The test suite fails in Perl 5.12 on BSD operating systems. Upgrading to Perl 5.14 or above should solve this problem. Patches to fix the issue would be joyfully accepted.

PS: for a hint about why this bug doesn't affect 5.14 and above, see Unexpected behavior of function 'say'.

package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name

Replies are listed 'Best First'.
Re^4: perl 5.12 BSD portability (CPAN test result)...print
by perl-diddler (Chaplain) on Mar 10, 2013 at 17:04 UTC
    Funny you should mention that example.

    I was pokin' at the code and though, well, maybe I should try

    print $fh [rest of print line]
    It seems with 'say', the above form worked, while the 'preferred' (hmmm) "$fh->say" did not..?

    BTW, FWIW, I'd really hate to put in a BUGS section like that indicating that they'd have to upgrade just because of my module. If I did have to put in a section like that, I'd like to point them to a perlbug# specific for their version & platform -- but that still would beg the question, "why BSD and not linux"? On the level that I'm using perl, they should be identical. If the 5.12 version of perl on BSD was miscompiled, I'd think that would be fixable, no?

    For windows, am wondering if I should just skip those tests that won't work? The execute test on lib/P.pm... yeah, that would be skippable, but the other test is testing the ability to print directly *from* a file descriptor. I think that should work on windows if I write a tiny perl-prog to emulate the function(s) of cat & rev. I.e. its a corner case that's not really worth the effort, but it would probably be the "right thing to do"...;^/

      Did you try the solution I posted earlier?

      use IO::File (); use IO::Handle ();

      ... I strongly suspect it will solve the problem.

      package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name
        Well it works on my machine, of course, but because of the problem report with 'say' working as a 'pre-method', but generating the exact same type of error when used as a target method, I was leaning toward trying that.

        The reason being, is that let's say you have the 5.12 source -- it shouldn't be different for different platforms. So the @ISA chain should be the same and if I call print on a IO::File -- it derives from IO::Handle -- so unless object calling is completely broken on 5.12 -- which it wasn't, AFAIR. But something was bizarre with having pre-methods (verb object), work when object->verb did not in that time frame. So it would make more sense to hope the same thing that affected 'say', is affecting 'print' ??? Does that sound logical/reasonable?

        I.e. if the problem mentioned with 'say' said putting those two use statements in was the solution they tried, I'd likely try it first.

        I have no way to test it other than wait for more test reports to come in, unless someone knows of a way to run it more quickly...but haven't uploaded new source yet... was still dwelling on how I wanted to solve the windows case...that and working on other things while my brain 'stews'...;-)...

        Later...

        Uploaded V1.0.12 with the BSD and the Win fix. Of course now, every other platform will break... but hey! ;-)....ok ... maybe not linux and maybe not windows...(testing on windows in strawberry is less than fun -- no bash! I do most of my windows cmdline stuff in cygwin)...