lulinda: require in foreach-Schleife?

Hallo,

ich habe folgendes Problem: ich möchte eine Perl Datei innerhalb mehrerer foreach Schleifen aufrufen. Das klappt nun überhaupt nicht. Gebe ich die Variablen ohne Schleifen an, wird die require-Datei ausgeführt. Kann es sein, dass require in Schleifen nicht funktioniert??

Hier die beiden Dateien:
(in basic.pl werden die Variablen $year, $month, $day und $date verwendet. 1; wird zurückgegeben).

1. funktioniert:
######################
$year = "2002";
$month = "7";
$day = "4";
$date = "$year-$month-$day";
require "basic.pl";

2. funkioniert nicht, die $date wird aber mit der print Anweisung korrekt ausgegeben.
#######################
 @array_years = (2000..2002);
 @array_months = (1..12);
 @array_days = (1..31);
 foreach $year (@array_years) {
  foreach $month (@array_months) {
   foreach $day (@array_days) {
     $date = "$year-$month-$day";
     require "basic.pl";
     print "$date \n";
   }
  }
 }

Für einen Lösungsansatz wär ich sehr dankbar!

lulinda.

  1. Halihallo

    ich habe folgendes Problem: ich möchte eine Perl Datei innerhalb mehrerer foreach Schleifen aufrufen. Das klappt nun überhaupt nicht. Gebe ich die Variablen ohne Schleifen an, wird die require-Datei ausgeführt. Kann es sein, dass require in Schleifen nicht funktioniert??

    Hier die beiden Dateien:
    (in basic.pl werden die Variablen $year, $month, $day und $date verwendet. 1; wird zurückgegeben).

    require testet, ob die Datei bereits gelesen wurde... D.h. eine Datei wird grundsätzlich nur einmal required...

    Lösung:

    require "basic.pl";

    foreach (...) {
       &basic;
    }

    dann musst du eben alles was in basic.pl steht in eine Prozedur namens basic ( sub basic () { ... }) stellen... Den Prozeduren können bekanntlich mehrmals aufgerufen werden...

    Zudem würde ich das mit require lassen... Das ist für diesen Gebrauch wirklich falsch am Platz (require oder use _einmal_ am Anfang, nachher nie wieder)...

    Viele Grüsse

    Philipp

  2. Gude lulinda,

    Hallo,

    ich habe folgendes Problem: ich möchte eine Perl Datei innerhalb mehrerer foreach Schleifen aufrufen.

    perldoc -f system
    perldoc perlop /qx
    perldoc -f do

    Das klappt nun überhaupt nicht. Gebe ich die Variablen ohne Schleifen an, wird die require-Datei ausgeführt. Kann es sein, dass require in Schleifen nicht funktioniert??

    perldoc -f require stellt ein Mechanismus zum _Einfügen_ von Dateien zur Verfügung. U.a. stellt es sicher, das die jeweilige Datei nur einmal eingelesen wird.

    perldoc -f require

    ad,
    kd.