"John Doe" <fatih@forum.dk> writes:
> jeg vil udføre en simple funktion i PERL hvor jeg modtager input og ændre
> det. Altså jeg har en tekst string
> $text = "tester /test4/ gif fil";
> og min subrutine skal lave /testing/ om til en tilsvarende gif fil. Altså:
>
> $gif = "<img src=\"$GRAPHICS_PATH\" . \"$1.gif\" width=16 height=12
> align=absmiddle>";
>
> $text =~ s/\/(\w+\d+)\//$mimik/g;
>
> Det kunne sikkers gøres på en smartere måde med %hash men der er så mange
> gif billeder at det er svært at lave en tabel.. jeg har vælgt at skrive
> (\w+\d+) , for filnavnet kan indeholde både bogstaver og tal. Altså f.eks
> bold1.gif ...
> Hvad er det jeg gør forkert i mit eksampel?
Ovenstående var ustyrligt svært at forstå fordi du bruger forskellige
navne til de samme ting, test4/testing, $gif/$mimik, etc... Mere
forsigtig, tak.
Jeg TROR du mener at du vil have:
$GRAPHICS_PATH = "/foo/";
$text = "tester /test4/ gif fil";
$gif_head = qq{<img src="$GRAPHICS_PATH};
$gif_tail = qq{.gif" width=16 height=12 align=absmiddle>};
$text =~ s,/([\w\d]+)/,$gif_head$1$gif_tail,g;
Altså split $gif over i to, så du kan indlejre $1 når den er
defineret, ikke før (som du gør i dit eksempel). Derudover bruger jeg
her qq{} og s,,, for at slippe for back-slashes. Det giver meget mere
læsbar kode.
--
Lars Balker Rasmussen "Woo hoo!?"
|