Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [perl] Consigli

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    10

    Consigli

    Ciao a tutti, sono nuovo del forum. Dovrei realizzare un'applicativo con Perl (premetto che non l'ho mai usato, conosco bene C++, Mysql e ho qualche conoscenza di Java) e vorrei qualche consiglio....

    Vi spiego in poche parole cosa dovrei fare:

    Di base ho, ad esempio, 300 file .txt contenenti dei traceroute

    Ogni file contiene quindi gli indirizzi IP dei nodi fino ad arrivare al nodo padre + informazioni che a me non servono (tempi in ms per raggiungere i vari nodi, etc)

    Dovrei:

    - Estrarre da ogni file i soli indirizzi IP nell'ordine in cui sono inseriti

    - Creare un file .csv (o xls) in cui ho 300 righe ed ogni riga contiene gli indirizzi IP che vanno dal nodo figlio al nodo padre!

    Spero di essere stato chiaro, casomai se serve posso allegare un file di esempio...

    Avete qualche consiglio? Qualcuno pensa che si potrebbe fare con qualche altro linguaggio di programmazione?

    Grazie a tutti

  2. #2
    incolla 2, 3 righe di esempio.

    Ritengo che si possa fare in qualunque linguaggio di programmazione, ma in Perl credo sia più semplice.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    10
    Allora, fai finta che ho questi 2 file (in realtà dovrebbero essere più di 300):

    1) 001.txt

    Rilevazione instradamento verso 100.130.10.76 su un massimo di 30 punti di passaggio

    1 <1 ms <1 ms <1 ms 100.76.220.2

    2 <1 ms <1 ms <1 ms 100.81.70.101

    3 1 ms 1 ms 1 ms 100.130.10.76

    Rilevazione completata.

    2) 002.txt

    Rilevazione instradamento verso 100.130.10.76 su un massimo di 30 punti di passaggio

    1 <1 ms <1 ms <1 ms 100.81.170.2

    2 <1 ms <1 ms <1 ms 100.79.73.106

    3 1 ms 1 ms 1 ms 100.130.10.76

    Rilevazione completata.

    Dovrei ottenere un file excel di 2 righe così costituito:

    001 - 100.76.220.2 - 100.81.70.101 - 100.130.10.76
    002 - 100.81.170.2 - 100.79.73.106 - 100.130.10.76

    001 e 002 sono i nomi dei file txt (l'IP della sorgente nel traceroute non c'è, quindi come riferimento del punto di partenza ho solo il nome del file!), ogni colonna successiva del file risultante contiene gli indirizzi IP per arrivare a destinazione!

    Spero di essere stato chiaro...

    Grazie e ciao ciao

  4. #4
    supponendo che i files siano in una specifica directory esclusiva:

    opendir (DIR, "/path/nome_directory") or die "Non posso aprire la directory. Errore: $!\n";
    @files = grep { /^\./ && -f "/path/nome_directory/$_" } readdir(DIR);
    closedir DIR;

    open (DATA, ">/path/nome_file_dati") or die "Non posso scrivere su /path/nome_file_dati. Errore: $!\n";
    foreach $file (sort @files) {
    $file =~ /(\d+)\.txt/;
    $record = "";
    $record = $1;
    open (FILE, "/path/$file") r die "Non posso leggere /path/$file. Errore: $!\n";
    while (FILE) {
    $_ =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/;
    $record .= " - $&";
    }
    close FILE;
    print DATA "$record\n";
    }
    close DATA;

    Salvo errori ed omissioni
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    10
    Grazie per la risposta!

    Ho il problema che non mi funziona e non capisco perchè... Lo faccio partire, compare la schermata di esecuzione, in meno di un secondo scompare e non succede niente...

    Io ho installato ActivePerl 5.10; di funzionare funziona perchè ho creato un tool per calcolare l'area di un rettangolo (così inizio a prendere confidenza...).

    Se ti può essere di aiuto, nei comandi che mi hai scritto tu ho inserito due righe iniziali per inserire un numero ma il tutto non funziona comunque...

    Ciao ciao

  6. #6
    nel codice che ho postato (e che devi comunque controllare) c'è un errore, devi scrivere:

    while (<FILE>) {
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    10
    Ciao, ho ricontrollato il codice, lo esegue ma mi genera un file vuoto. Ti commento il codice per vedere se sbaglio qualcosa:

    opendir (DIR, "D:/traceroute") or die "Non posso aprire la directory. Errore: $!\n";
    @files = grep { /^\./ && -f "D:/traceroute/$_" } readdir(DIR);
    closedir DIR;
    # la directory la apre, la sintessa del grep è corretta
    open (DATA, ">D:/traceroute/Ciao.txt") or die "Non posso scrivere su D:/traceroute/Ciao.txt. Errore: $!\n";
    # Il file Ciao.txt me lo crea
    foreach $file (sort @files)
    {
    $file =/Prova.txt/;
    #visto che non mi scriveva niente su Ciao.txt, come file gli ho dato un singolo file dal nome Prova.txt
    $record = "";
    $record = $1;
    open (FILE, "D:/traceroute/$file") or die "Non posso leggere D:/traceroute/$file. Errore: $!\n";
    while (<FILE>) {
    $_ =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/;
    # la sintassi per trovare l'IP è corretta, se faccio una prova in cui voglio trovare un IP da stringa funziona, nel mio caso invece su Ciao.txt non scrive nulla
    $record .= " - $&";
    #ho provato a togliere il punto davanti all'uguale ma niente; poi una domanda: cosa vuol dire quello dopo l'uguale?
    }
    close FILE;
    print DATA "$record\n";
    }
    close DATA;

    Grazie e ciao ciao

  8. #8
    questo
    $file =/Prova.txt/;

    deve essere scritto così
    $file =~ /Prova.txt/;

    $record .= " - $&";
    #ho provato a togliere il punto davanti all'uguale ma niente; poi una domanda: cosa vuol dire quello dopo l'uguale?

    significa aggiungi (.=) alla stringa $record uno spazio poi un trattino poi la stringa matchata prima ovvero l'IP.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.