Calocybe: Inhalt einer Datei an Array/Varible übergeben

Beitrag lesen

Hi!

open (PHPHEAD, 'E:/PHP4/php.exe F:/includes/head.php|') || die 'kann phphead nicht einbinden';
  @phphead = <PHPHEAD>;
  close (PHPHEAD) || die 'kann phphead nicht schliessen';

Eine Datei liest man auf diese Weise in ein Array, das ist schon richtig. Das hier sieht aber mehr so aus, wie wenn Du die *Ausgabe* des aufgerufenen Programms in die Variable bekommen willst. Das ist zwar auf diese Weise moeglich (mit dem | am Ende), einfacher ist aber:
  @phphead = E:/PHP4/php.exe F:/includes/head.php;
oder
  $phphead = E:/PHP4/php.exe F:/includes/head.php;
Das nennt man Kommandosubstitution, und es liefert Dir die Ausgabe des aufgerufenen Programms in die jeweilige Variable, und zwar im Falle des Arrays zeilenweise und im Skalarkontext als einen grossen String.

Falls Du das Backtick-Zeichen (` also das rueckwaertsgestellte Hochkomma) nicht auf Deiner Tastatur findest, kannst Du aequivalent auch z.B.
  @phphead = qx(E:/PHP4/php.exe F:/includes/head.php);
verwenden, was voellig gleichbedeutend ist.

Die Dokumentation dazu findest Du in
  perldoc perlop  (nach "qx/STRING/" suchen)
oder auch bei http://www.perldoc.com/perl5.6/pod/perlop.html#qx%2FSTRING%2F.

$h{head} = $phphead;

Ist Dir klar, dass $phphead und @phphead zwei voellig verschiedene Variablen sind, die nicht das geringste miteinander zu tun haben? Obwohl das Zeichen am Anfang eine weitergehende Bedeutung hat (eben die Typunterscheidung), ist es ganz normaler Bestandteil des Namens.

Wenn Du den Inhalt eines Arrays in einen einzige langen String zusammenfuegen willst, so macht man das gewoehnlich mit
  $x = join('', @y);

So long