Perl-Code Erklärung gesucht



  • Hallo, ich habe keine Ahnung von Perl, würde aber gern das hier verstehen:

    open(my $hexplist, "cat $pmd | pm_select_rows.py -c solver -v seqEmbRK -d | " .
         "pw_uniq.sh method,ode,h,bf |");
    

    Kann mir das jmd erklären`



  • Na, wo sind die Unix Nerds?



  • Feiern Vatertag 😉



  • shish schrieb:

    Hallo, ich habe keine Ahnung von Perl, würde aber gern das hier verstehen:

    open(my $hexplist, "cat $pmd | pm_select_rows.py -c solver -v seqEmbRK -d | " .
         "pw_uniq.sh method,ode,h,bf |");
    

    Kann mir das jmd erklären`

    Es startet ein Kommando und verbindet die standard Ausgabe des Kommandos mit einem Filehandle, der in der Variablen $hexplist gespeichert wird. Über diese Variable kann das Perl-Programm dann die Ausgaben des Kommandos lesen.

    Das Kommando selbst ist ein wenig schwieriger zu interpretieren. Zunächst wird unnötigerweise das cat-Kommando aufgerufen (sogenanntes useless use of cat; Statt "cat foo|mycmd" besser "mycmd <foo"). Der Inhalt der Datei, dessen Dateiname in der (perl-)Variablen $pmd steht wird an ein weiteres Programm geschickt. Aufgrund der Endung ist zu vermuten, dass es sich um ein Python skript handelt. Die Ausgabe wird dann an ein weiteres Programm geschickt, welches vermutlich ein shell skript ist. Dessen Ausgabe wird dann mit dem Dateihandle in perl verbunden.

    Boah - in einem Kommando 3 Sprachen untergebracht. Das ist echt heftig. Die alleinige Verwendung von Perl kann ein System schon unleserlich machen, aber so etwas würde ich mangels Wartbarkeit nicht akzeptieren.


Anmelden zum Antworten