caller求解



[Copy to clipboard] [ - ]
CODE:
package module;
use vars qw($message);
$message = "I am here";
sub import {
    $package = shift;
    my $caller = caller(1);
    *{"$caller\:\:message"} = \$message;
    *{"$caller\:\:package"} = \$package;
}

在这里caller会返回调用这个import函数的main包

但在

[Copy to clipboard] [ - ]
CODE:
package hello;
sub a{
    my $b = caller(1) ;
    print "\n",$b;
}
&a;

里面会报错说$b 没有赋值
why?
caller(n)到底是个什么用法
不要说perldoc -f caller偶看了没看懂