Ancient

 view release on metacpan or  search on metacpan

t/2024-doubly-fork.t  view on Meta::CPAN

        $list->add($i);
    }
    $list->remove_from_start;
    $list->remove_from_end;
    
    is($list->length, 9, 'list has 9 items');
    
    my $pid = fork();
    
    if ($pid == 0) {
        # Child - verify copy is intact
        my $len = $list->length;
        
        # Do more operations in child
        $list->add(999);
        $list->remove_from_start;
        
        exit($list->length == 9 ? 0 : 1);
    } else {
        waitpid($pid, 0);
        my $status = $? >> 8;

t/3004-const-optimize.t  view on Meta::CPAN

SKIP: {
    eval { require B };
    skip "B module not available", 1 if $@;
    
    # This is a basic sanity check - a fully optimized c() with literal
    # should become just a const op, not a full entersub
    my $code = sub { const::c(42) };
    my $cv = B::svref_2object($code);
    my $root = $cv->ROOT;
    
    # Just verify the code compiles and runs
    my $result = $code->();
    is($result, 42, 'c() in sub returns correct value');
}

done_testing;

t/4008-object-prototype-chain.t  view on Meta::CPAN


    object::set_prototype($a, $b);

    # Trying to create a cycle should fail or be prevented
    eval { object::set_prototype($b, $a) };
    # Note: behavior may vary - some implementations allow cycles,
    # others detect and prevent them
    if ($@) {
        like($@, qr/circular|cycle/i, 'circular prototype detected');
    } else {
        # If no error, verify it doesn't infinite loop on access
        pass('circular prototype allowed (implementation choice)');
        # Don't call prototype() in a loop to avoid hang
    }
};

# ==== Prototype with Freeze/Lock ====

subtest 'frozen object as prototype' => sub {
    object::define('FreezeProtoClass', 'value:Int');

t/4012-object-neuralnet.t  view on Meta::CPAN

    }

    # Get final loss
    my $final_loss = 0;
    for my $sample (@data) {
        my $pred = $net->predict($sample->[0]);
        next unless defined $pred->[0] && $pred->[0] == $pred->[0];  # skip NaN
        $final_loss += $net->loss_fn->mse->($pred, $sample->[1]);
    }

    # Just verify training ran without crashing and loss is finite
    ok(defined $final_loss, 'training completed');
    ok($final_loss == $final_loss, 'final loss is not NaN');  # NaN != NaN

    # Test that predict returns valid output
    my $out = $net->predict([1, 1]);
    ok(ref($out) eq 'ARRAY', 'predict returns array');
    ok(scalar(@$out) == 1, 'predict returns correct size');
    ok(defined $out->[0], 'output is defined');
};

t/7026-nvec-quadmath-safety.t  view on Meta::CPAN

    is($single->median(), 42.5, 'median of single');
};

# ============================================
# Quadmath-specific precision tests
# ============================================

if ($is_quad) {
    subtest 'quadmath: precision characteristics' => sub {
        # Note: nvec may use double-precision internally even on quadmath perl
        # These tests verify basic functionality works correctly

        # Test that very small values are preserved
        my $small = 1e-15;
        my $v = nvec::new([$small]);
        my $got = $v->get(0);
        ok($got > 0, 'very small value preserved');
        ok(approx_eq($got, $small, 1e-20), 'small value accurate');

        # Test arithmetic with small values
        my $a = nvec::new([1.0]);

t/7027-nvec-arithmetic-edge.t  view on Meta::CPAN

    # Values within 2 std of mean
    my $lower = $mean - 2 * $std;
    my $upper = $mean + 2 * $std;

    my $gt_lower = $v->gt($lower);
    my $lt_upper = $v->lt($upper);
    my $in_range = $gt_lower->mul($lt_upper);

    my $normal = $v->where($in_range);
    # The number of values within range depends on std calculation (sample vs pop)
    # and precision. Just verify we filtered something.
    ok($normal->len() < $v->len(), 'some outliers were filtered');
    ok($normal->len() >= 3, 'at least 3 normal values remain');
};

done_testing();

t/8000-file-basic.t  view on Meta::CPAN

    my $mtime2 = file::mtime($file);
    ok($mtime2 >= $mtime1, 'mtime updated after touch');
};

# Test chmod
subtest 'chmod' => sub {
    my $file = "$tmpdir/chmod_test.txt";
    file::spew($file, "chmod test");

    ok(file::chmod($file, 0644), 'chmod returns true');
    # Mode check is platform-specific, just verify no error
};

# Test mkdir and rmdir
subtest 'mkdir and rmdir' => sub {
    my $dir = "$tmpdir/newdir";

    ok(file::mkdir($dir), 'mkdir returns true');
    ok(file::is_dir($dir), 'created directory exists');
    ok(!file::mkdir($dir), 'mkdir existing dir returns false');

t/8000-file-basic.t  view on Meta::CPAN

    my $content = "atomic content\nline 2";

    ok(file::atomic_spew($file, $content), 'atomic_spew returns true');
    ok(file::exists($file), 'file exists after atomic_spew');
    is(file::slurp($file), $content, 'atomic_spew content correct');
};

# Test import (custom ops)
subtest 'import custom ops' => sub {
    # This is tested implicitly - if the module loads, import works
    # Let's verify the functions are available after import
    my $file = "$tmpdir/import_test.txt";
    file::spew($file, "import test");

    # These should all work
    ok(file::exists($file), 'exists works');
    ok(file::is_file($file), 'is_file works');
    is(file::size($file), 11, 'size works');
};

done_testing();

t/8002-file-custom-ops.t  view on Meta::CPAN

    my $op_basename = file_basename($file);

    is($op_slurp, $method_slurp, 'slurp results match');
    is($op_exists, $method_exists, 'exists results match');
    is($op_size, $method_size, 'size results match');
    is($op_is_file, $method_is_file, 'is_file results match');
    is($op_basename, $method_basename, 'basename results match');
};

# ============================================
# Performance sanity check (just verify they work, not actual speed)
# ============================================

subtest 'custom ops in loops' => sub {
    my $file = "$tmpdir/loop_test.txt";
    file_spew($file, "loop content");

    # Verify custom ops work in tight loops
    my $count = 0;
    for (1..100) {
        if (file_exists($file)) {

t/8003-file-mmap.t  view on Meta::CPAN

    my $original = "Original content here";
    file::spew($file, $original);

    # Open for writing
    my $mmap = file::mmap_open($file, 1);  # 1 = writable
    ok($mmap, 'writable mmap opened');

    my $data = $mmap->data;
    is($data, $original, 'initial data correct');

    # Sync (just verify it doesn't crash)
    $mmap->sync;
    pass('sync completed');

    $mmap->close;
};

# ============================================
# Multiple mmaps to same file
# ============================================

t/8013-file-hooks.t  view on Meta::CPAN

        return lc($data);
    });

    ok(file::has_hooks('write'), 'write hook registered');

    my $testfile = "$tempdir/write_hook_test.txt";
    file::spew($testfile, "HELLO WORLD");

    file::clear_hooks('write');

    # Read raw to verify transformation
    my $content = file::slurp($testfile);
    is($content, 'hello world', 'write hook transformed content');
};

subtest 'write hook can add prefix' => sub {
    file::clear_hooks('write');

    file::register_write_hook(sub {
        my ($path, $data) = @_;
        return "PREFIX: $data";

t/9012-cross-slot-util.t  view on Meta::CPAN

# Test slot with util predicates

# Initialize slots
counter(0);
items([]);

# Test slot values with predicates
ok(is_num(counter()) ? 1 : 0, 'slot counter is number');
ok(is_array(items()) ? 1 : 0, 'slot items is array');

# Update and verify
counter(42);
is(counter(), 42, 'counter updated');
ok(is_num(counter()) ? 1 : 0, 'still a number after update');

# Test memoized function that uses slots
my $call_count = 0;
my $get_double = memo(sub {
    my $n = shift;
    $call_count++;
    return $n * 2;

t/9015-cross-all-modules.t  view on Meta::CPAN

# 8. Test const with object
my $const_item = new Item 99, const::c('immutable_value');
app_cache()->set('const_item', $const_item);

my $retrieved = app_cache()->get('const_item');
is($retrieved->value, 'immutable_value', 'const value in object in cache');

# 9. Use util to check types
ok(is_hash(app_config()) ? 1 : 0, 'util works with slot value');

# 10. Cleanup cache - verify no crashes
app_cache()->clear;
is(app_cache()->size, 0, 'cache cleared');

xs/const/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/const/ppport.h  view on Meta::CPAN

VTBL_substr|5.005003||Viu
VTBL_sv|5.005003||Viu
VTBL_taint|5.005003||Viu
VTBL_uvar|5.005003||Viu
VTBL_vec|5.005003||Viu
vTHX|5.006000||Viu
VT_NATIVE|5.021004||Viu
vtohl|5.003007||Viu
vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
vwarn|5.006000|5.003007|
vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu

xs/doubly/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/doubly/ppport.h  view on Meta::CPAN

VTBL_substr|5.005003||Viu
VTBL_sv|5.005003||Viu
VTBL_taint|5.005003||Viu
VTBL_uvar|5.005003||Viu
VTBL_vec|5.005003||Viu
vTHX|5.006000||Viu
VT_NATIVE|5.021004||Viu
vtohl|5.003007||Viu
vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
vwarn|5.006000|5.003007|
vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu

xs/file/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/file/ppport.h  view on Meta::CPAN

VTBL_substr|5.005003||Viu
VTBL_sv|5.005003||Viu
VTBL_taint|5.005003||Viu
VTBL_uvar|5.005003||Viu
VTBL_vec|5.005003||Viu
vTHX|5.006000||Viu
VT_NATIVE|5.021004||Viu
vtohl|5.003007||Viu
vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
vwarn|5.006000|5.003007|
vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu

xs/heap/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/heap/ppport.h  view on Meta::CPAN

VTBL_substr|5.005003||Viu
VTBL_sv|5.005003||Viu
VTBL_taint|5.005003||Viu
VTBL_uvar|5.005003||Viu
VTBL_vec|5.005003||Viu
vTHX|5.006000||Viu
VT_NATIVE|5.021004||Viu
vtohl|5.003007||Viu
vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
vwarn|5.006000|5.003007|
vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu

xs/lru/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/lru/ppport.h  view on Meta::CPAN

VTBL_substr|5.005003||Viu
VTBL_sv|5.005003||Viu
VTBL_taint|5.005003||Viu
VTBL_uvar|5.005003||Viu
VTBL_vec|5.005003||Viu
vTHX|5.006000||Viu
VT_NATIVE|5.021004||Viu
vtohl|5.003007||Viu
vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
vwarn|5.006000|5.003007|
vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu

xs/noop/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/noop/ppport.h  view on Meta::CPAN

VTBL_substr|5.005003||Viu
VTBL_sv|5.005003||Viu
VTBL_taint|5.005003||Viu
VTBL_uvar|5.005003||Viu
VTBL_vec|5.005003||Viu
vTHX|5.006000||Viu
VT_NATIVE|5.021004||Viu
vtohl|5.003007||Viu
vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
vwarn|5.006000|5.003007|
vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu

xs/nvec/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/nvec/ppport.h  view on Meta::CPAN

VTBL_substr|5.005003||Viu
VTBL_sv|5.005003||Viu
VTBL_taint|5.005003||Viu
VTBL_uvar|5.005003||Viu
VTBL_vec|5.005003||Viu
vTHX|5.006000||Viu
VT_NATIVE|5.021004||Viu
vtohl|5.003007||Viu
vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
vwarn|5.006000|5.003007|
vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu

xs/object/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/object/ppport.h  view on Meta::CPAN

VTBL_substr|5.005003||Viu
VTBL_sv|5.005003||Viu
VTBL_taint|5.005003||Viu
VTBL_uvar|5.005003||Viu
VTBL_vec|5.005003||Viu
vTHX|5.006000||Viu
VT_NATIVE|5.021004||Viu
vtohl|5.003007||Viu
vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
vwarn|5.006000|5.003007|
vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu

xs/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/ppport.h  view on Meta::CPAN

VTBL_substr|5.005003||Viu
VTBL_sv|5.005003||Viu
VTBL_taint|5.005003||Viu
VTBL_uvar|5.005003||Viu
VTBL_vec|5.005003||Viu
vTHX|5.006000||Viu
VT_NATIVE|5.021004||Viu
vtohl|5.003007||Viu
vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
vwarn|5.006000|5.003007|
vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu

xs/slot/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/slot/ppport.h  view on Meta::CPAN

VTBL_substr|5.005003||Viu
VTBL_sv|5.005003||Viu
VTBL_taint|5.005003||Viu
VTBL_uvar|5.005003||Viu
VTBL_vec|5.005003||Viu
vTHX|5.006000||Viu
VT_NATIVE|5.021004||Viu
vtohl|5.003007||Viu
vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
vwarn|5.006000|5.003007|
vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu

xs/util/ppport.h  view on Meta::CPAN

The default namespace is C<DPPP_>.

=back

The good thing is that most of the above can be checked by running
F<ppport.h> on your source code. See the next section for
details.

=head1 EXAMPLES

To verify whether F<ppport.h> is needed for your module, whether you
should make any changes to your code, and whether any special defines
should be used, F<ppport.h> can be run as a Perl script to check your
source code. Simply say:

    perl ppport.h

The result will usually be a list of patches suggesting changes
that should at least be acceptable, if not necessarily the most
efficient solution, or a fix for all possible problems.

xs/util/ppport.h  view on Meta::CPAN

vform||5.006000|
visit|||
vivify_defelem|||
vivify_ref|||
vload_module|5.006000||p
vmess||5.006000|
vnewSVpvf|5.006000|5.004000|p
vnormal||5.009002|
vnumify||5.009000|
vstringify||5.009000|
vverify||5.009003|
vwarner||5.006000|
vwarn||5.006000|
wait4pid|||
warn_nocontext|||vn
warner_nocontext|||vn
warner|5.006000|5.004000|pv
warn|||v
watch|||
whichsig|||
write_no_mem|||

xt/c-compat.t  view on Meta::CPAN

            
            # Skip checks marked to skip
            next if $check->{skip_functions};
            
            if ($content =~ $check->{pattern}) {
                # For negative patterns, skip if the negative pattern matches
                if ($check->{negative_pattern}) {
                    next if $content =~ $check->{negative_pattern};
                }
                
                # For patterns with required_guards, verify all guards are present
                if ($check->{required_guards}) {
                    my $all_guards_present = 1;
                    for my $guard (@{$check->{required_guards}}) {
                        unless ($content =~ $guard) {
                            $all_guards_present = 0;
                            last;
                        }
                    }
                    next if $all_guards_present;  # Properly guarded, skip
                }
                
                # For files using true/false, verify compat header
                if ($check->{requires_compat} && !$is_compat) {
                    next if $has_compat;
                    # Also check if it's in a compat-included header chain
                    next if $file =~ /\.h$/ && $content =~ /_compat\.h/;
                }
                
                push @issues, {
                    file => $rel_file,
                    check => $check_name,
                    severity => $check->{severity},



( run in 3.706 seconds using v1.01-cache-2.11-cpan-13bb782fe5a )