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

use*_*760 0 unix linux perl solaris

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

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

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

小智 6

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