Schrift
[thread]11182[/thread]

Perl Argumente in der Kommandozeile übergeben



<< >> 10 Einträge, 1 Seite
soezkan
 2008-01-24 17:20
#105124 #105124
User since
2008-01-24
17 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich grüße alle, denn ich bin neu hier im Forum.

Meine Frage:
Wie kann man in Perl Argumente in der Kommandozeile übergeben?
Wenn ich das cgi bzw. pl im Browser aufrufe dann funktioniert das
so ...

http://www.meinedomain.de/test.pl?output=hallowelt

... wunderbar.

Wenn ich jedoch versuche in meiner Unix-Shell das so ...

perl test.pl?output=hallowelt

... aufzurufen, bekomme ich immer die Meldung ...

Can't open perl script "test.pl?output=hallowelt": No such file or directory

Ich habe keine Ahnung wie man die Argumente anders übergeben kann,
als so wie über den URL des Browsers.

Kann mir da bitte jemand helfen? Ich habe nichts brauchbares im Netz
gefunden, was mir irgendwie weiterhilft.

Vielen Dank!
Soezkan
nepos
 2008-01-24 17:24
#105125 #105125
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wie wärs mit
Code: (dl )
perl test.pl output=hallowelt
?

Näheres dazu findest du in CPAN:CGI unter "DEBUGGING". Da wird auch erläutert, wie man auf der Kommandozeile POST-Daten übergeben kann.
soezkan
 2008-01-24 23:23
#105130 #105130
User since
2008-01-24
17 Artikel
BenutzerIn
[default_avatar]
Danke für die ANtwort.

Aber wie siehts mit mehreren Variaben aus?
#Kein Kommentar
 2008-01-24 23:43
#105132 #105132
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
soviel ich weiß einfach leerzeichen einfügen...

Code: (dl )
perl test.pl output=hallowelt output2=hallowelt2 output3=hallowelt3
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
soezkan
 2008-01-25 00:13
#105133 #105133
User since
2008-01-24
17 Artikel
BenutzerIn
[default_avatar]
Ja das hatte ich auch probiert. Leider kommen die Werte aber nicht
im Skript an wie es scheint. Muss man da sowas wie ARGV aufrufen?

Bitte um Hilfe,

Vielen Dank!
Soezkan
soezkan
 2008-01-25 00:34
#105134 #105134
User since
2008-01-24
17 Artikel
BenutzerIn
[default_avatar]
Also, ich möchte die eigentlichen GET-Variablen als Argumente aufrufen (weil ich pwerl in der Kommandozeile ausführen will).
Für meine Browser-Version sah der Kopf der Datei so aus:
#!/usr/local/bin/perl -w

##############################################################################
# Main program
#

if($ENV{'REQUEST_METHOD'} eq 'GET') {
$buffer = $ENV{'QUERY_STRING'}
}
else {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}

... usw. ...

Wo platziere ich denn da am besten das ARGV der Argumente, die
ich meiner perl-Datei übergebe?

Hat da jemand ne Ahnung wie sowas geht?

1000 dank :)
Soezkan
renee
 2008-01-25 09:08
#105139 #105139
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
soezkan+2008-01-24 23:34:25--
[...]
#!/usr/local/bin/perl -w

##############################################################################
# Main program
#

if($ENV{'REQUEST_METHOD'} eq 'GET') {
$buffer = $ENV{'QUERY_STRING'}
}
else {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
[...]



Das solltest Du besser wieder streichen...

Verwende lieber CPAN:CGI.pm!

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use strict;
use warnings;
use CGI;

my $cgi = CGI->new();
print $cgi->header( 'text/plain' );

my %params = $cgi->Vars;

print sprintf( "%s : %s\n" $_, $params{$_} ) for keys %params;


Das kannst Du sowohl über den Browser mit skript.cgi?param1=value1;param2=value2 als auch in der Konsole mit skript.cgi param1=value1 param2=value2 aufrufen!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
nepos
 2008-01-25 09:28
#105140 #105140
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Uhm, ich war davon ausgegangen, das CGI.pm im Spiel ist und das macht das eigentlich automatisch.
soezkan
 2008-01-25 14:31
#105155 #105155
User since
2008-01-24
17 Artikel
BenutzerIn
[default_avatar]
Vielen herzlichen Dank für die Ausführungen!

Ich habe das mal in meine Programmierung mit einfliessen lassen.
Stehe jetzt aber vor einem neuen Problem: Perl und Windows.

Ich habe einen Algorithmus der riesige Datenmengen abarbeiten soll
geschrieben (Kalenderdaten). Ich habe nun versucht dass ganze mit
meinem XAMPP auf Win durchlaufen zu lassen, aber irgendwann
schaufelt der mir irgendeinen Stack zu und dann wars das. Echt schade ...

Mal sehen wie ich hier weiterkomme ...
Soezkan
murphy
 2008-01-25 14:40
#105156 #105156
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Wenn der Stack überläuft, sollte man tendenziell als erstes die Rekursionstiefe der Algorithmen verringern bzw. die Funktionen so schreiben, dass man Tailcall-Elimination einsetzen kann.
When C++ is your hammer, every problem looks like your thumb.
<< >> 10 Einträge, 1 Seite



View all threads created 2008-01-24 17:20.