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:
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.
my @arra = (10,20);