perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 23
Click for quality!




11.02.2012 / 22:52

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragEinen Rückgabewert (Array) verwenden
Seitenanfang
Hallo community,

ich habe eine Funktion, welche eine Datei einließt und diese als Array zurückgibt.

Das funktioniert ja:


print ( (readFile ("C:/Test.txt"))[0] );

Das allerdings nicht:


print ( $#(readFile ("C:/Test.txt")) );

Mir ist klar, dass der Code falsch ist, aber wie kann ich den letzten Indexeintrag des Arrays wiedergeben, ohne mit einem extra "my @array = ...."?

Datum: 14.03.2007-09:30

Beitragre: Einen Rückgabewert (Array) verwenden
Seitenanfang
$array[-1]

Datum: 14.03.2007-10:36

Beitragre: Einen Rückgabewert (Array) verwenden
Seitenanfang
Das gibt mir leider nicht den Indexwert zurück, sondern den Inhalt von diesem Arrayelement.

Datum: 14.03.2007-11:47

Beitragre: Einen Rückgabewert (Array) verwenden
Seitenanfang
Bestenfalls gibst du kein Array zurück sondern eine Referenz darauf, dann kannst du ganz gewöhnlich darauf zugreifen, ohne dass die Daten doppelt im Speicher abgelegt werden.


sub readFile {

# ...

return \@array;
}

my $arrayref = readFile($file);

# 1. Element ausgeben
printf("%s\n", $arrayref->[0]);

# letzte Element ausgeben
printf("%s\n", $arrayref->[-1]);

# Indexnr. des letzten Elements
printf("%d\n", $#{$arrayref});


print ( $#(readFile ("C:/Test.txt")) );

Die korrekte Syntax wäre

print ( $#{readFile ("C:/Test.txt")} );

die liefert jedoch auch nicht den richtigen Wert da du in Wirklichkeit kein Array zurück gibst sondern eine Liste.
Eine Möglichkeit die Anzahl der zurückgegebenen Elemente on-the-fly zu bestimmt

my $anzahl = scalar readFile ("C:/Test.txt");

Aber warum würde man so etwas machen wollen, sehe da keinen wirklichen nutzen drin.

Datum: 14.03.2007-13:04

-






-
-