Sponsored Content
Top Forums Shell Programming and Scripting 2 versions, 1 script (A tale of madness.) Post 302514292 by Perderabo on Friday 15th of April 2011 10:42:34 AM
Old 04-15-2011
My perl pocket reference says that "use" has an optional version. So I guess that something like:use Math::BigInt 1.87; might work.
 

7 More Discussions You Might Find Interesting

1. IP Networking

network madness

well here's the situation .... the setup - cisco 800 series router , 2 cisco 1900 switches , which connect abt 15 pc's . the task - establish a connection with a remote server through a digital line (64kbps) the problem - 7 pcs connected to one of the two switches do not connect to the... (9 Replies)
Discussion started by: cubicle^dweller
9 Replies

2. IP Networking

network speed not tale with the port setting

Hi all, one of my Sun Box facing the problem. The network port i had set to Auto-Negotiated and i had edited the /etc/system/ file in the Sun box as below: set hme:hme_adv_autoneg_cap=1 set hme:hme_adv_100fdx_cap=0 set hme:hme_adv_100hdx_cap=0 But when i checked the /var/adm/messages/, it... (0 Replies)
Discussion started by: AirWalker83
0 Replies

3. Shell Programming and Scripting

shell script preserving last 2 versions of files

I need some help with the logic and syntax for a shell script (ksh) that will search a directory and look for similar files and save only the last two versions. The version number is in the file name. However, the files are of varying name lengths and may have 1 or many files, with no limit to... (6 Replies)
Discussion started by: synergy_texas
6 Replies

4. Shell Programming and Scripting

Need a script to delete previous versions of files

Hi. I need a script (either bash or perl) that can delete previous versions of files. For instance, from our continuous build process I get directories such as build5_dev_1.21 build5_dev_1.22 build5_dev_1.23 build5_dev_1.24 I need a script that I can run every night (using "at"... (6 Replies)
Discussion started by: jbsimon000
6 Replies

5. Shell Programming and Scripting

Script to delete older versions of unique files

I have directory where new sub directories and files being created every few minutes. The directories are like abc_date, def_date, ghi_date. I am looking to keep the latest 2 unique directories and delete everything else. Here is what I have so far This gives me unique names excluding the... (5 Replies)
Discussion started by: zzstore
5 Replies

6. What is on Your Mind?

Interview madness

A discussion elsewhere got me thinking: What where the most insane/amusing/strange interview questions or answers you got/gave? Not overly technical stuff, but questions that made you go "Huh?" (And keeping with this forums main Idea: "No technical Q&A") I'll start... (6 Replies)
Discussion started by: pludi
6 Replies

7. Shell Programming and Scripting

Script to maintain file versions

I am developing a script to maintain 'n' number of versions of a file. The script will take a filename as a parameter and the number of versions to maintain. This basically does something like a FIFO. Here is what I developed. But something is not right. I have attached the script. Can u pls help... (2 Replies)
Discussion started by: vskr72
2 Replies
bignum(3pm)						 Perl Programmers Reference Guide					       bignum(3pm)

NAME
bignum - Transparent BigNumber support for Perl SYNOPSIS
use bignum; $x = 2 + 4.5," "; # BigFloat 6.5 print 2 ** 512 * 0.1," "; # really is what you think it is print inf * inf," "; # prints inf print NaN * 3," "; # prints NaN DESCRIPTION
All operators (including basic math operations) are overloaded. Integer and floating-point constants are created as proper BigInts or BigFloats, respectively. If you do use bignum; at the top of your script, Math::BigFloat and Math::BigInt will be loaded and any constant number will be converted to an object (Math::BigFloat for floats like 3.1415 and Math::BigInt for integers like 1234). So, the following line: $x = 1234; creates actually a Math::BigInt and stores a reference to in $x. This happens transparently and behind your back, so to speak. You can see this with the following: perl -Mbignum -le 'print ref(1234)' Don't worry if it says Math::BigInt::Lite, bignum and friends will use Lite if it is installed since it is faster for some operations. It will be automatically upgraded to BigInt whenever neccessary: perl -Mbignum -le 'print ref(2**255)' This also means it is a bad idea to check for some specific package, since the actual contents of $x might be something unexpected. Due to the transparent way of bignum "ref()" should not be neccessary, anyway. Since Math::BigInt and BigFloat also overload the normal math operations, the following line will still work: perl -Mbignum -le 'print ref(1234+1234)' Since numbers are actually objects, you can call all the usual methods from BigInt/BigFloat on them. This even works to some extent on expressions: perl -Mbignum -le '$x = 1234; print $x->bdec()' perl -Mbignum -le 'print 1234->binc();' perl -Mbignum -le 'print 1234->binc->badd(6);' perl -Mbignum -le 'print +(1234)->binc()' (Note that print doesn't do what you expect if the expression starts with '(' hence the "+") You can even chain the operations together as usual: perl -Mbignum -le 'print 1234->binc->badd(6);' 1241 Under bignum (or bigint or bigrat), Perl will "upgrade" the numbers appropriately. This means that: perl -Mbignum -le 'print 1234+4.5' 1238.5 will work correctly. These mixed cases don't do always work when using Math::BigInt or Math::BigFloat alone, or at least not in the way normal Perl scalars work. If you do want to work with large integers like under "use integer;", try "use bigint;": perl -Mbigint -le 'print 1234.5+4.5' 1238 There is also "use bigrat;" which gives you big rationals: perl -Mbigrat -le 'print 1234+4.1' 12381/10 The entire upgrading/downgrading is still experimental and might not work as you expect or may even have bugs. You might get errors like this: Can't use an undefined value as an ARRAY reference at /usr/local/lib/perl5/5.8.0/Math/BigInt/Calc.pm line 864 This means somewhere a routine got a BigFloat/Lite but expected a BigInt (or vice versa) and the upgrade/downgrad path was missing. This is a bug, please report it so that we can fix it. You might consider using just Math::BigInt or Math::BigFloat, since they allow you finer control over what get's done in which mod- ule/space. For instance, simple loop counters will be Math::BigInts under "use bignum;" and this is slower than keeping them as Perl scalars: perl -Mbignum -le 'for ($i = 0; $i < 10; $i++) { print ref($i); }' Please note the following does not work as expected (prints nothing), since overloading of '..' is not yet possible in Perl (as of v5.8.0): perl -Mbignum -le 'for (1..2) { print ref($_); }' OPTIONS bignum recognizes some options that can be passed while loading it via use. The options can (currently) be either a single letter form, or the long form. The following options exist: a or accuracy This sets the accuracy for all math operations. The argument must be greater than or equal to zero. See Math::BigInt's bround() function for details. perl -Mbignum=a,50 -le 'print sqrt(20)' p or precision This sets the precision for all math operations. The argument can be any integer. Negative values mean a fixed number of digits after the dot, while a positive value rounds to this digit left from the dot. 0 or 1 mean round to integer. See Math::BigInt's bfround() function for details. perl -Mbignum=p,-50 -le 'print sqrt(20)' t or trace This enables a trace mode and is primarily for debugging bignum or Math::BigInt/Math::BigFloat. l or lib Load a different math lib, see "MATH LIBRARY". perl -Mbignum=l,GMP -e 'print 2 ** 512' Currently there is no way to specify more than one library on the command line. This will be hopefully fixed soon ;) v or version This prints out the name and version of all modules used and then exits. perl -Mbignum=v -e '' METHODS Beside import() and AUTOLOAD() there are only a few other methods. Since all numbers are now objects, you can use all functions that are part of the BigInt or BigFloat API. It is wise to use only the bxxx() notation, and not the fxxx() notation, though. This makes it possible that the underlying object might morph into a different class than BigFloat. inf() A shortcut to return Math::BigInt->binf(). Usefull because Perl does not always handle bareword "inf" properly. NaN() A shortcut to return Math::BigInt->bnan(). Usefull because Perl does not always handle bareword "NaN" properly. upgrade() Return the class that numbers are upgraded to, is in fact returning $Math::BigInt::upgrade. MATH LIBRARY Math with the numbers is done (by default) by a module called Math::BigInt::Calc. This is equivalent to saying: use bignum lib => 'Calc'; You can change this by using: use bignum lib => 'BitVect'; The following would first try to find Math::BigInt::Foo, then Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc: use bignum lib => 'Foo,Math::BigInt::Bar'; Please see respective module documentation for further details. INTERNAL FORMAT The numbers are stored as objects, and their internals might change at anytime, especially between math operations. The objects also might belong to different classes, like Math::BigInt, or Math::BigFLoat. Mixing them together, even with normal scalars is not extraordi- nary, but normal and expected. You should not depend on the internal format, all accesses must go through accessor methods. E.g. looking at $x->{sign} is not a bright idea since there is no guaranty that the object in question has such a hashkey, nor is a hash underneath at all. SIGN The sign is either '+', '-', 'NaN', '+inf' or '-inf' and stored seperately. You can access it with the sign() method. A sign of 'NaN' is used to represent the result when input arguments are not numbers or as a result of 0/0. '+inf' and '-inf' represent plus respectively minus infinity. You will get '+inf' when dividing a positive number by 0, and '-inf' when dividing any negative number by 0. MODULES USED
"bignum" is just a thin wrapper around various modules of the Math::BigInt family. Think of it as the head of the family, who runs the shop, and orders the others to do the work. The following modules are currently used by bignum: Math::BigInt::Lite (for speed, and only if it is loadable) Math::BigInt Math::BigFloat EXAMPLES
Some cool command line examples to impress the Python crowd ;) perl -Mbignum -le 'print sqrt(33)' perl -Mbignum -le 'print 2*255' perl -Mbignum -le 'print 4.5+2*255' perl -Mbignum -le 'print 3/7 + 5/7 + 8/3' perl -Mbignum -le 'print 123->is_odd()' perl -Mbignum -le 'print log(2)' perl -Mbignum -le 'print 2 ** 0.5' perl -Mbignum=a,65 -le 'print 2 ** 0.2' LICENSE
This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. SEE ALSO
Especially bigrat as in "perl -Mbigrat -le 'print 1/3+1/4'". Math::BigFloat, Math::BigInt, Math::BigRat and Math::Big as well as Math::BigInt::BitVect, Math::BigInt::Pari and Math::BigInt::GMP. AUTHORS
(C) by Tels <http://bloodgate.com/> in early 2002. perl v5.8.0 2002-06-01 bignum(3pm)
All times are GMT -4. The time now is 10:14 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy