in reply to More elegant way than multiple "if"?
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
|
|---|