Say podprogram Perl zwraca tablicę:W jaki sposób mogę uzyskać dostęp do elementów zwracanych przez podprogram Perl?
sub arrayoutput
{
...some code...
return @somearray;
}
Chcę dostęp tylko konkretny element tablicy z tym powiedzieć, że w pierwszej kolejności. Mogłem więc:
@temparray=arrayoutput(argument);
, a następnie odsyłać do $temparray[0]
.
Jednak ten krótki opis nie działa: $arrayoutput(some argument)[0]
.
Jestem przyzwyczajony do Pythona i nowego w Perlu, więc nadal szukam krótkiego, intuicyjnego, podobnego do Pythona sposobu (a=arrayoutput(some argument)[0]
), aby uzyskać tę wartość. Moje programy w Perl robią się bardzo długie i używanie tymczasowych tablic, jak to wydaje się brzydkie. Czy jest jakiś sposób, żeby to zrobić w Perlu?
+1, to działa. Ale znowu muszę utworzyć pośrednią zmienną, aby uzyskać dostęp do wartości. Ale jest to o jeden krok lepszy, ponieważ mogę go przynajmniej użyć, kiedy i tak potrzebuję zmiennej przypisania. Ale nie w innych scenariuszach, powiedzmy 'print (foo()) [3]' statement lub 'if ((foo()) [3] ...)'. –
Możesz zrobić obie te rzeczy. Zobacz moją zaktualizowaną odpowiedź. – toolic
Zauważ, że 'print (foo()) [7]' nie działa zgodnie z oczekiwaniami, ponieważ perl zakłada, że nawiasy należą do wywołania funkcji, i w ten sposób analizuje je jako równoważne '(print foo()) [7] '. Albo 'print ((foo()) [7])' lub, bardziej idiomatycznie, 'print + (foo()) [7]' będzie działać. –