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
}
}