Thread shifting trouble: shift's Rückgabewert ändert sich durch
(10 answers)
Opened by dukeofnukem at 2007-01-15 15:08
Alohá!
Sieht gut aus hier, grade registriert weil ich einfach keine Idee habe wie folgendes zu Stande kommt: Code: (dl
)
1 # Get fh Wenn ich die Methode mit z.B. mit Code: (dl
)
$class->get_fh("/path/to/file", "write"); aufrufe, bleibt $option uninitialized! Die Ausgabe gibt mir durchaus die korrekte Befüllung von @_ an, und die ersten beiden Parameter werden sauber runtergeshifted, doch wenn es an den letzten geht (bzw. die or-Bedingung evaluiert wird), klappts nicht. Wenn ich die Überprüfung rausnehme und stumpf shifte ist alles wunderbar (bis auf die Tatsache daß ich keinen default-init auf $option machen kann). Selbst wenn ich alternative checks auf Vorhandensein des dritten array-felds nutze wirft das alles über den Haufen: Code: (dl
)
defined(\$_[0]) ? my $option = shift : my $option = "dummy"; sorgt für die gleiche Problematik: es wird weder mit "dummy" initialisiert noch der vorhandene Parameter geshifted und $option zugewiesen. Bin auch mit perl -d durchgesteppt: - das Übergabearray ist korrekt befüllt - bei einfachem shift wird korrekt zugewiesen - bei Überprüfung auf Existenz oder Rückgabwert von shift bleibt $option uninitialisiert Das Problem muß tatsächlich mit der Überprüfung der Befüllung von $option zu tun zu haben; wenn ich folgendes mache und mit perl -d durchsteppe, wird $option korrekt initialisiert doch durch die nächste Zeile wieder auf undef gesetzt. Code: (dl
)
1 DB<14> x $option Hab ich da was komplett falsch verstanden was die Überprüfung der initialisierung von Variablen angeht? Wer kann das Rätsel lösen? :-) TIA DoN drum&bass is a state of mind
|