Visualizzazione dei risultati da 1 a 6 su 6

Discussione: File di testo

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    415

    File di testo

    Ciao a tutti,
    mi scuso se la domanda potrà essere banale, ma non ho molta esperienza con il perl. Ho un file di testo e devo fare in modo di scrivere la parte successiva ad una data riga (il cui valore ho in una stringa) in un altro file di testo.
    La soluzione che mi è venuta in mente è banalmente quella di scorrere tutto il file comparando ogni riga con la stringa e dal punto in cui trovo la corrispondenza scrivere riga per riga nel secondo file di testo:

    open POINT_FILE, "<$pointer_file";
    open INP_FILE, "<$input_file";
    open APP_FILE, ">$app_file";

    $puntatore = <POINT_FILE>;
    @righe_log = <INP_FILE>;
    $nr_rec = scalar(@righe_log);
    $start = "ko";

    foreach $linea(@righe_log)
    {
    if ($start eq "ok"){
    print APP_FILE $linea;
    }
    if ($linea eq $puntatore){
    $start = "ok";
    }
    }

    So che il perl è famoso per la manipolazione delle stringhe, per cui mi chiedevo se magari esisteva un metodo più furbo ed elegante.
    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    268
    puoi fare un piccolo esempio di quello che vuoi ottenere?

    Mi sembra di capire che la parte che vuoi aggiungere è su alcune righe e non su tutte, ma non ho capito bene con quale criterio. Se sai il numero delle righe che vuoi modificare potresti trasformare le righe del file in un array, modificare le stringhe nelle posizioni dettate dal numero delle righe e poi ricreare il file ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    415
    Ho un file di testo e vorrei copiare la seconda parte del file (da una data riga che trovo per comparazione con una stringa) in un altro file di testo

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    268
    decisamente poco diversa da quella che faresti tu!
    Ci sono dei veri esperti qui nel forum. Credo che qualcuno ti potrà proporre una funzione alternativa, migliore!
    Comunque:

    open (POINT_FILE, "<$pointer_file");
    $puntatore = <POINT_FILE>;
    close (POINT_FILE);

    $start=0; #come il tuo ko, ok
    open (APP_FILE, ">$app_file");
    open (INP_FILE, "<$input_file");
    while (<INP_FILE>)
    {
    if ($linea eq $puntatore)
    {$start=1}
    if ($stat==1)
    {print APP_FILE $_}
    }
    close (INP_FILE);
    close (APP_FILE);

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    268
    dentro il ciclo di while:
    if ($stat==1) -> "stat" deve essere naturalmente "start"!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    415
    ok, grazie, avevo comunque capito

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.