Thread Regexp: Ersetzungsausdruck mitbenutzen (25 answers)
Opened by #Kein Kommentar at 2008-07-12 21:22

KurtZ
 2008-07-14 00:12
#112066 #112066
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
KurtZ+2008-07-13 16:18:34--
NACHTRAG: [*] ich kapier jetzt auch erst so langsam dass man es nicht nur auf Zeilennummern anwenden kann.


In der Tat nützlich, wenn man Teilintervalle in Schleifen greifen möchte.
Die Perldoc dazu sieht eher nach Spezialistentum bei Textprocessing und Sed-Emulation aus, aber man kann es viel allgemeiner anwenden:

Ich hab gleichmal versucht es zu emulieren mit einer sub "episode"

Code (perl): (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/perl
use Data::Dumper;

@in=qw( ich du er sie es wir ihr sie sonstwas);


$\="\t";
print;
for (@in,@in) {
        print;
        print "1: $_" if /wir/ .. /sie/;
        print "2: $_" if ($_ eq "wir") .. ($_ eq "sie");
        print "3: $_" if episode ( ($_ eq "wir") , ($_ eq "sie") , "plural3" );
        print "4: $_" if episode ( scalar(/wir/) , scalar(/sie/), "plural4" );
#       print "5: $_" if episode ( /wir/ , /sie/, "plural5" );
        print "\n";
}


{ my %flipflop; 
  sub episode ($$$) {
          my ($start,$end,$label)=@_;
#         print Dumper \@_ if @_ != 3;

          $flipflop{$label}=1 if $start;
          my $return=$flipflop{$label};
          $flipflop{$label}=0 if $end;

          return $return;
  }
}

__END__

        ich     
        du      
        er      
        sie     
        es      
        wir     1: wir  2: wir  3: wir  4: wir  
        ihr     1: ihr  2: ihr  3: ihr  4: ihr  
        sie     1: sie  2: sie  3: sie  4: sie  
        sonstwas        
        ich     
        du      
        er      
        sie     
        es      
        wir     1: wir  2: wir  3: wir  4: wir  
        ihr     1: ihr  2: ihr  3: ihr  4: ihr  
        sie     1: sie  2: sie  3: sie  4: sie  
        sonstwas        


Beispiel 5 funktioniert nicht wie gewollt, weil m// im Listenkontext evaluiert wird. Ich muss umständlich Skalarenkontext erzwingen, da hilft leider auch kein Protyping.

Hat jmd vielleicht ne gute Idee?
TMTOWTDYOG (there's more than one way to dig your own grave)

View full thread Regexp: Ersetzungsausdruck mitbenutzen