Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Mov di un file + Verifica

    Ciao ragazzi,

    sto cercando di fare un .pl che mi prenda un file(txt) da una directory e lo sposti in un'altra. Successivamente verifica che il file sia stato correttamente spostato e lancia a video un messaggio di conferma.

    Ora, il codice che ho fatto e' questo:

    codice:
    #!/usr/bin/perl
    use File::Copy;
    
    $oldlocation = "C:/PIPPO/uno.txt";
    $newlocation = "C:/PLUTO/";
    move($oldlocation, $newlocation);
    
    #Accede alla directory specificata
    opendir(pluto, "C:/PLUTO/") || die("Accesso alla directory non riuscito!"); 
    #Dentro l'array thefiles inserisce il contenuto della directory
    @thefiles= readdir(pluto); 
    
    #Variabili stringhe
    $ok = "File copiato correttamente";
    $ko = "Trasferimento no riuscito";
    $nome_file = "uno.txt";
    
    $i = 0;
    while ($i <= $#thefiles) {
    	if ($nome_file == @thefiles[$i]){
    		print "$ok";
    		last;
    	}
    	$i++;
    }
    closedir(pluto);
    Il file viene viene correttamente spostato, ma la logica che gestisce l'esito dell'operazione non e' corretta, mi stampa a priori File copiato correttamente .

    Mi sto vendendo perl da 1 giorno e mezzo, qualcuno potrebbe aiutarmi?

    Grazie in anticipo
    La mente che si apre a una nuova idea non ritorna mai alla dimensione precedente..

  2. #2
    l'operatore "==" vale per i confronti tra numeri, per i confronti tra stringhe si usa "eq". A parte ciò sarebbe molto meglio al posto di:

    $i = 0;
    while ($i <= $#thefiles) {
    if ($nome_file == @thefiles[$i]){
    print "$ok";
    last;
    }
    $i++;
    }

    scrivere:

    foreach my $file (@thefiles) {
    if (nome_file eq $file) {
    print $ok;
    last;
    }
    }
    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
    Originariamente inviato da shishii
    l'operatore "==" vale per i confronti tra numeri, per i confronti tra stringhe si usa "eq". A parte ciò sarebbe molto meglio al posto di:

    $i = 0;
    while ($i <= $#thefiles) {
    if ($nome_file == @thefiles[$i]){
    print "$ok";
    last;
    }
    $i++;
    }

    scrivere:

    foreach my $file (@thefiles) {
    if (nome_file eq $file) {
    print $ok;
    last;
    }
    }
    Grazie per l'aiuto

    Con il codice sopra mi controlla ogni singolo elemento e in base all'uguaglianza mi stampa una stringa. Se volessi fare un'unica stampa alla fine delle verifiche?

    Grazie in anticipo
    La mente che si apre a una nuova idea non ritorna mai alla dimensione precedente..

  4. #4
    devi salvare i risultati positivi in una struttura più complessa (array o hash) e stamparla alla fine.
    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.