[Roma.pm] - perfunc

Emanuele Zeppieri ema_zep at libero.it
Wed Feb 6 06:48:47 PST 2008


Aldo Calpini wrote:

> Emanuele Zeppieri wrote:
>> Sul piano della semplicità d'uso, forse la soluzione migliore è data dal 
>> pragma bignum (il modulo bignum è probabilmente già incluso nella tua 
>> distribuzione, per cui non devi neanche installarlo):
>>   
> 
> eh, ma questo funziona solo nel caso in cui il valore da convertire sia 
> una costante programmata duramente[1] nel codice.

Questo è vero, ma c'è un trucco semplicissimo: basta sommare 0 (o 
moltiplicare per 1) la tua variabile con valore alieno e il risultato 
diventa automagicamente un oggetto Math::BigInt (perché dietro le quinte 
interviene anche l'overloading degli operatori):

$dec = ($bin_from_outside + 0)->as_int; # et-voilà ;-)

(Sempre che si voglia proprio insistere con bignum anziché usare 
direttamente Math::BigInt).

> supponendo di partire 
> da una rappresentazione (stringa) del binario in una variabile, si 
> potrebbe proporre lo sporco trucco:
> 
>   $dec = eval "0b$bin";

Soffre della limitazione sulla dimensione dei numeri (che bignum non ha) 
ma è veramente bello! ;-)

Ciao,
Emanuele.


More information about the Roma mailing list