Thread Kommandozeilenparameter übergeben (43 answers)
Opened by franc at 2011-01-17 16:34

Linuxer
 2011-01-17 19:34
#144778 #144778
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
2011-01-17T18:09:14 franc
Also ich will mehrere Parameter übergeben, daher hatte ich zuerst:

Code: (dl )
1
2
3
4
my $map_type = @ARGV[0];
my $map_zoom = $ARGV[1];
my $top_left = $ARGV[2];
my $bottom_right = $ARGV[3];


am Anfang stehen und diese Variablen dann später verwendet im Skript.
Das geht nicht, weil Perl dann denkt ich meine Dateien.

Was lässt Dich denken, dass Perl das denkt?

Zunächst ist die Zuweisung von $map_type potentiell falsch (Du meintest wahrscheinlich $ARGV[0]).
Ansonsten sind das simple Zuweisungen von Array-Werte an skalare Variablen. Das ist nichts, was
Perl "denken" ließe, es handle sich um Dateinamen.

Die von Dir gezeigte Zeile 10 $MapType = <>; nutzt eine besonderes Verhalten des <>, wonach versucht wird, alle angegebenen Parameter als Dateien zu öffnen und diese einzulesen.

Schau mal dort nach: http://perldoc.perl.org/perlop.html
und such nach dem String: "The null filehandle"
Dort wird das Verhalten von <> erläutert.


Deine Zuweisung im Stil $param = @ARGV[0] lässt die Parameter im @ARGV stehen und somit versucht <>, diese Liste abzuarbeiten.

Wenn Du es im Stil $param = shift @ARGV tust, wird das jeweils erste Element aus @ARGV entfernt. Im Idealfall ist dann @ARGV leer und <> reagiert anders als zuvor...



meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Kommandozeilenparameter übergeben