Leser: 28
1
2
3
4
foreach $token (@newtokens) {
$token =~ s/\@\@\@\@ ~~~~/ /sig;
foreach $tag (@tags) { $token =~ s/~~~~(\/*.*?)\@\@\@\@/<$1>/sig; }
}
2010-03-14T12:33:39 biancaIch find es gerade auch etwas merkwürdig.
Wenn in der inneren Schleife wenigstens $tag verwendet würde, vielleicht. Aber so?
Funktioniert denn alles wie gewünscht?
Watt soll datt Dingens denn machen?
2010-03-14T13:22:49 lichtkindmeinst du statt $1 nicht $_?
da $1 ein gefundenes subpattern der anderen regex wäre schaute ich da nach und fand keine runde klammern? du willst ja in der innderen schleife nachsehen ob einer der tags da ist. und da kommt man halt auf den gedanken wie mein vorposter.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
##
## 'Globale' Variablen
## 'cre': 'compiled regular expression' with qr//;
our $nbsp = ' ';
our $creUnmangleNbsp = qr#\@\@\@\@ ~~~~#sio;
our $creMangledBrackets = qr#~~~~(\/*.*?)\@\@\@\@#sio;
##
# in Funktion:
foreach my $token ( @$refNewtokens ) {
## WAS: $token =~ s/\@\@\@\@ ~~~~/ /sig;
$token =~ s/$creUnmangleNbsp/$nbsp/go;
$token =~ s/$creMangledBrackets/<$1>/go;
} ## end foreach
2010-03-14T14:42:28 Corvinstimmt, ich habe testweise mal '$_' genommen, aber das gab wie zu erwarten nichts sinnvolles.
2010-03-14T14:42:28 CorvinMeine Vermutung ist, dass der Programmierer zuerst das über eine Schleife über das Array @tags probiert hat, dann den besseren regulären Ausdruck gefunden/implementiert hat, aber die innere Schleife nicht entfernt hat.
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/usr/bin/perl -w use strict; use warnings; my @newtokens; push @newtokens,'foo'; my @tags; push @tags,'bar'; foreach $token (@newtokens) { $token =~ s/\@\@\@\@ ~~~~/ /sig; foreach $tag (@tags) { $token =~ s/~~~~(\/*.*?)\@\@\@\@/<$1>/sig; } }
1
2
3
4
5
Global symbol "$token" requires explicit package name at test14.pl line 8.
Global symbol "$token" requires explicit package name at test14.pl line 9.
Global symbol "$tag" requires explicit package name at test14.pl line 10.
Global symbol "$token" requires explicit package name at test14.pl line 11.
Execution of test14.pl aborted due to compilation errors.