Thread use verzögert ausführen: geht das? (18 answers)
Opened by Crian at 2004-07-21 17:18

ptk
 2004-07-22 12:02
#84710 #84710
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Crian,22.07.2004, 09:50]Danke für die vielen Lösungsvorschläge.

Initialisierung in new scheidet aus, da die Daten für alle Objekte gleich sind (werden nur gelesen) und deshalb zur Klasse und nicht zum Objekt gehören. Allerdings könnte ich natürlich eine globale Variable haben, die angibt, ob schon eingelesen wurde oder nicht und wenn nicht einlesen.

Interessant finde ich allerdings die Lösung mit der sub import. Ist das ein Sprachmittel, oder kann ich jede Funktion x im Modul M mit x M; starten? Ich denke mal nicht, oder?
[/quote]
Das schimpft sich "indirect object syntax" (siehe auch perldoc perlobj). Diese Syntax ist eigentlich fuer die Schreibweise
Code: (dl )
new Modul $args, ...
gedacht, damit man nicht
Code: (dl )
Module->new($args,...)
schreiben muss, aber man kann es auch anderweitig verwenden:
Code: (dl )
1
2
3
4
5
sub bla {
warn "@_";
}

bla main 1, 2, 3;


Oder hast du eher wegen des "import" gefragt?

Quote
Edit: Ist es bei dieser Lösung

Code: (dl )
1
2
3
4
BEGIN {
# handle parameters
}
use My::Module;


entscheidend, dass der BEGIN Block vor dem use ist? Jaja, ich probiers ja gleich aus ;-)

Ja. BEGIN-Bloecke und use-Statements werden sequentiell abgearbeitet.

View full thread use verzögert ausführen: geht das?