Perl: Kommandozeilen-Framework für CLI-Tools

Ordnung in Scipts für die Kommandozeile, es werden einfach nur Klassen entworfen und eingehängt

Wer mit Perl viel auf der Kommandozeile arbeitet, verliert schnell die Übersicht über die ungezählten Scripts. Die Idee, die hinter diesem kleinen Framework steckt: Es gibt nur noch ein einziges Script als Framework-Interface für beliebige Klassen, die sozusagen eingehängt werden. Der Anwender muss sich also nur den einen Namen für das Framework merken und anstelle neuer Einzelscripts werden für anfallende Aufgaben nur noch Klassen entwickelt. So ist das Framework extrem einfach und beliebig erweiterbar.

Der Aufruf eines beliebigen Tools sieht dann beispielsweise so aus, zuerst wird das Framework aufgerufen:

    D:\>cli.pl
    Kommandozeilen-Framework
    =========================
    Der Name der Klasse wird als erstes Argument uebergben,
    weitere Optionen stellt die Klasse bereit.

    Klassenuebersicht:
    =========================
    Date: Klasse zum Testen einer Datumeingabe
    CMS:  Content-Manager für die Website
    RPC:  Remote Procedure Call
    usw...

Nach der Übergabe des Namen einer Klasse werden weitere Optionen ausgegeben, je nach Klasse:

    D:\>cli.pl Date

    Template Klasse Date
    =====================
    Option --date (-d) prueft ein eingegebenes Datum
    Bitte das Datum im Format T.M.J
    Jahre vor Christi mit einem Minuszeichen

Das Ergebnis könnte dann z.B. so aussehen:

    D:\>cli.pl Date --date 4.10.1582

    Informationen zum eingegebenen Datum
    ====================================
    Das Datum ist gueltig

                   Schaltjahr: Kein Schaltjahr
                    Wochentag: Donnerstag
                 Scaliger-Tag: 2299160
                     Kalender: Julianischer Kalender
     Datum nach Jul. Kalender: 4.10.1582
    Datum nach Greg. Kalender: 14.10.1582

    Der Scaliger-Tag ist der fortlaufende Tag ab 1.1.-4713

Über das Command-Line-Interface (CLI) als Ganzes wird der Benutzer so geführt, wie das vergleichsweise im CLI eines CISCO-IOS üblich ist. Nach dem Aufruf der Klasse RPC werden weitere, also diesbezügliche Optionen ausgegeben. Hierzu noch ein Beispiel:

D:\>c.pl RPC
Remote CMD auf dem Host
--base, -b: Name der Datenbank für Option --sql
--cat, -c: Den Inhalt einer Datei ausgeben
--destdir, -d: Zielverzeichnis für Upload mit --files
--files, -f: Lokale Dateien für Upload nach --destdir
--host, -h: rolfrost.de oder rolfrost
--ls, -l: Entspricht dem Kdo. ls -ltr im aktuellen Pfad oder voll qual. angegeben
--perlversion, -p: Gibt die PerlVersion vom RemoteHost aus
--sql, -s: SQL Anweisung, erfordert --base


d:\>c.pl RPC --host rolfrost.de --cat /etc/issue

Anbieter: nmq​rstx-18­@yahoo.de, die Seite verwendet funktionsbedingt einen Session-Cookie und ist Bestandteil meines nach modernen Aspekten in Perl entwickelten Frameworks.