linux-l: Hi mal wieder

Manuel Tennert mtennert at meta-systems.de
Fr Jul 28 14:57:39 CEST 2000


> On Fri, Jul 28, 2000 at 02:13:00PM +0200, Manuel Tennert wrote:
> > Aus:
> > if ($string =~ /\\par(.*?)<note>(.*?)<\/note>/) {
> >   $i = $1;
> >   $j = $2;
> >   $string =~ s/\\par(.*?)<note>(.*?)/<note>$j<\/note>\\par$i/g;
> > }
> > wird leider kein Umtauscher...er arbeitet jedenfalls nicht ganz korrekt !
> > Eigentlich will ich nur das was vor <note>bla</note> steht dahinter bringen !
> > Leider nimmt er beim $i noch das </note> mit und den Text der nach <note> steht !
> > Weiß jemand was hier verqueert läuft ??
>
> Also, zunaechst waere es nett, wenn Du cut-n-paste faehige Beispiele
> bringen koenntest, also sowas hier:
>
> --------8<------------
> #!/usr/local/bin/perl -w
>
> $string = shift @ARGV;
>
> if ($string =~ /\\par(.*?)<note>(.*?)<\/note>/) {
>   $i = $1;
>   $j = $2;
>   $string =~ s/\\par(.*?)<note>(.*?)<\/note>/<note>$j<\/note>\\par$i/g;
> }
>
> print $string,"\n";
> --------8<---------------------
>
> Dann eine Beispielzeile:
>
>      ./tausch.pl "\parblah<note>blub</note>"
>
> und was rauskommen soll:
>
>     <note>blub</note>\parblah
>
> Das wuerde es etwas vereinfachen. Nun, der Fehler ist in meiner
> Version schon behoben. Ansonsten wuerde ich das ganze durch die Zeile
>
>         $string =~ s|(\\par.*?)(<note>.*?</note>)|${2}${1}|;
>
> ersetzen. Die Ersetzung findet sowieso nur statt, wenn der erste Teil
> matched. Damit ist das if(...) ueberfluessig.
>
> Nur so eine Idee...
>
> Gruss,
>
> Jens.

Danke für die schnelle Hilfe, funktioniert !!



Mehr Informationen über die Mailingliste linux-l