Thread Probleme mit GetOpt::Long (19 answers)
Opened by YAPD at 2019-06-23 15:58

Linuxer
 2019-06-23 19:38
#190133 #190133
User since
2006-01-27
3869 Artikel
HausmeisterIn

user image
- und -- haben als Argumente ihre Berechtigung und sind nicht grundlegend falsch.

Das Argument "-" dient oft dazu, dem Programm mitzuteilen, dass es seinen Input von STDIN lesen soll. Mal als direktes Argument, mal als Argument für eine Option (z.B. --input - .

Das Argument "--" ist definiert als "Ende der Optionen". Das würde ich nicht als falsch deklarieren.
Das wird vom Getopt::Long rausgefiltert.

Letzten Endes, alles was nicht von Getopt::Long irgendwie verarbeitet worden ist, sollte immer noch im @ARGV zu finden sein. Das sollte der Fall bei "-" und "---" der Fall sein.

Du könntest also nach Deinem GetOptions() Aufruf, diesen Array @ARGV auf unerwünschte Optionen scannen.

Code: (dl )
1
2
3
4
5
6
7
8
:!perl getopt_long2.pl --foo=foo  - -- ---
-
---

## oder
:!perl getopt_long2.pl - -- ---
-
---


Das "--" wird von Getopt::Long rausgefiltert; alles was danach käme, bleibt im @ARGV erhalten.

more (2.6kb):

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use warnings;

use 5.020;
use Getopt::Long;

my $foo;
my $bar;

GetOptions(
    'foo:s' => \$foo,
    'bar=i' => \$bar,
) or die "Optionsfehler";


say $_ for @ARGV;

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 Probleme mit GetOpt::Long