Kann ich das Script mal sehen?
Ich habe mühsam das lange Skript abgespeckt, ohne dass der Effekt verlorenging.
In Zeile 40 des nachfolgenden Skripts erfolgt die Initialisierung $sendeURL = http://www.foo_speziell.com/.
In Zeile 31 wird der neue Wert http://www.foo_standard.com/myinclib/ zugewiesen, da http://www.foo_speziell.com/dir.inc nicht vorhanden ist
Wenn jetzt das Perl-Programm erneut aufgerufen wird (z.B. durch refresh),
so bleibt der Wert $sendeURL = http://www.foo_standard.com/myinclib/,
d.h. die Initialisierung in Zeile 40 erfolgt nicht mehr.
Warum?
#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;
my ($query, $error_nr, $sendeURL, $myincURL, $url, $ua);
sub getinc
{$url = $sendeURL . $_[0] . ".inc";
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new("GET" => $url);
my $res = $ua->request($req);
my $seite = $res->content();
if ( $res->is_success() )
{
print $seite;
}
else
# wenn dir.inc in http://www.foo_speziell.com nicht vorhanden, dann auch alle nachfolgenden *.inc in http://www.foo_standard.com/myinclib/ lesen
{
$url = $myincURL . $_[0] . ".inc";
$req = HTTP::Request->new("GET" => $url);
$res = $ua->request($req);
$seite = $res->content();
if ( $res->is_success() )
{
print $seite;
}
else
{
print "<h1 align='center' style='margin-top:4em;color:red;'>Fehler: Modul $_[0] nicht gefunden<\/h1>" ;
}
if ($_[0] eq "dir")
{
$sendeURL = "http://www.foo_standard.com/myinclib/"; # <===== Änderung $sendeURL
}
}
}
use CGI;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
$query = new CGI;
$sendeURL = "http://www.foo_speziell.com/"; # <===== Initialisierung $sendeURL
$myincURL = "http://www.foo_standard.com/myinclib/";
print <<AAA;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>
<body>
AAA
getinc ("dir");
getinc ("header");
getinc ("kopf");
getinc ("index/inhalt");
print <<GGG;
</div>
</body>
</html>
GGG
# End of Text