in reply to Requiring a version

Your test is failing a bit inconsistently because it relies on hash key order.

Reduced test case:

use strict; use warnings; use POSIX qw(setlocale LC_ALL); setlocale(LC_ALL, "tr_TR.UTF-8"); setlocale(LC_ALL, "tr_TR.UTF-8"); # fails to fail require (0 + (my $v = "5.042"));

On my system, this is broken in perl 5.37.4 through 5.39.2. It was broken with 818cdb7aa9f85227c1c7313257c6204c872beb94 and fixed with 5ba25c116c8573b68a6103113d3b831e46f55bee.

Syntax::Construct's turkic-casing option seems broken. It appears to be trying to test if the feature works. But it does so by changing the locale perl is running with, and it doesn't try to reset it.

Replies are listed 'Best First'.
Re^2: Requiring a version (Update: fixed!)
by choroba (Cardinal) on Jun 20, 2024 at 12:22 UTC
    Yes, that seems to be it! Thanks a lot.

    Running the tests in random order might be confusing, but it helps find problems like this one - if the order was fixed, it might have never appeared.

    Working on a fix (i.e. reverting locale back to original).

    Update: New version 1.037 on CPAN. I installed 5.38.2 locally and verified it failed about 50% of test runs in 1.036, the new version doesn't fail at all.

    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]