$b = 123_456_000_000_000_001;
Aunque en otros lenguajes de programación números y cadenas son cosas bien distintas, en Perl ambos objetos son escalares.
Perl permite trabajar con números
en bases octal (comenzando por 0
), hexadecimal (0x
)
y binario (0b
). Por ejemplo:
lhp@nereida:~/Lperl/src$ perl -wde 0 Loading DB routines from perl5db.pl version 1.28 Editor support available. Enter h or `h h' for help, or `man perldebug' for more help. main::(-e:1): 0 DB<1> p 0377 255 DB<2> p 0xff 255 DB<3> p 0b1111_1111 255
Si lo que queremos es hacer la conversión inversa podemos usar sprintf :
lhp@nereida:~/Lbook$ perl -wde 0 main::(-e:1): 0 DB<1> $num = 42; DB<2> printf("%o", $num); 52 DB<3> $oct = sprintf("%o", $num); DB<4> p $oct 52Además de los operadores habituales, Perl admite el operador de módulo o resto entero, denotado por
%
y el operador de exponenciación denotado por **
.
Sigue un ejemplo que hace uso del depurador:
$ perl -de 0 main::(-e:1): 0 DB<1> p 234_512.0*2 469024 DB<2> p 012 10 DB<3> p 0b111 7 DB<4> p 5%2 1 DB<5> p 5**2 25 DB<6> p 0x1F 31 DB<7> p 2/3 0.666666666666667 DB<8> p (-1)**0.5 nan DB<9> p 1/0 Illegal division by zero at (eval 12)...
nan
que da el depurador al
cálculo de la raíz cuadrada? Si se quiere precisión infinita existe un buen número de librerías disponibles. Para cálculo con enteros se puede, ejemplo, usar Math::Pari:
pp2@nereida:~/src/testing$ perl -wde 0 main::(-e:1): 0 DB<1> use Math::Pari DB<2> $a = PARI 2 DB<3> print $a**10000 19950631168807583848837421626835850838234968318861924548520089498529438830221946 63191996168403619459789933112942320912427155649134941378111759378593209632395785 57300467937945267652465512660598955205500869181933115425086084606181046855090748 66089624888090489894838009253941633257850621568309473902556912388065225096643874 44104675987162698545322286853816169431577562964076283688076073222853509164147618 39563814589694638994108409605362678210646214273333940365255656495306031426802349 69400335934316651459297773279665775606172582031407994198179607378245683762280037 30288548725190083446458145465055792960141483392161573458813925709537976911927780 08269577356744441230620187578363255027283237892707103738028663930314281332414016 24195671690574061419654342324638801248856147305207431992259611796250130992860241 70834080760593232016126849228849625584131284406153673895148711425631511108974551 42033138202029316409575964647560104058458415660720449628670165150619206310041864 22275908670900574606417856951911456055068251250406007519842261898059237118054444 78807290639524254833922198270740447316237676084661303377870603980341319713349365 46227005631699374555082417809728109832913144035718775247685098572769379264332215 99399876886660808368837838027643282775172273657572744784112294389733810861607423 25329197481312019760417828196569747589816453125843413595986278413012818540628347 66490886905210475808826158239619857701224070443305830758690393196046034049731565 83208672105913300903752823415539745394397715257455290510212310947321610753474825 74077527398634829849834075693795564663862187456949927901657210370136443313581721 43117913982229838458473344402709641828510050729277483645505786345011008529878123 89473928699540834346158807043959118985815145779177143619698728131459483783202081 47498217185801138907122825090582681743622057747592141765371568772561490458290499 24610286300815355833081301019876758562343435389554091756234008448875261626435686 48833519463720377293240094456246923254350400678027273837755376406726898636241037 49141096671855705075909810024678988017827192595338128242195402830275940844895501 46766683896979968862416363133763939033734558014076367418777110553842257394991101 86468219696581651485130494222369947714763069155468217682876200362777257723781365 33161119681128079266948188720129864366076855163986053460229787155751794738524636 94469230878942659482170080511203223654962881690357391213683383935917564187338505 10970271613915439590991598154654417336311656936031122249937969999226781732358023 11186264457529913575817500819983923628461524988108896023224436217377161808635701 54684840586223297928538756234865564405369626220189635710288123615675125433383032 70029097668650568557157505516727518899194129711337690149916181315171544007728650 57318955745092033018530484711381831540732405331903846208403642176370391155063978 90007428536721962809034779745333204683687958685802379522186291200807428195513179 48157624448298518461509704888027274721574688131594750409732115080498190455803416 826949787141316063210686391511681774304792596709376
Casiano Rodríguez León