Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10112[/thread]

Frage zum substitutionsoperator!



<< >> 2 Einträge, 1 Seite
obilan
 2007-08-17 14:53
#98316 #98316
User since
2007-08-17
1 Artikel
BenutzerIn
[default_avatar]
Ich habe folgendes Problem.
Mein Script soll das "+" gegen " +" ersetzen wenn danach keine geöffnete Klammer folgt und die geöffnete Klammer "(" durch " (" ersetzen wenn vorher kein "+" gefunden wurde?
Wie bringe ich das der Substitution bei`?
Hab bisher folgenden Code, hab die Problematische Stelle mal markiert
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
use strict;

my $eindaten = $ARGV[0] or die "Bitte Datei mit Fremddaten 

als Parameter angeben!\n";
my $ausdaten = "Signaturen.txt";
$ausdaten = "D:/TEMP/signaturen.txt"  if -d "D:/TEMP";

open(IN,  "<$eindaten") or die "Konnte $eindaten nicht 

oeffen : $!";
open(OUT, ">$ausdaten") or die "Konnte $ausdaten nicht 

oeffen : $!";

 
 my $zaehler = 0;
        
        while (<IN>)
         {
         s/\(/ (;
         s/\+/ +;
         my @saetze = ();
         next if /^\s*$/;
         @saetze = split (/\ /);

 my $zaehler++; 
         
         my $notation = $saetze[0];
         my $nummcurr = $saetze[1];
         my $auflage = $saetze[2];
         my $rest = $saetze[3];
         
chomp($notation);
chomp($nummcurr);
chomp($rest);
chomp($auflage);

 print OUT "$notation,$nummcurr,$auflage,$rest\n";

}

Es geht darum, dass eine bestimmte Textdatei mit Buchsignaturen umformatiert wird. Es müssen Kommata an bestimmten Stellen stehen.

Hoffe ihr könnt irgendwie helfen!

An Zeile 20/21 soll der Code mit der Substitution stehen!
renee
 2007-08-17 15:01
#98318 #98318
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use warnings;

my @cases = (
    '2+(',
    '2(',
    '2+3',
);

for my $case ( @cases ){
    $case =~ s~\+(?!\()~ +~g;
    $case =~ s~(?<!\+)\(~ (~g;
    print $case,"\n";
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 2 Einträge, 1 Seite



View all threads created 2007-08-17 14:53.