...if an AUTOLOAD subroutine is defined in the package or packages used to locate the original subroutine, then that AUTOLOAD subroutine is called with the arguments that would have been passed to the original subroutine. The fully qualified name of the original subroutine magically appears in the global $AUTOLOAD variable of the same package as the AUTOLOAD routine #### # the following code throws a compile time error package TestPackage; use strict; sub AUTOLOAD { print $AUTOLOAD, " is not available\n"; } # this code is fine package TestPackage; use strict; our $AUTOLOAD; # 'use vars qw( $AUTOLOAD )' works too sub AUTOLOAD { print $AUTOLOAD, " is not available\n"; }