Thread regex ups? (6 answers)
Opened by oblivion at 2006-01-21 19:52

Strat
 2006-01-23 17:33
#62119 #62119
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
1. es kann gefaehrlich sein, den Inhalt von $/ zu aendern, wenn man noch weitere Dateien (oder aehnliches) einliest. Sicherer ist es, nur eine lokal gueltige Kopie von $/ zu veraendern, z.B.
Code: (dl )
1
2
3
4
5
6
7
8
open (LSHAL, .....) or die;
{ # Block
local $/ = "irgendwas";
while (<LSHAL>) {
...
} # while
} # Block
close (LSHAL);

dann ist die gueltigkeit von $/ nur auf den Block eingeschraenkt.

2. es kann gefaehrlich sein, while (<LSHAL>) zu verwenden, weil hier $_ kein Alias auf die Zeile ist (wie z.B. bei for(each), map/grep).
Code: (dl )
1
2
3
4
5
6
7
8
9
10
my $x = 30;
while (<STDIN>) {
print "Vorher: $_\n";
&Machwas();
print "Nachher: $_\n";
} # while
sub Machwas {
$_ = $x;
if (/0/) { print "Null drinnen\n"; }
}

besser mit einer expliziten Variable arbeiten: while (my $block = <LSHAL>) {
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread regex ups?