Readers: 33
perl meinskript.perl parameter1
QuoteCan't open parameter1: No such file or directory at meinskript.perl at line 10.
my $param1 = $ARGV[0];
2011-01-17T15:47:49 GwenDragonUnd was steht in Zeile 10 deines Programms?
$MapType = <>;
my $param1 = shift @ARGV;
QuoteType of arg 1 to shift must be array (not array slice) at meinskript.perl line 1, near "];"
Execution of meinskript.perl aborted due to compilation errors.
1
2
3
4
my $map_type = @ARGV[0];
my $map_zoom = $ARGV[1];
my $top_left = $ARGV[2];
my $bottom_right = $ARGV[3];
QuoteType of arg 1 to shift must be array (not scalar dereference)
1 2 3 4
my $map_type = shift @ARGV; my $map_zoom = shift @ARGV; my $top_left = shift @ARGV; my $bottom_right = shift @ARGV;
open(my $filehandle, '<', $file) or die("Error open file $file $!\n");
2011-01-17T18:09:14 francAlso ich will mehrere Parameter übergeben, daher hatte ich zuerst:
Code: (dl )1
2
3
4my $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.
2011-01-17T18:34:34 Linuxer...
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.
...
2011-01-17T16:13:51 pqja da haben wir den übeltäter doch =)
willst du nicht lieber einfach von STDIN lesen?
<> liest entweder aus STDIN oder es nimmt sich noch vorhandene parameter und deutet diese als dateinamen. wenn du explizit <STDIN> schreibst, vermeidest du das.
2011-01-18T07:49:39 CrianSchon erledigt....Wie pq schon schrieb, benutze <STDIN> statt <>.
1 2 3 4
my $map_type = $ARGV[0]; my $map_zoom = $ARGV[1]; my $top_left = $ARGV[2]; my $bottom_right = $ARGV[3];
1 2 3 4
my $map_type = shift @ARGV; my $map_zoom = shift @ARGV; my $top_left = shift @ARGV; my $bottom_right = shift @ARGV;
my ($map_type, $map_zoom, $top_left, $bottom_right) = @ARGV;
perl myprog --type bla --zoom 2 --top-left 0,0 --bottom-right 1280,1024
1 2 3 4 5 6 7 8 9 10 11
use Getopt::Long; # Variablen deklarieren my ($map_type, $map_zoom, $top_left, $bottom_right); GetOptions( 'type=s' => \$map_type, 'zoom=i' => \$map_zoom, 'top-left:s' => \$top_left, 'bottom-right:s' => \$bottom_right, ) or die "Usage: ...";
2011-01-17T20:01:52 pqdass ich das mit STDIN schon weiter oben schrieb, hast du aber gesehn, oder?