Hey,
Wie kann ich im Perl-Programm erfahren, ob es direkt über die Angabe in der URL-Zeile des Browsers oder über eine href-Angabe in einem anderen Programm oder über ein Formular aufgerufen wurde?
das ist technisch kein Unterschied. In allen Fällen setzt der Browser/Useragent den gleichen Request an den Server ab. Zur Verdeutlichung ein Beispielprogramm:
#!perl
use CGI qw();
use Data::Dumper;
my $cgi = new CGI;
print $cgi->header('text/plain;charset=utf-8');
print Dumper $cgi;
* Tue in die Adresszeile des Browsers die Adresse http://localhost/dump?foo=bar;quux=baz;roflcopter
* Lege eine HTML-Datei an, die einen Link auf diese Adresse enthält, lade die Datei in den Browser und folge dem Link
* Lege eine HTML-Datei an, die ein Formular enthält, das auf http://localhost/dump zeigt und die Wertepaare foo=bar, quux=baz und roflcopter enthält, lade die Datei in den Browser und schicke das Formular ab
* Wenn du LWP installiert hast, führe den Befehl aus: lwp-request -m GET http://localhost/dump?foo=bar;quux=baz;roflcopter
In jedem Fall bekommst du dasselbe Ergebnis.
$VAR1 = bless( {
'.parameters' => [
'foo',
'quux',
'roflcopter'
],
'use_tempfile' => 1,
'.charset' => 'ISO-8859-1',
'quux' => [
'baz'
],
'roflcopter' => [
''
],
'foo' => [
'bar'
],
'.fieldnames' => {},
'.header_printed' => 1,
'escape' => 1
}, 'CGI' );