Wie kann ich ein Modul in einem Perl-Einliner aufrufen?

7

Angenommen, ich habe eine Datendatei, die ich verarbeiten möchte; Ich möchte den maximalen Wert jeder Spalte nehmen und ihn an das Ende jeder Zeile anhängen.

EINGABE:

%Vor%

AUSGABE:

%Vor%

Ich versuche das als One-Liner zu implementieren. So weit ist das, was ich mir ausgedacht habe, obwohl es beklagt, dass &main::max nicht definiert ist:

%Vor%

Es scheint, dass ich das List::Util Modul nicht geladen habe. Was ist los mit dir? Und ist die Header-Spalte ein Problem?

perlrun hat kein anschauliches Beispiel dafür, wie dies zu tun ist ( eigentlich ist es, meine Dokumentation war ein wenig schwer zu lesen ).

    
Zaid 08.04.2010, 13:39
quelle

4 Antworten

19

Sie haben List::Util geladen, aber das Modul exportiert standardmäßig keine Symbole. Überspringen Sie die Kopfzeile, indem Sie prüfen, ob $. 1 ist.

%Vor%

Die perlrun Dokumentation erklärt:

  

Ein wenig eingebauter syntaktischer Zucker bedeutet, dass Sie auch -mmodule = foo, bar oder -Module = foo, bar als Abkürzung für -Mmodule qw(foo bar) angeben können. Dies vermeidet die Verwendung von Anführungszeichen beim Importieren von Symbolen. Der tatsächliche Code, der von -Module = foo, bar generiert wird, ist use module split(/,/,q{foo,bar}) . Beachten Sie, dass das = -Form die Unterscheidung zwischen -m und -M entfernt.

    
Greg Bacon 08.04.2010, 13:42
quelle
4
%Vor%     
draegtun 08.04.2010 13:44
quelle
2

List :: Util wurde geladen, exportiert jedoch standardmäßig nicht die Funktion max :

%Vor%     
Dave Sherohman 08.04.2010 13:48
quelle
1

Wenn Perl kein Muss ist, hier ist ein awk One-Liner

%Vor%     
ghostdog74 08.04.2010 13:57
quelle

Tags und Links