Arrayzugriff nach Funktionsaufruf

28/09/2008 - 16:16 von janismac | Report spam
hallo

ich bin Perl-Neuling.
Ich finds seltsam, dass man nach einem Funktionsaufruf mit Array als
Rückgabe nicht direkt auf dieses zugreifen kann. Zumindest nicht so wie
ich es bisher gemacht habe.


#!/usr/bin/perl -wl


sub test_func
{
return (42,123,345);
}


@x = test_func();
print $x[0]; # Gibt "42" aus;


print test_func()[0]; # Compiler Fehler


was mach ich falsch?
sowas sollte doch in jeder guten Sprache möglich sein ?!

MfG janismac
 

Lesen sie die antworten

#1 Moritz Lenz
28/09/2008 - 16:42 | Warnen spam
janismac wrote:
hallo

ich bin Perl-Neuling.
Ich finds seltsam, dass man nach einem Funktionsaufruf mit Array als
Rückgabe nicht direkt auf dieses zugreifen kann. Zumindest nicht so wie
ich es bisher gemacht habe.

>
#!/usr/bin/perl -wl


sub test_func
{
return (42,123,345);
}


@x = test_func();
print $x[0]; # Gibt "42" aus;


print test_func()[0]; # Compiler Fehler



test_func() ist kein Array, also kann man es auch nicht als Array
dereferenzieren (es gibt auch kein Array zurück, sondern eine Liste)

Mit ein paar Klammern sollte es trotzdem gehen:

print +(test_func)[0];

HTH,
Moritz

Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/

Ähnliche fragen