Ok, så blev jeg lidt kloger
Tak for den hurtige hjælp,
og så må jeg vist til at øve mig lidt mere på Perl.
med venlig hilsen
Torben
"Peter Makholm" <peter@makholm.net> wrote in message
news:87d6ku5nit.fsf@xyzzy.adsl.dk...
> "T. Sandbaek" <tpn@NO-SPAM-PLEASEcontrol-systems.com> writes:
>
> >> s{([^"]*)(".*?")?}{
> >> my ($pre, $str) = ($1, $2);
> >> $pre =~ s/(signed\s+)?char/Sint16/g;
> >> $pre =~ s/unSint16/unsigned char/g;
> >> "$pre$str"
> >> }ge;
> > jeg kan næste regne virke måden ud men s{}, er det det samme som s///?
> > og hvorfor har du et ? i ".*?" (først linje)
>
> Ja. s{foo}{bar} er det samme som s/foo/bar/. Til quote-like operatorer
> kan man bruge næsten alle tegn til at adskille de enkelte dele og hvis
> man bruger parentesligende tegn '(', '{', '<' og '[' skal de afsluttes
> at den tilsvarende højre-parentes. Læs perlop(1) begyndelsen af
> afsnitte om quote-operatoren og andre quote-ligende operatorer.
>
> Spørgsmålstegnet i /".*?"/ betyder at stjernen skal matche så lidt som
> overhovedet muligt. Hvis den ikke stod der ville .* matche alt frem
> til den sidste dobbelt-pling men nu matcher den kun til den første
> dobbelt-pling.
>
> Du kan læse om grådige og ikke grådig regulære udtryk i perlre(1) i
> afsnittet 'Regular Expressions' i 7. paregraf (alt efter hvordan man
> tæller. Jeg har sikkert ikke talt helt konsekvent ned gennem teksten)
>
> > og når der bare står
> > "$pre$str"
> > er det så det samme som
> > $_="$pre$str"
>
> Bemærk e'et tilsidst. De betyder at udtrykket inde i blokken bliver
> evalueret og resultatet bliver indsat istedet for det matchede. Og
> resultatet af en kode-blok er bare resultatet af det sidste udtryk i
> blokken, her bare en streng der ekspanderes.
>
> --
> Peter Makholm | According to the hacker ethic, the meaning of life
> peter@makholm.net | is not Friday, but it is not Sunday either
>
http://hacking.dk | -- Peeka Himanen