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

    Migliorare le prestazioni con Eval, possibile?

    Salve,
    sto facendo una libreria con molte funzioni.

    Il mio problema è che questo modulo usa librerie molto pesanti, come ad esempio le varie Digest per il cacolo dell'hashing, usa la libreria RSA che è strapesante, e altre librerie di criptazione.

    Stavo pensado di poter richiamare una certa libreria solo se il programma principale chiama una certa funzione (cioè solo se ne abbiamo strettamente bisogno).

    Ad esempio devo criptare un testo con blowfish:
    codice:
    sub CryptBlowFish {
    	my ($key, $testo_normale)=@_;
    	eval "use Crypt::BlowFish;";
    	my ($pezzo,$cipher,$testo_criptato);
    	return undef unless $cipher = new Crypt::Blowfish $key;
    	my $testo_normale=pack("I/a*", $testo_normale);
    	while (length($testo_normale)>0) {
    		$pezzo=substr($testo_normale, 0, 8, "");
    		$pezzo.="\x00"x(8-length($pezzo)) if (length($pezzo)<8);
    		$testo_criptato.=$cipher->encrypt($pezzo);
    	}
    	return $testo_criptato;	
    }
    Come si vede, carico la libreria Crypt::BlowFish con eval.
    Il "trucco" sembra non dare problemi e l'esecuzione è impeccabile.

    Volevo sapere se questo metodo lo posso usare o se mi devo vergognare ad usarlo. Cioè, non voglio sapere se funziona ma se posso eticamente farlo

    ciao e grazie in anticipo.

  2. #2
    Se un programma funziona non ci sono problemi etici.
    Comunque per risolvere il tuo problema il metodo giusto è:

    if (qualcosa) {
    eval {
    require Crypt::BlowFish;
    Crypt::BlowFish->import();
    };
    if ($@) {
    gestisci la mancanza della libreria
    }
    }
    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
    Bene bene, copio e incollo.
    Grazie mille shishii

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.