in reply to More elegant way than multiple "if"?

> with their difference, in the respective unit

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

update

*) fixed