我有以下命令$(perl -e 'use POSIX;print strftime "%d-%^b-%Y",localtime time-86400;')
,它适用于Red Hat Linux机箱,但不适用于Sun Solaris 9机箱。
问题1:从我读到的here开始,'^'由glibc提供......这是正确的吗?
问题2:我如何找出为什么它不能在Solaris机箱上运行? (最终,我如何让它发挥作用?)
答案 0 :(得分:6)
Solaris不是 Linux ,虽然它是Unix :-),系统调用在不同的系统上表现不同,这就是为什么你会在C程序中看到很多#ifdef的原因。您可以在RedHat和Solaris上编译this C example of some time functions并查看差异(将%B转换为%^ B,您将看到它不会以大写字母打印)。最好的解决方案是使用Perl的uc
函数。