Hello,

Looking at the cpantesters report, I see this line in the perl -V output:

Summary of my perl5 (revision 5 version 10 subversion 0 patch 34065) 
configuration:


This is not a "normal" perl and must have been compiled manually. I assume you can use the "find-a-tester" link in the cpantesters.org website to send an email to the tester asking for more information.

Also, you probably can compile your perl using the same configure options present in the -V output and see if it triggers the bug too?

   Good luck hunting down this bug! :)

~Apocalypse

cr...@animalhead.com wrote:
The subject module IP::World has been up on CPAN for some time. I'm asking two questions relating to a weird test problem, not about IP addresses:

Can a Perl be built or conditioned to compile short, unquoted numeric constants into packed numeric values, as the test results suggest has occurred on the subject test system?

If so, should such a system be used for CPAN testing?

Thanks to any future respondents,
cmac

On Apr 11, 2010, at 12:14 PM, Dana Hudes wrote:

There are extant modules for handing IPv4 (and IPv6) addresses. I suggest you use one of those. Search /Net::IP/

Sent from my BlackBerry® smartphone with Nextel Direct Connect

------------------------------------------------------------------------
*From: * cr...@animalhead.com <mailto:cr...@animalhead.com>
*Date: *Sun, 11 Apr 2010 12:07:25 -0700
*To: *<module-authors@perl.org <mailto:module-authors@perl.org>>
*Subject: *Testing problem (32 bit numeric constants?)

My CPAN module takes an IP4 address as its operand, and checks its operand as follows: 1) if the scalar is 4 bytes long, it's taken as a packed 32-bit binary value,
2) otherwise it is syntax checked as a "dotted quad", as in '1.2.3.4'.

An operand that fails these tests results in a return value of '**'.
An operand that passes but is not in the database returns '??'.
Other operands return country codes, like 'US'.

The tests for the module include these:
is ($ipw->getcc(0), '**', "getcc(0) should return **");
is ($ipw->getcc(999), '**', "getcc(999) should return **");
# string 1000 is equivalent to '49.48.48.48' which is not covered
is ($ipw->getcc(1000), '??', "getcc(1000) should return ??");
# string 9999 is equivalent to '57.57.57.57'
is ($ipw->getcc(9999), 'EU', "getcc(9999) should return EU");
is ($ipw->getcc(10000), '**', "getcc(10000) should return **");

These tests assume that Perl stores the constants 0, 999, 1000, 9999, and 10000 as strings. They pass on all CPAN testers' systems except one (so far).

On that system all of the above tests return '??'. The FAIL report is at http://www.cpantesters.org/cpan/report/07094372-b19f-3f77-b713-d32bba55d77f

The only explanation that I can think of is that the numeric constants above are stored in 32-bit form.

Is it possible to build or condition a perl system to do that?
If so, should such a system be used for CPAN testing?

This problem can probably be worked around by executing alternate tests that use '0' ... '10000' if length(0)>1, but it would be nice if someone could comment on this diagnosis first.

Thanks,
cmac


Reply via email to