linux-l: Hallöle mal wieder

Jens Dreger jens.dreger at physik.fu-berlin.de
Mi Aug 30 11:13:17 CEST 2000


On Wed, Aug 30, 2000 at 10:47:01AM +0200, Manuel Tennert wrote:
> Habe ein kleines Problemchen und zwar will ich mit Hilfe eines
> Perl-Scripts einige ENTER's wegbekommen und zwar an einer bestimmten
> Stelle. Ich will vor einem Tag wie z.B. </note> ein ENTER wegwischen.
> Mein Versuch war:
> $string =~ s/\n<\/note>/<\/note>/g;
> Leider klappt der Versuch nicht, daß ENTER bleibt weiterhin erhalten....

Dochdoch, das geht:

--------8<----------
#!/usr/local/bin/perl -w
my $string = "1\n</note>\n2\n";
print $string;
$string =~ s/\n<\/note>/<\/note>/g;
print '-'x80,"\n";
print $string;
-------8<-------------

Output:
dreger at smart:..dreger/belug> ./enter.pl
1
</note>
2
--------------------------------------------------------------------------------
1</note>
2

Wenn es bei Dir nicht geht, liegt das eher an der Art und Weise wie Du
die Strings einliest. Wenn Du irgendwo ein <> oder <FILE> stehen hast,
holst Du die Strings ja zeilenweise. Daher kann \n</note> nirgends
vorkommen, weil die Strings immer nur von ENTER zu ENTER reichen.

Problem laesst sich leicht beheben, wenn man im Paragraph-Mode
einliest oder die ganze Datei auf einen Schlag in einen String packt.

Siehe "man perlvar" -> $/:

                   undef $/;           # enable "slurp" mode
                   $_ = <FH>;          # whole file now here

Siehe auch "man perlrun" -> -0.

Gruss,

Jens.



Mehr Informationen über die Mailingliste linux-l