require in foreach-Schleife?
lulinda
- perl
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.
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
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.