Perl中的对称和传递自定义单位转换

bar*_*ter 5 perl unit-conversion

我已经定义了以下自定义单位(伪代码):

unix_days = unix_seconds/86400; 
nasa_seconds = unix_seconds - 946728000; 
Run Code Online (Sandbox Code Playgroud)

这让我直接转换unix_secondsunix_days或转换 unix_secondsnasa_seconds.

但是,如果 不编写另一个公式,我无法直接转换unix_days回来unix_seconds.

同样,如果不编写其他公式,我无法转换nasa_secondsunix_days.

是否有一个聪明的Perl子例程或包,让我这样做而无需编写其他功能?更具体地说,一个自定义单位转换包:

  • 可以神经单位转换函数的逆.例如,相反的f(x)=x/86400g(y)=y*86400.

  • 可以根据需要应用传递性.例如,如果unix_seconds = nasa_seconds + 946728000(通过功能逆)unix_days = unix_seconds/86400,我们可以将它们组合起来直接转换nasa_secondsunix_days.

如果需要,我可以用不寻常的方式编写我的转换公式.例如,Celsius到Fahrenheit可以写成:

C to F: *1.8 +32 
Run Code Online (Sandbox Code Playgroud)

这种形式很容易反转:只需按照后面的步骤反过来,即:

F to C: -32 /1.8 
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?

Dia*_*ius 5

物理::单位应提供您所需的设施.