2015-09-08 2 views

ответ

3

test2($var) проходит один скаляр к test2 ($var), так что один скалярная присваивается @array от my (@array) = @_;.

значение скаляра в вопросе ($var) является undef, так как вы не назначен «ничего» в $var в my ($var) = @_;.

Может быть, вы хотите test2(@_) (проходит нулевой скаляры в @_) вместо test2($var) (проходит один скаляр $var)?

+0

Это именно то, что я хочу. Благодаря! – tjwrona1992

+0

'test2 (определенный ($ var)? $ Var:())' aka 'test2 ($ var //())' также может представлять интерес. – ikegami

+0

На самом деле, сделав немного больше копания, я нашел это: 'BEGIN {* test = \ & test2}', что делает функцию 'test' по определению такой же, как' test2', создающей псевдоним для этой функции. Это действительно функциональность, которую я искал. – tjwrona1992

1

Внутри test, $var устанавливается в undef заданием. Поэтому ваш вызов test2 передает список с одним элементом, undef.

Смежные вопросы