Klaus Mock: in ein Formularfeld schreiben

Beitrag lesen

Hallo Markus,

print "<input type="text" name="vorn" value="".$vorn."">";

Ich weiß schon, daß es mehrere Wege gibt, die zum Ziel führen, und ohne Dir nahetreten zu wollen, aber irgendwie scheint mir Deine 'Formatierung' doch etwas 'mit der Kirche ums Kreuz'.
In Perl gibt es zwei Arten, wie Strings angegeben werden können. [1] Während mit ' angegebene Strings, so verwendet werden, wie sie angegeben sind (single-quoted strings), erfolgt vor der Verarbeitung von double-quoted strings (also jene die standardmäßig mit " angegeben wurden) eine sogenannte Interpolation. Dabei werden, falls im String vorhanden, Variablenbezeichner durch den Inhalt der Variable ersetzt.
Sinnvollerweise können die Begrenzer auch beliebig sein, um das ständige ausmaskieren der Begrenzerzeichen zu vermeiden. Daneben gibts auch den Punkt-Operator für das Konkatenieren (Zusammenhängen) von Strings.

Also entweder
  print '<input type="text" name="vorn" value="'.$vorn.'">';
oder
  print "<input type="text" name="vorn" value="$vorn">";
                                                 ^^^^^^^^
Beachte den Unterschied zu Deinem Beispiel---------´

oder aber auch
  print qq!<input type="text" name="vorn" value="$vorn">!;
bzw.
  print qq[<input type="text" name="vorn" value="$vorn">];
(Ja, auch Klammerpaare werden 'richtig' interpretiert)

Also mir kommen die zwei letzen Varianten doch leichter lesbar vor, als die Beispiele oben.

Näheres findest Du unter
perldoc perlop (Abschnitt 'Quote and Quote-like Operators')

So, ich hoffe, Dir einige Anregungen gegeben zu haben, Perl etwas effizienter zu nutzen, ohne den 'Oberlehrer' raushängen zu lassen.

Grüße
  Klaus

[1] Außerdem sollte in diesem Zusammenhang noch erwähnt werden, daß es in Perl auch Sog. Here-Documents gibt.
print <<EOT;
hier kann jede Menge
Text stehen, der
auch $variablen behinhalten kann,
die auch interpoliert werden.
Das Ende des Ganzen erfährt das Script durch
eine Zeile, in der das steht, was oben nach dem << und vor dem ; eingetragen ist (wobei das allerdings nicht mit ausgegeben wird):
EOT