|
|||||||||||||||||||||||||||
Peter Andreasen wrote:
>
> * Kim Schulz (sslug@sslug) [2000-08-27 20:03]:
>
> > vi skal have alt mellem <para TRANS> og </para> (hvor para ikke
> > nødvendigvis er para), dog skal alle tags(<...></...>) fjernes.
> > der skal tages højde for linieskift, da der skal sættes \n ind ved hvert
> > linieskift.
>
> Nu ved jeg ikke hvor sofistikeret en løsning I vil have. Hvis det skal
> være quick-and-dirty kan I prøve noget i stil med
>
> $text = q{
> <para TRANS>Foo
> bar
> </para>
> <para TRANS>
> foo<bar
> option=p>baz</bar>
> </para>
> };
>
> @paras = split m-</para>.*?<para TRANS>-s,
> $text; # NOTE: s option and non-greedy match (*?)
> foreach (@paras) {
> s-</?[^>]*>--gs; # NOTE: g,s option and non-greedy match.
> print "\nParagraph:\n";
> print;
> }
>
> Som udskriver:
>
> Paragraph:
>
> Foo
> bar
>
> Paragraph:
>
> foobaz
>
> Hvis det skal være mere avanceret kan I kigge på cpan efter XML/HTML
> parsere eller hvis det skal være vildt bruge Parse::RecDescent som er et
> genialt modul til at lave parsere.
Da dette er et script der senere skal destribueres, så er det ikke smart
med andre moduler....
jeg får jo selve teksten der skal parses ind fra en xml fil og denne fil
indeholder ikke bare en, men flere af de blokke af tekst som jeg sendt
med forrige post. Derfor skal jeg vel have læst denne tekst ind på en
smart måde? er det smartest at læse hele filen ind i en variabel med en
slurp eller er der en smartere måde (eller pænere måde, da slurp jo ikke
ligefrem er en køn løsning)?
MVH
Kim
|
||||||||||||||
|
||||||||||||||