Hi friend,
According to your script, First perl checks the hai() in parent package(C). If it is not available then it will check the package Bn. If it is not available there also then it will check package A. If that hai() is not available in package A then it will check the UNIVERSAL package.
If that function is not available in Universal package then control comes to package C(parent packege). Here it will check the Autoload(), If it is not available then it will check the Autoload() in the following order as package Bn, package A , Universal.
That's why your script prints "Calling from Universal".