Thread Tiefe Hash Strukturen aus Config bilden: Und warum while(<FH>) gefährlich ist (62 answers)
Opened by bloonix at 2006-05-09 17:07

murphy
 2006-05-14 03:23
#65842 #65842
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=opi,13.05.2006, 22:34][...]
In nur einem Modul habe ich ein while(my $line = <FH>){} entdeckt,
in den anderen Modulen ein while(<FH>){} ohne local $_; und
auch foreach(<FH>){}.
[...][/quote]
Aber foreach (<FH>) { ... } ist ja eben gerade kein Problem, nur while (<FH>) { ... } ist eines, wenn man einmal davon absieht, dass foreach (<FH>) { ... } eine gewaltige Speicherplatzverschwendung werden kann.

Ich finde aber trotz Strats Erklärungsversuch das Verhalten von while buggy, und zwar aus folgendem Grund: Wäre die while-Bedingung einfach nur eine if-Abfrage, dann sollte man auf keinen Fall erwarten, dass ihr Wert überhaupt in $_ gespeichert wird. Da dies aber doch passiert, und zwar nur in dem speziellen Fall, dass über das Resultat eines readline-Aufrufes iteriert wird, und dabei immerhin noch genug Magie aktiv wird, um ein while (<FH>) { ... } effektiv in ein while (defined($_ = <FH>)) { ... } zu verwandeln, wäre es meines Erachtens sinnvoller auch noch $_ zu lokalisieren, zumal der am Schleifenende in $_ gespeicherte Wert in den allermeisten Fällen reichlich nutzlos ist.
When C++ is your hammer, every problem looks like your thumb.

View full thread Tiefe Hash Strukturen aus Config bilden: Und warum while(<FH>) gefährlich ist