Say подпрограмма Perl возвращает массив:Как я могу выборочно обращаться к элементам, возвращаемым подпрограммой Perl?
sub arrayoutput
{
...some code...
return @somearray;
}
Я хочу получить доступ только конкретный элемент массива из этого, скажем, первых. Так что я мог бы сделать:
@temparray=arrayoutput(argument);
, а затем обратитесь к $temparray[0]
.
Но этот вид короткой справки не работает: $arrayoutput(some argument)[0]
.
Я привык к Python и новый для Perl, поэтому я все еще ищу короткий, интуитивный, похожий на питон способ (a=arrayoutput(some argument)[0]
), чтобы получить это значение. Мои программы Perl становятся очень длинными, и использование временных массивов вроде бы кажется уродливым. Есть ли способ в Perl сделать это?
+1, это работает. Но снова мне нужно создать промежуточную переменную для доступа к значению. Но это на один шаг лучше, так как я могу хотя бы использовать его, когда мне все равно понадобится переменное назначение. Но не в других сценариях, скажем, оператор 'print (foo()) [3]' или оператор 'if ((foo()) [3] ...)'. –
Вы можете делать обе эти вещи. См. Мой обновленный ответ. – toolic
Обратите внимание, что 'print (foo()) [7]' не будет работать должным образом, поскольку perl предполагает, что скобки принадлежат вызову функции, и, таким образом, анализирует его как эквивалент '(print foo()) [7] '. Либо 'print ((foo()) [7])' или, более идиоматически, 'print + (foo()) [7]' будет работать. –