Thread nested local() scoping: @ARGV und $/ (6 answers)
Opened by dukeofnukem at 2007-02-15 20:49

dukeofnukem
 2007-02-15 20:49
#74365 #74365
User since
2007-01-15
47 Artikel
BenutzerIn
[default_avatar]
Alohá!

Folgendes Phänomen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sub get_errors {
my $file = $_[0];
my $cont = do { local( @ARGV, $/ ) = $file; <> };
<regexp auf $cont mit $_[1] hier>
$1;
}

sub main {
local @ARGV = @_;
@ARGV = glob '<Dateiglob hier>' unless @ARGV;
local $/ = "\n\n\n";
[...]
while (<>) {
if (<regexp hier>) {
$stat{$rtsdir}{'errors'}++;
if ($opts{'errors'}) {

my $error = get_errors($anotherfile, $case);
[...]
}
next;
}
[...]
}
}


Ist die Option nicht gesetzt, habe ich ca. 4000 Iterationen, mit gesetzter Option kommen nur 1700 zurück...

Der Trenner \n\n\n ist normalerweise der Beginn eines neuen Abschnitts in der Datei die ich analysieren möchte (die in @ARGV enthalten ist). Wenn ich beim Durchlaufen einer dieser Dateien auf einen Fehler laufe ist der Grund für diesen Fehler in einer anderen Datei ($anotherfile) zu finden die ich dann mittels get_errors nach dem Grund durchforste.

Habe mir schon @ARGV und S/ vor und nach dem Aufruf von get_errors printen lassen und keinen Unterschied feststellen können ~:-/

Was mache ich falsch?\n\n

<!--EDIT|dukeofnukem|1171565672-->
drum&bass is a state of mind

View full thread nested local() scoping: @ARGV und $/