我有以下命令$(perl -e 'use POSIX;print strftime "%d-%^b-%Y",localtime time-86400;')
适用于 Red Hat Linux 机器,但不适用于 Sun Solaris 9 机器。
问题 1:从我在这里读到的内容,'^' 是由 glibc 提供的......这是正确的吗?
问题 2:我如何找出它在 Solaris 机器上不起作用的原因?(最终,我该如何让它发挥作用?)
Solaris 不是Linux,虽然它是 Unix :-),系统调用在不同系统上的行为不同,这就是为什么你会在 C 程序中看到很多 #ifdef。您可以在 RedHat 和 Solaris 上编译一些时间函数的 C 示例并查看差异(将 %B 转换为 %^B,您将看到它不会以大写形式打印)。最好的解决方案是使用 Perl 的uc
函数。