Calocybe: WICHTIG! Verhindern von Tastendruck

Beitrag lesen

Hallo Andreas!

Du kannst auch | für das Pipe-Zeichen schreiben. Das sähe dann z.B. so aus:
$zeile =~ s/\015|\012//g;

Gute Idee. Hilft zwar leider auch nur fuer den Beitrag ansich, nicht in den Followups (dort sind die Entities dann schon aufgeloest, also wieder zum Zeichen geworden, welches dann ausgefiltert wird), aber ist auf jeden Fall besser als nichts.

Ich würde aber die Zeilenumbrüche durch Leerzeichen ersetzten, also so:
$zeile =~ s/\015\012|\015|\012/ /g;

Naja, soll er schon selber entscheiden, in was er die umwandeln will. ;-)

Ich will nochmal auf diesen Ausdruck zurueckkommen, denn ich hatte da noch eine Anmerkung (<../../sfarchiv/2000_2/t12489.htm#a64058>), als wir das neulich besprochen hatten. Die Frage war, ob bei Vorkommen eines \015\012 dieses auch wirklich als Ganzes erkannt wird. Koennte ja auch sein, dass erst ein \015 und dann ein \012 erkannt wird, also zwei Zeilenumbrueche, obwohl es ja nur einer ist.

Also nun hab ich das endlich mal ausprobiert: Erwartungsgemaess kommt es auf die Reihenfolge im RegExp an. Consider this piece of code:

T:\files> perl -w
use Data::Dumper ();
$Data::Dumper::Useqq = 1;
$x = "foo\012laber\015\012dumm\015brot";
print Data::Dumper::Dumper($x);
$x =~ s/\015\012|\015|\012/\n/g;
print Data::Dumper::Dumper($x);
^Z
$VAR1 = "foo\nlaber\r\ndumm\rbrot";
$VAR1 = "foo\nlaber\ndumm\nbrot";

Wie gewollt wird \015\012 in ein einzelnes \n umgewandelt.
Wenn ich die Reihenfolge der alternativen Patterns im RegExp jedoch umstelle:

$x =~ s/\015|\012|\015\012/\n/g;

(\015\012 steht jetzt hinten, nicht mehr vorn), kommt fuer den modifizierten String heraus:

$VAR1 = "foo\nlaber\n\ndumm\nbrot";

Es werden also tatsaechlich zwei Umbrueche erkannt. Zwar war das eigentlich zu erwarten, jedoch sollte man bei solchen Dingen doch immer auf Nummer sicher gehen. (Ausprobiert ueberigens auf Perl 5.005_03; ActiveState Distribution Build 521 for Windows (d.h. es gilt "\n" eq "\012").)

Fazit: Der Ausdruck is quite fine as long as \015\012 vorne steht. Fehlt jetzt eigentlich nur noch in <../../sfausles/tsfa_ted.htm>. ( Hallo Frank ;-) )

So lange