##############################################################################
#      $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 :