anf_frage: Variablen-Interpolation in RegEx

anf_frage: Variablen-Interpolation in RegEx

am 15.01.2008 22:52:21 von Theo Pilz

Hallo zusammen,

die gewünschten Dateien (AUSG) werden richtig angelegt (b1.shtml -
b7.shtml). In den Zeilen 34 und 36 wird aber $nr nur mit dem Wert "1"
berücksichtigt. Vielleicht kann jemand einem Anfänger helfen?

my $nr = 1;
my $zahl = 7;
while ( $nr <= $zahl ) {
$rueck = $nr - 1;
$vor = $nr + 1;
$zeilen[34] =~ s/xxx01ueb/$nr\. Überschrift/;
$zeilen[36] =~ s/xxx02rueck/b$rueck/;
$zeilen[36] =~ s/xxx03weit/b$vor/;

open AUSG, "> b$nr.shtml";
select AUSG;
print "@zeilen";
close AUSG;
$nr += 1;
}

Danke

mfG

Theo

Re: anf_frage: Variablen-Interpolation in RegEx

am 15.01.2008 23:01:34 von Frank Seitz

Theo Pilz wrote:

> die gewünschten Dateien (AUSG) werden richtig angelegt (b1.shtml -
> b7.shtml). In den Zeilen 34 und 36 wird aber $nr nur mit dem Wert "1"
> berücksichtigt. Vielleicht kann jemand einem Anfänger helfen?
>
> my $nr = 1;
> my $zahl = 7;
> while ( $nr <= $zahl ) {
> $rueck = $nr - 1;
> $vor = $nr + 1;
> $zeilen[34] =~ s/xxx01ueb/$nr\. Überschrift/;
> $zeilen[36] =~ s/xxx02rueck/b$rueck/;
> $zeilen[36] =~ s/xxx03weit/b$vor/;
>
> open AUSG, "> b$nr.shtml";
> select AUSG;
> print "@zeilen";
> close AUSG;
> $nr += 1;
> }

Wenn du einmal den Wert ersetzt hast, kannst du ihn in
der nächsten Interation natürlich nicht nochmal ersetzen.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: anf_frage: Variablen-Interpolation in RegEx

am 16.01.2008 08:30:43 von Ferry Bolhar

Theo Pilz:

> die gewünschten Dateien (AUSG) werden richtig angelegt (b1.shtml -
> b7.shtml). In den Zeilen 34 und 36 wird aber $nr nur mit dem Wert "1"
> berücksichtigt. Vielleicht kann jemand einem Anfänger helfen?

> my $nr = 1;
> my $zahl = 7;
> while ( $nr <= $zahl ) {
> $rueck = $nr - 1;
> $vor = $nr + 1;
> $zeilen[34] =~ s/xxx01ueb/$nr\. Überschrift/;
> $zeilen[36] =~ s/xxx02rueck/b$rueck/;
> $zeilen[36] =~ s/xxx03weit/b$vor/;

Du ersetzt in diesem Code im ersten Durchlauf die Zeichenfolgen
"xxx01ueb", "xxx02rueck" und "xxx03weit" durch die Werte der
entsprechenden Variablen. Beim nächsten Durchlauf existieren
diese Zeichenfolgen daher nicht mehr (sie wurden ja schon ersetzt)
und somit gibt es nichts mehr, was jetzt noch ersetzt werden könnte
(außer, die genannten Zeichenfolgen kommen mehrfach vor, was ich
aber eher nicht annehme). Vielleicht solltest du einmal kurz sagen,
was genau du tun möchstest.

PS: Auch $rueck und $vor sollten mit "my" deklariert werden
(außer dies ist bereits an einer früheren Stelle im Code geschehen).

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: ferdinand.bolhar-nordenkampf@wien.gv.at

Re: anf_frage: Variablen-Interpolation in RegEx

am 16.01.2008 13:52:16 von Theo Pilz

On Wed, 16 Jan 2008 08:30:43 +0100, "Ferry Bolhar"
wrote:

>Theo Pilz:
>
>> die gewünschten Dateien (AUSG) werden richtig angelegt (b1.shtml -
>> b7.shtml). In den Zeilen 34 und 36 wird aber $nr nur mit dem Wert "1"
>> berücksichtigt. Vielleicht kann jemand einem Anfänger helfen?
>
>> my $nr = 1;
>> my $zahl = 7;
>> while ( $nr <= $zahl ) {
>> $rueck = $nr - 1;
>> $vor = $nr + 1;
>> $zeilen[34] =~ s/xxx01ueb/$nr\. Überschrift/;
>> $zeilen[36] =~ s/xxx02rueck/b$rueck/;
>> $zeilen[36] =~ s/xxx03weit/b$vor/;
>
>Du ersetzt in diesem Code im ersten Durchlauf die Zeichenfolgen
>"xxx01ueb", "xxx02rueck" und "xxx03weit" durch die Werte der
>entsprechenden Variablen. Beim nächsten Durchlauf existieren
>diese Zeichenfolgen daher nicht mehr (sie wurden ja schon ersetzt)
>und somit gibt es nichts mehr, was jetzt noch ersetzt werden könnte
>(außer, die genannten Zeichenfolgen kommen mehrfach vor, was ich
>aber eher nicht annehme). Vielleicht solltest du einmal kurz sagen,
>was genau du tun möchstest.
>
>PS: Auch $rueck und $vor sollten mit "my" deklariert werden
>(außer dies ist bereits an einer früheren Stelle im Code geschehen).
>
>LG, Ferry

Leuchtet ein. Vielen Dank!

mfG

Theo

Re: anf_frage: Variablen-Interpolation in RegEx

am 16.01.2008 15:16:07 von Theo Pilz

On Wed, 16 Jan 2008 08:30:43 +0100, "Ferry Bolhar"
wrote:

>Theo Pilz:
>
>> die gewünschten Dateien (AUSG) werden richtig angelegt (b1.shtml -
>> b7.shtml). In den Zeilen 34 und 36 wird aber $nr nur mit dem Wert "1"
>> berücksichtigt. Vielleicht kann jemand einem Anfänger helfen?
>
>> my $nr = 1;
>> my $zahl = 7;
>> while ( $nr <= $zahl ) {
>> $rueck = $nr - 1;
>> $vor = $nr + 1;
>> $zeilen[34] =~ s/xxx01ueb/$nr\. Überschrift/;
>> $zeilen[36] =~ s/xxx02rueck/b$rueck/;
>> $zeilen[36] =~ s/xxx03weit/b$vor/;
>
>Du ersetzt in diesem Code im ersten Durchlauf die Zeichenfolgen
>"xxx01ueb", "xxx02rueck" und "xxx03weit" durch die Werte der
>entsprechenden Variablen. Beim nächsten Durchlauf existieren
>diese Zeichenfolgen daher nicht mehr (sie wurden ja schon ersetzt)
>und somit gibt es nichts mehr, was jetzt noch ersetzt werden könnte
>(außer, die genannten Zeichenfolgen kommen mehrfach vor, was ich
>aber eher nicht annehme). Vielleicht solltest du einmal kurz sagen,
>was genau du tun möchstest.

Ach ja, habe vergessen zu antworten: Ich muss öfter Fotostrecken
anlegen (images - pages - thumbs) und will die damit verbundene
stupide Arbeit mit Perl automatisieren. Eine Musterdatei mit
Überschrift (xxx01ueb), Rückverweis auf das jeweils letzte Bild
(xxx02rueck) etc. soll variiert unter den Namen b1.shtml, b2.shtml
etc. so oft angelegt werden, wie die Strecke Bilder hat. Ich muss halt
diese Musterdatei innerhalb der Schleife für jeden Durchlauf neu
öffnen, damit die RegEx sich zurechtfinden können.

>PS: Auch $rueck und $vor sollten mit "my" deklariert werden
>(außer dies ist bereits an einer früheren Stelle im Code geschehen).

Hatte ich schon gemacht, strict meckert ja sonst.

Persönliche Anmerkung: Ich bin, wie ihr merkt, wirklich ziemlich
unbedarft, was das Programmieren angeht. Aber oft sind es gerade
"dumme" Fehler, bei denen einen die klugen Bücher oft im Stich lassen.

mfG

Theo