############################################################################## # $URL: iables/ProhibitLocalVars.run $ # $Date: 2006-11-27 01:10:30 -0800 (Mon, 27 Nov 2006) $ # $Author: thaljef $ # $Revision: 975 $ ############################################################################## ## name Forgot to "use Carp", from inside main ## failures 4 ## cut print $Carp::VERSION; print @Carp::EXPORT; carp("I died"); &carp("I died"); #----------------------------------------------------------------------------- ## name Forgot to "use Carp", from inside a package ## failures 4 ## cut package Foo; print $Carp::VERSION; print @Carp::EXPORT; carp("I died"); &carp("I died"); #----------------------------------------------------------------------------- ## name Misspelled package name, from inside main ## failures 4 ## cut use Carp; print $Crap::VERSION; print @Crap::EXPORT; Crap::carp("I died"); &Crap::crap("I died"); #----------------------------------------------------------------------------- ## name Misspelled package name, from inside a package ## failures 4 ## cut package Foo; use Carp; print $Crap::VERSION; print @Crap::EXPORT; Crap::crap("I died"); &Crap::carp("I died"); #----------------------------------------------------------------------------- ## name Misspelled sub name, from inside main ## failures 2 ## cut use Carp; Carp::crap("I died"); &Carp::crap("I died"); #----------------------------------------------------------------------------- ## name Misspelled sub name, from inside a package ## failures 2 ## cut package Foo; use Carp; Carp::crap("I died"); &Carp::crap("I died"); #----------------------------------------------------------------------------- ## name Automatic import succeds, from inside main ## failures 0 ## cut use Carp; carp "I died"; carp("I died"); &carp("I died"); #----------------------------------------------------------------------------- ## name Automatic import succeds, from inside a package ## failures 0 ## cut package Foo; use Carp; carp "I died"; carp("I died"); &carp("I died"); #----------------------------------------------------------------------------- ## name Explicit import succeds, from inside main ## failures 0 ## cut use Carp qw(carp); carp "I died"; carp("I died"); &carp("I died"); #----------------------------------------------------------------------------- ## name Explicit import, from inside a package ## failures 0 ## cut package Foo; use Carp qw(carp); carp "I died"; carp("I died"); &carp("I died"); #----------------------------------------------------------------------------- ## name Import disabled, from inside main ## failures 2 ## cut use Carp (); carp("I died"); &carp("I died"); #----------------------------------------------------------------------------- ## name Import disabled, from inside a package ## failures 2 ## cut package Foo; use Carp (); carp("I died"); &carp("I died"); #----------------------------------------------------------------------------- ## name Using fully-qualified name, from inside main ## failures 0 ## cut use Carp (); Carp::carp "I died"; &Carp::carp("I died"); #----------------------------------------------------------------------------- ## name Using fully-qualified name, from inside a package ## failures 0 ## cut package Foo; use Carp (); Carp::carp "I died"; &Carp::carp("I died"); #----------------------------------------------------------------------------- ## name Do not recurse into dependencies, from inside main ## failures 5 ## cut use CGI; #also uses Carp print $Carp::VERSION; print @Carp::EXPORT; carp("I died"); Carp::carp "I died"; &Carp::carp("I died"); #----------------------------------------------------------------------------- ## name Do not recurse into dependencies, from inside a package ## failures 5 ## cut package Foo; use CGI; #also uses Carp print $Carp::VERSION; print @Carp::EXPORT; carp("I died"); Carp::carp "I died"; &Carp::carp("I died"); #----------------------------------------------------------------------------- ## name Things in hash keys are ignored ## failures 0 ## cut use Carp; %hash = (carp => 1); $hash{carp} = 1; #----------------------------------------------------------------------------- ## name Global functions are ignored ## failures 0 ## cut UNIVERSAL::isa( $obj, $class ); UNIVERSAL::can( $obj, $method ); CORE::die("A horrible death"); #----------------------------------------------------------------------------- ## name Lexical variables are ignored ## failures 0 ## cut print %hash; print @array; print $scalar; #----------------------------------------------------------------------------- ## name When a local sub is defined ## failures 0 ## cut print foo(); sub foo {}; #----------------------------------------------------------------------------- ## name When a local subs is not defined ## failures 1 ## cut print foo(); #----------------------------------------------------------------------------- ## name Syntax oddities ## failures 0 ## cut package Foo; sub ::foo{} sub main::baz{}; print ::foo(); print &::foo(); print &main::foo(); print ::baz(); print &::baz(); print &main::baz(); #----------------------------------------------------------------------------- ## name Included module not in path ## error /Child process had errors/ ## failures 1 ## cut use FooBar; #----------------------------------------------------------------------------- ## name at_inc configuration ## parms { at_inc => 'tlib' } ## failures 0 ## cut use FooBar; #----------------------------------------------------------------------------- ## name at_inc_prefix configuration ## parms { at_inc_prefix => 'tlib' } ## failures 0 ## cut use FooBar; #----------------------------------------------------------------------------- ## name Inner packages ## parms { at_inc_prefix => 'tlib', max_recursion => 1 } ## failures 0 ## cut use FooBar; # Has inner package called "InnerFooBar" InnerFooBar::inner_subroutine(); &InnerFooBar::inner_subroutine(); #----------------------------------------------------------------------------- ## name at_inc_suffix configuration ## parms { at_inc_suffix => 'tlib' } ## failures 0 ## cut use FooBar; #----------------------------------------------------------------------------- ## name AUTOLOADers ignored by default ## failures 0 ## cut use CGI; # Has 'sub AUTOLOAD {...}' CGI::FooBar(); #----------------------------------------------------------------------------- ## name AUTOLOADers inspected on request ## parms { inspect_autoloaders => 1 } ## failures 1 ## cut use CGI; # Has 'sub AUTOLOAD {...}' CGI::FooBar(); #----------------------------------------------------------------------------- ## name require'd modules are ignored by default ## failures 1 ## cut require Carp; Carp::croak( "I died" ); #----------------------------------------------------------------------------- ## name require'd modules are inpsected on request ## parms { inspect_required_modules => 1 } ## failures 0 ## cut require Carp; Carp::croak( "I died" ); #----------------------------------------------------------------------------- ## name Cannot detect symbols imported at run time ## parms { inspect_required_modules => 1 } ## failures 1 ## cut require Carp; Carp->import( "croak" ); croak( "I died" ); ############################################################################## # Local Variables: # mode: cperl # cperl-indent-level: 4 # fill-column: 78 # indent-tabs-mode: nil # c-indentation-style: bsd # End: # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab :