http://www.perlmonks.org?node_id=755684

manoj_speed has asked for the wisdom of the Perl Monks concerning the following question:

I executed the following code.
#!/usr/bin/perl { package UNIVERSAL; sub AUTOLOAD { print "Calling from Universal\n"; } 1; } { package A; our $var=0; 1; } { package Bn; use base qw(A); #sub AUTOLOAD #{ # print "Calling from Package Bn\n"; #} 1; } { package C; use base qw(Bn); 1; } C->hai();

In the above code, I called the hai() function.

If I declared the function AUTOLOAD() in Bn package (as well as in universal package also), and executed the script, it prints the message as "Calling from Package Bn".

After commenting the AUTOLOAD() function(which is declared in Bn package) I executed the same program it prints the message as "Calling from Universal".

In which order perl checks the function availablity.(In which order it gets executed).

-- The wisest mind has something yet to learn.