Schrift
[thread]12612[/thread]

Ersetzen ein einzelnen Punktes in einer Zeile durch tr

Leser: 1


<< >> 2 Einträge, 1 Seite
bruci164
 2008-10-09 20:40
#115343 #115343
User since
2008-10-09
1 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

brauche mal Hilfe, auch wenn's in dem Fall peinlich ist ...
Ich will eine Datei einlesen und für den Fall, dass eine Zeile nur aus einem einzelnen Punkt besteht diesen durch ein "-" ersetzen.

Ich lese also die Datei

Hallo ! Dies ist ein Text.
Und ein Datum: 09.10.2008
Außerdem noch ein .
.
Hallo Punkt !!! .
.

in das Skript

#!/usr/local/bin/perl -w

open(TPL,"<text.txt") or die "Sorry ... kann text.txt nicht öffnen!\n";

#loop
while ($search_attribute = <TPL>)
{
print "search_attribute alt : " . $search_attribute;
$search_attribute =~ tr /^\.$/-/;
print "search_attribute neu : " . $search_attribute;
}
close TPL;

ein, erhalte jedoch als Ausgabe

search_attribute alt : Hallo ! Dies ist ein Text.
search_attribute neu : Hallo ! Dies ist ein Text-
search_attribute alt : Und ein Datum: 09.10.2008
search_attribute neu : Und ein Datum: 09-10-2008
search_attribute alt : Außerdem noch ein .
search_attribute neu : Außerdem noch ein -
search_attribute alt : .
search_attribute neu : -
search_attribute alt : Hallo Punkt !!! .
search_attribute neu : Hallo Punkt !!! -
search_attribute alt : .
search_attribute neu : -

=> ??? => Warum werden alle Punkte ersetzt ??? Nur die Zeilen 4 und 6 sollten ersetzt werden !

Die entscheidende Zeile ist

$search_attribute =~ tr /^\.$/-/;

Hier werden alle Zeilen mit einem Punkt am Anfang sowie Ende durch ein "-" ersetzt ... dachte ich zumindest.

Was läuft da falsch ?

Danke und Grüße,
bruci164
moritz
 2008-10-09 20:44
#115344 #115344
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
tr/// erwartet keine Regex wie s///. in perlop sind die Unterschiede erklärt.

Wie wäre es damit?

Code (perl): (dl )
$search_attribute = "-\n" if $search_attribute eq ".\n";
<< >> 2 Einträge, 1 Seite



View all threads created 2008-10-09 20:40.