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