Thread Subroutine mehrere male ausführen (3 answers)
Opened by Line at 2014-10-19 23:31

Gast Line
 2014-10-20 16:05
#177905 #177905
2014-10-20T00:19:28 Raubtier
ich habe 2 Anmerkungen:
Funktionen werden in Perl i.A. ohne das &-Zeichen aufgerufen. Das & hat im Prinzip 2 Effekte, die man meist nicht haben will: Prototypen werden aufgehoben und Funktionsaufrufe ohne Argumente bekommen Standardargumente. Gut, es gibt vielleicht noch den Fall, dass eine sub erst später (weiter unten im Code) definiert wird und du schon vorher auf sie verweisen willst. Aber generell ist & vor Funktionen ein Zeichen für Uralt-Perl.

2.Anmerkung:
Unendlich viele Male wirst du eine Funktion niemals ausführen können... In einer Endlosschleife existiert per Definition auch kein letzter Durchlauf. Was du wahrscheinlich meinst, ist mir dann erst mit Linuxers Antwort klar geworden. Für die Zukunft wäre daher eine genauere Problembeschreibung gut :-)
Dein getid liefert ja ein Array zurück. Und dann scheinst du ja für alle Elemente wieder getid aufrufen zu wollen. Dann hast du aber so viele neue Arrays wie vorher Elemente. Und dann soll nun getid für welche Werte aufgerufen werden? Wenn ichs mir genau überlege, ist mir doch nicht 100% klar, wie das Ergebnis sein soll!



Danke dir ich werde das mit dem Aufrufen der Funktionen ohne das & in Zukunft beachten.

Tut mir leid das ich mein Vorhaben gestern nicht eindeutig klar gemacht habe.
Hier nochmal:
Es handelt sich dabei um ein Script welches mithilfe von Get und Json Namen aus einer Seite extrahiert.

getid führt dabei den Get befehl aus und extrahiert mithilfe von Json 5 Namen die einem Nutzer folgen (und fügt diese in einer Mysql Datenbank hinzu). Da ich nicht möchte das bei 5 Nutzern Schluss ist würde ich gerne für diese 5 Nutzer getid nochmals ausführen und das soll immer wieder wiederholt werden. Getid extrahiert 5 Nutzer diese werden der Mysql hinzugefügt aber gleichzeitig soll von diesen 5 Nutzern jeweils erneut 5 Nutzer extrahiert werden.

Code: (dl )
my @names = &getid($firstcookie,$first_mech,'test'); #Führt den ersten durchlauf aus der von dem Nutzer 'test' 5 Verfolger extrahiert, diese werden dann im array @names zurückgegeben.


Code: (dl )
1
2
3
4
5
foreach my $names(@names) {
&getid($firstcookie,$first_mech,$names);
undef $names;
}
# für jeden namen der im ersten durchlauf zurückgegeben wurde soll getid erneut durchlaufen. Das Programm soll das alles immer wieder tun.



Mir ist aufgefallen das die Array unglaublich groß sein wird deswegen habe ich auch bei der foreach schleife ein undef hinzugefügt.

Ich hoffe es ist klarer geworden was ich meine, ich würde mich freuen wenn jemand einen Tipp hätte, oder ein code sample der zeigt wie das geschickt gelöst werden kann.
Last edited: 2014-10-20 16:09:50 +0200 (CEST)

View full thread Subroutine mehrere male ausführen