/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
perl opgave
Fra : Lars Madsen


Dato : 02-07-02 11:55

Nu er jeg ikke selv så meget inde i perl, så følgende problem kan jeg
ikke helt løse.


jeg har nogle text filer, hvori der f.eks. indgår en streng som dette

\hest[short title]{ long title sdljhds \andencommando{sdg} % sdlfjsdlf
dsf
%dsggssgdg s
\% sdfsdf }


jeg mangler en perl rutine som kan lede igennem i en givet fil, og som
kan give mig indholdet af den yderste { }, dvs. i dette tilfælde skal
den give

"long title sdljhds \andencommando{sdg} % sdlfjsdlf dsf
%dsggssgdg s
\% sdfsdf "

alt hvad der står efter et % på en linie skal ignoreres (% er kommentar
tegn)
men \% skriver et alm % så den skal ikke ignoreres, samtidig skal alle
andre commandoer \...{..} også med ud.


Er det noget I kan hjælpe med.

Hvis man vil have en bedre forklaring bedes man sende en mail.

Det behøver ikke at være verdens mest kompakte kode (jeg ville da gerne
også selv kunne forstå den)

--

/daleif
F2.10 - Institut for Matematiske Fag, Matematisk Afdeling
Århus Universitet




 
 
Peter Makholm (02-07-2002)
Kommentar
Fra : Peter Makholm


Dato : 02-07-02 21:16

Lars Madsen <daleif@imf.au.dk> writes:

> jeg mangler en perl rutine som kan lede igennem i en givet fil, og som
> kan give mig indholdet af den yderste { }, dvs. i dette tilfælde skal
> den give

Først læser vi filen ind og smider udkommenteret ting væk:

my @fil = <>;
s/(?!\\).\%.*// for @fil;
$fil = join "", @fil;

Det sjove er substitutionen. Læs man perlre find afsnittet Extended
patterns og find (?!pattern).

Så skal vi bare have matchet det rette ud. Mon ikke Text::Balanced kan
gøre dette?

Jeg ville nok prøve med:

use Text::Balanced qw(extract_bracketed);
my ($hit, $rest) = extract_bracketed($fil,"{}");

Men jeg har faktisk aldrig brugt Text::Balanced, så jeg er ikke helt
sikekr på hvordan extract_bracketed skal kaldes. Prøv dig frem.

--
Peter Makholm | Have you ever felt trapped inside a Klein bottle?
peter@makholm.net |
http://hacking.dk |

Povl H. Pedersen (03-07-2002)
Kommentar
Fra : Povl H. Pedersen


Dato : 03-07-02 13:04

In article <87elel28ec.fsf@xyzzy.adsl.dk>,
Peter Makholm <peter@makholm.net> wrote:

> Så skal vi bare have matchet det rette ud. Mon ikke Text::Balanced kan
> gøre dette?
>
> Jeg ville nok prøve med:
>
> use Text::Balanced qw(extract_bracketed);
> my ($hit, $rest) = extract_bracketed($fil,"{}");
>
> Men jeg har faktisk aldrig brugt Text::Balanced, så jeg er ikke helt
> sikekr på hvordan extract_bracketed skal kaldes. Prøv dig frem.

Da du ved at man skal have alt fra første start til sidste slut, så vil
jeg bare bruge:
\{.*\}

..* matcher jo så langt som muligt.

Peter Makholm (03-07-2002)
Kommentar
Fra : Peter Makholm


Dato : 03-07-02 13:15

"Povl H. Pedersen" <nospam@home.terminal.dk> writes:

> Da du ved at man skal have alt fra første start til sidste slut, så vil
> jeg bare bruge:
> \{.*\}

Godt spørgsmål, jeg er ikke helt sikker. Der er stor forskel på om
hvorvidt at vi med følgende inddata:

\documentclass[danish,a4,landscape]{report}
\usepackage{beton}

er interesseret i 'report' eller om vi er interesseret i
'report}\n\\usepackage{beton'. Min løsning vil give det første din
løsning vil give det andet.

(Men der er nok ingen grund til at lave kommentarer i
documentclass-erklæringen, så inddata er nok ikke bare LaTeX-filer)

--
Peter Makholm | Perhaps that late-night surfing is not such a
peter@makholm.net | waste of time after all: it is just the web
http://hacking.dk | dreaming
| -- Tim Berners-Lee

Peter Brodersen (03-07-2002)
Kommentar
Fra : Peter Brodersen


Dato : 03-07-02 16:22

On Wed, 03 Jul 2002 14:14:41 +0200, Peter Makholm <peter@makholm.net>
wrote:

>eller om vi er interesseret i
>'report}\n\\usepackage{beton'. Min løsning vil give det første din
>løsning vil give det andet.

Kun hvis /s er sat vil . matche newlines. Måske er det passende blot
at lade være med at sætte den her.

--
- Peter Brodersen

Henrik Christian Gro~ (03-07-2002)
Kommentar
Fra : Henrik Christian Gro~


Dato : 03-07-02 16:30

Peter Brodersen <usenet@ter.dk> writes:

> >eller om vi er interesseret i
> >'report}\n\\usepackage{beton'. Min løsning vil give det første din
> >løsning vil give det andet.
>
> Kun hvis /s er sat vil . matche newlines. Måske er det passende blot
> at lade være med at sætte den her.

Det hjælper ikke noget, så skal eksemplet blot være
\frac{1}{2}.

..Henrik


--
Min signatur er taget på sommerferie.

Lars Madsen (04-07-2002)
Kommentar
Fra : Lars Madsen


Dato : 04-07-02 11:52

hmm det lyder som om det er sværere at lave end jeg troede

tror jeg vil lave nogle ændringer i latex og få den til at give mig det
jeg vil have, så må man bare lave et par underlige ting når man skal bruge
scriptet

--

/daleif
F2.10 - Institut for Matematiske Fag, Matematisk Afdeling
Århus Universitet




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste