Parameter über SHELL an PERL-Script übergeben
Andreas
- perl
Hallo!
Ich weiß zwar das es geht, leider nicht wie ;-)
Ich möchte einem PERL-Script einen Parameter über die SHELL übergeben. Wie lautet hierfür der Syntax?
sript.pl?id=1234 wäre ja sowas über HTTP, aber ich suche über die SHELL.
script.pl id=1234 ?
und wie steht der Parameter dann im Script selber zu Verfügung?
Viele Grüße
Andreas
Hallo,
script.pl id=1234 ?
besser so:
script.pl 1234
und wie steht der Parameter dann im Script selber zu Verfügung?
in dem Array @ARGV
lies sie z.B. so aus:
my ($id) = @ARGV;
Ahoi,
Kube
Hallo,
script.pl id=1234 ?
besser so:
script.pl 1234
ach ja, so gehts ja auch mit PHP ;-)
und wie steht der Parameter dann im Script selber zu Verfügung?
in dem Array @ARGV
lies sie z.B. so aus:
my ($id) = @ARGV;
Aber ist @ARGV kein Array oder Hash? In PHP mußte man zumindest sowas wie
$temp = @ARGV;
$id = $temp[0];
machen!
Danke jedenfalls!
Grüße
Andreas
Aber ist @ARGV kein Array oder Hash?
eben dies wollte ich mit der Aussage "...in dem Array @ARGV" andeuten. :-)
In PHP mußte man zumindest sowas wie
$temp = @ARGV;
$id = $temp[0];
machen!
Ich bezweifle irgendwie, das es in PHP so funktioniert... in Perl jedenfalls ist dies definitiv nicht zielführend!
Danke jedenfalls!
stets zu Diensten,
Kube
Aber ist @ARGV kein Array oder Hash?
eben dies wollte ich mit der Aussage "...in dem Array @ARGV" andeuten. :-)
also ist es ein Array! Also kann man den nicht im String Kontext verwenden, oder was? Denn $id brauche ich im String-Kontext!
In PHP mußte man zumindest sowas wie
$temp = @ARGV;
$id = $temp[0];
machen!
Ich bezweifle irgendwie, das es in PHP so funktioniert... in Perl jedenfalls ist dies definitiv nicht zielführend!
Wieso? Erst den Array in einer Variable Speichern, und dann das erste Element des Array in die Variable $id schreiben, was ist daran nicht zielführend? Wenn ich mehrere Parameter habe stehen dei doch alle in @ARGV, also muß man den String $id doch zunächst aus dem Array holen, oder? Was ist denn wen ich 2 Parameter habe, woher weiß PERL dann das @ARGV den String den ich in $id enthält, udn nur den??? Wo steht der andere Parameter?
Viele Grüße
Andreas
Ich bezweifle irgendwie, das es in PHP so funktioniert... in Perl jedenfalls ist dies definitiv nicht zielführend!
Auf alle Fälle funktioniert es so qwie Du gesagt hast, aber was ist bitte der Unterschied zwischen
my ($id) =
und
my $id =
?
Grüße
Andreas
Auf alle Fälle funktioniert es so qwie Du gesagt hast, aber was ist bitte der Unterschied zwischen
my ($id) =
und
my $id =
?
Grüße
Andreas
also..
my ($id) = @ARGV;
schmeisst den ersten Wert des Array @ARGV in die Variable $i
my $id = @ARGV;
wertet @ARGV im scalaren Kontext aus, was bedeutet, dass die Anzahl der Arrayelemente an $i übergeben wird.
Das ist eine erklecklicher Unterschied, findest du nicht?
Ich habe wie gesagt keine Ahnung von PHP, aber funktioniert das da nicht genauso?
Gruss,
Kube
»»holen, oder? Was ist denn wen ich 2 Parameter habe,
dann läuft das so:
my ($id, $anderer_parameter) = @ARGV;
Halihallo Andreas
Ich weiß zwar das es geht, leider nicht wie ;-)
Ich möchte einem PERL-Script einen Parameter über die SHELL übergeben. Wie lautet hierfür der Syntax?
sript.pl?id=1234 wäre ja sowas über HTTP, aber ich suche über die SHELL.
script.pl id=1234 ?
Neben der Lösung von Kube gibt's noch eine mit dem CGI Modul, dieses hat nämlich auch eine Art Shell-Extension, sodass man CGI-Scripts auf der Shell testen kann:
Syntax auf der Shell:
script.pl id=1234
use CGI;
my $cgi = new CGI;
my $id = $cgi->param('id');
print $id;
Viele Grüsse
Philipp
Hey Philipp!
sript.pl?id=1234 wäre ja sowas über HTTP, aber ich suche über die SHELL.
script.pl id=1234 ?
Neben der Lösung von Kube gibt's noch eine mit dem CGI Modul, dieses hat nämlich auch eine Art Shell-Extension, sodass man CGI-Scripts auf der Shell testen kann:
Syntax auf der Shell:
script.pl id=1234
also doch ;-)
Script.pl
use CGI;
my $cgi = new CGI;
my $id = $cgi->param('id');
print $id;
Das ist mir irgendwie lieber, da so auf alle Fälle zu Zuordnung stimmt. Wenn ich mal mehr als einne PArameter brrauch werde ich das sicher so machen, aber für einen Parameter kann ich denke ich auch noch auf das CGI-Modul verzichten.
Danke Dir, werde ich sicher auch verwenden können!
Grüße
Andreas
Halihallo Andreas ;)
Syntax auf der Shell:
script.pl id=1234
also doch ;-)
TIMTOWTDI...
[...]
Das ist mir irgendwie lieber, da so auf alle Fälle zu Zuordnung stimmt. Wenn ich mal mehr als einne PArameter brrauch werde ich das sicher so machen, aber für einen Parameter kann ich denke ich auch noch auf das CGI-Modul verzichten.
Ja, für einen Parameter bringt das nix. Du kannst das übrigens auch anders machen:
test.pl test 1 test2 2
my %data = @ARGV;
dann kriegst du über print $data{test2} die '2' als Antwort.
Oder
test.pl test=1 test2=2
my %data;
foreach (@ARGV) {
my ($n,$v) = split /=/, $_, 2;
$data{$n} = $v;
}
print $data{test2} kriegst du auch die '2'
soviel zur "primitiven" Funktionsweise, wie man das auch anders lösen kann, wobei CGI "schöner" ist...
Viele Grüsse
Philipp