in reply to type glob problem

nagalenoj gave you the correct info; I'm just stating it another way. Your my @arra and your *arra are different and unrelated variables. The *arra is a package variable *main::arra which can, as a typeglob, refer to the variable @main::arra but that has nothing to do with a lexical, aka my, variable named @arra.

You are passing an empty typeglob to doublevalue. This demonstrates that you are passing nothing, loosely speaking, to your function:

my @arra = (10,20); print ">@main::arra<$/"; print ">>@arra<<$/";
Update: With your code, use warnings; would have flagged that the name main::arra was used only once, hinting at the problem. With use diagnostics; the message is more confusing as if it were written before lexical variables were added to the language.

Be well,
rir