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

Strat
 2006-05-11 16:55
#65833 #65833
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich sehe das nicht als bug, sondern als feature

bei for(each) .... (@array)

bildet die laufvariable einen alias auf das element des arrays, ueber das gerade iteriert wird, und nach ende der schleife wird $_ wiederhergestellt, z.B.
Code: (dl )
1
2
3
4
5
6
use warnings; use strict;
my @array = 1..20;
$_ = 'xxx';
print "before: $_\n";
for (@array) { print "Zahl: $_\n" }
print "after: $_\n";


wenn man aber eine while-schleife mit Laufvariable haben will, dann die immer lokalisieren (mit my oder bei $_ mit local). Wenn man z.B schreibt
Code: (dl )
1
2
3
4
5
$_ = 0;
while ($_ < 20) {
print "$_\t";
$_++;
}

hat man ja dasselbe problem. es heisst ja while ( BEDINGUNG ), und wenn man diese Bedingung missbraucht, um eine Laufvariable zu bekommen, muss man selbst die verantwortung fuer die laufvariable uebernehmen.\n\n

<!--EDIT|Strat|1147352219-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

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