http://qs1969.pair.com?node_id=575236


in reply to Test::Warn, 'use' vs 'require'

use
eval { require Test::Warn; Test::Warn->import(@use_args); };
See use

update: in other words, require does NOT import anything. if you want to use "require" as a replacement for "use" you'll have to call import() by hand.

Replies are listed 'Best First'.
Re^2: Test::Warn, 'use' vs 'require'
by asarih (Hermit) on Sep 27, 2006 at 20:09 UTC
    The eval block appears to fail even on a system that does have Test::Warn. The content of "$@" is:
    Undefined subroutine &Test::Warn::import called at t/01-test_errors.t line 13.
    
        Oops. You're right. I did have Test::Warn::import.

        I fixed this typo, but all the same, I get the same error as before and the test script dies.

        $ perl t/01-test_errors.t 
        1..43
        $@: 
        ARRAY(0x6acb08) is not a hash reference.
        ok 1 - non-hash reference to cpf2data()
        Can't call method "warning_like" without a package or object reference at t/01-test_errors.t line 18.
        # Looks like you planned 43 tests but only ran 1.
        # Looks like your test died just after 1.
        
        Here, ARRAY... is the warning that I want to trap.