为什么strftime大写标志'^'不起作用?

时间:2013-04-08 20:44:27

标签: linux perl unix solaris

我有以下命令$(perl -e 'use POSIX;print strftime "%d-%^b-%Y",localtime time-86400;'),它适用于Red Hat Linux机箱,但不适用于Sun Solaris 9机箱。

问题1:从我读到的here开始,'^'由glibc提供......这是正确的吗?

问题2:我如何找出为什么它不能在Solaris机箱上运行? (最终,我如何让它发挥作用?)

1 个答案:

答案 0 :(得分:6)

Solaris不是 Linux ,虽然它是Unix :-),系统调用在不同的系统上表现不同,这就是为什么你会在C程序中看到很多#ifdef的原因。您可以在RedHat和Solaris上编译this C example of some time functions并查看差异(将%B转换为%^ B,您将看到它不会以大写字母打印)。最好的解决方案是使用Perl的uc函数。