Wie analysiere ich einen String mit GetOpt :: Long :: GetOptions?

7

Ich habe eine Zeichenfolge mit möglichen Befehlszeilenargumenten (mit einem Read-Eval-Print-Loop-Programm) und möchte, dass sie ähnlich wie die Befehlszeilenargumente analysiert wird, wenn sie an Getopt :: Long übergeben werden.

Um zu erläutern:

Ich habe eine Zeichenfolge

%Vor%

Ich möchte, dass es von GetOptions geparst wird, damit ich neue Optionen hinzufügen kann.

Eine Problemumgehung, die ich mir vorstellen kann, besteht darin, die Zeichenfolge in Leerzeichen aufzuteilen und @ARGV durch ein neues Array zu ersetzen und dann GetOptions aufzurufen. etwas wie ...

%Vor%

Gibt es einen guten / besseren Weg?

    
Jagmal 22.09.2008, 23:52
quelle

5 Antworten

15

Lesen Sie den Abschnitt Analyseoptionen aus einer beliebigen Zeichenfolge in der Manpage für Getopt :: Long finde ich, dass es genau das ist, wonach du suchst.

    
Drew Stephens 23.09.2008, 00:15
quelle
7

Verwenden Sie anstelle der Aufteilung auf Leerzeichen die integrierte Glob-Funktion. Zusätzlich zur Aufteilung in Whitespaces führt das die Standard-Befehlszeilenerweiterungen durch und gibt dann eine Liste zurück. (Zum Beispiel würde * eine Liste von Dateien usw. geben.) Ich würde auch empfehlen, @ARG nach dem allgemeinen Prinzip zu lokalisieren.

Ansonsten können Sie das nur tun, ohne GetOptions neu zu schreiben. (Ich muss die Dokumentation natürlich besser lesen.)

    
user11318 23.09.2008 00:05
quelle
5

Wow !!!

Ich denke, ich kann sowohl die Antworten von Bentilly als auch von Dinomite verwenden und folgendes tun:

  • Verwenden Sie glob, um Standard-Befehlszeilenerweiterungen durchzuführen
  • Übergeben Sie das Array nach glob an die GetOptionsFromArray-Methode von GetOpt :: Long (siehe hier )

Code sieht möglicherweise so aus ...

%Vor%

Und das ist nur eine Zeile .. cool (Ich weiß, ich muss einige Fehler überprüfen usw.) .. aber es ist cool ...

    
Jagmal 23.09.2008 00:23
quelle
0

Wenn Sie Getopt :: Long für etwas anderes als Benutzereingaben verwenden, beachten Sie, dass einige Funktionen auf der Basis der Umgebungsvariable POSIXLY_CORRECT unterschiedlich sind. Sie können dies mit dem entsprechenden Aufruf von Konfigurieren überschreiben.

Obligatorische POSIXLY_CORRECT-Anekdote .

    
ysth 23.09.2008 07:22
quelle
0

Es scheint so, als ob die Methoden GetOptionsFromArray und GetOptionsFromString nur in Version 2.36 hinzugefügt wurden und Murphy sagen würde, dass ich nur Version 2.35 habe.

Für jetzt denke ich, ich werde mit lokalen @ ARGV leben müssen.

    
Jagmal 23.09.2008 10:57
quelle

Tags und Links