What is the respective unit? The bigger one?
The straight forward way is to use 2 functions:
One to_float () that transforms to a float representing bytes.
One to_unit() that transforms back to units.
Than $diff = to_unit( to_float ($left) - to_float ($right) )
In case you don't want negative differences use abs
4 units are not too much for ifs or nested ternary operands.
A more scalable approach is a look up table in a hash.
%exponent = ( B => 0, K => 3, M => 6, G => 9, T => 12) #*
Personally I'd go for the ternaries.
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
FootballPerl is like chess, only without the dice
*) fixed
In reply to Re: More elegant way than multiple "if"?
by LanX
in thread More elegant way than multiple "if"?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |