2016-11-20 4 views
-1

Ich bin neu in Perl und versuche, das Problem mit dem Skript herauszufinden.Perl extrahieren und analysieren

2.Was kann ich ändern, um mehrere XML nacheinander über die Befehlszeile zu akzeptieren?

3. Wie man o/p der Funktion auf Textdatei richtet?

4.Wie man o/p der Funktion auf i/p zu anderer Funktion als Argument richtet?

+1

schreiben schlage ich vor, die Frage wiederherzustellen, wie es gewesen war, zumindest die meisten davon . Das Beispiel dessen, was Sie getan haben, machte die meisten Dinge klar, und es war gut geformt und allgemein nützlich für andere. Was ohne Code geblieben ist, ergibt keinen Sinn. Zum einen macht es beide Antworten ungültig. – zdim

Antwort

1

Zuallererst sollten Ihre Moduldatei, die package-Anweisung und die use-Anweisung alle gleich geschrieben sein und sollten alle mit einem Großbuchstaben beginnen. Es sieht aus wie sollten Sie Ihre Moduldatei NVD.pm

  1. Sie haben @vuln, nicht %vuln

  2. Sie können durch das Schreiben dieses

    my %vuln; 
    
    for (@ARGV) { 
        %vuln = (%vuln, NVD::extract($_)); 
    } 
    

    Das wird zu einem Hash hinzufügen Werte deklariert aufgerufen werden Aggregieren Sie die Ergebnisse für alle in der Befehlszeile genannten Dateien

  3. Es hängt davon ab, was Sie wollen. Das Ergebnis von extract ist eine Hash-Struktur, daher müssen Sie die Daten irgendwie formatieren. Im Allgemeinen können Sie

    open my $fh, '>', 'output.txt' or die $!; 
    
    print ... extracting data from `%vuln` as required 
    
    close $fh; 
    
  4. Durch das Schreiben einfach

    other_function(NVD::extract($_)) 
    

    oder möglicherweise

    my %vuln = NVD::extract($_); 
    other_function(%vuln); 
    
Verwandte Themen