我有Mac上的Perl,Windows和Ubuntu。我怎么能从脚本内告诉哪一个是哪个?提前致谢。
编辑:我被问我做什么。它是一个脚本,是我们的跨平台构建系统的一部分。脚本递归目录并计算出要构建的文件。一些文件是平台特定的,因此,在Linux上我不想构建以_win.cpp结尾的文件等。
解决方法
检查包含操作系统名称的
$^O
变量:
print "$^O\n";
它在Linux上打印linux,在Windows上打印MSWin32。
如果使用English模块,也可以通过名称$OSNAME
引用此变量:
use English qw' -no_match_vars '; print "$OSNAME\n";
您还可以使用Config核心模块,它可以提供相同的信息(以及更多):
use Config; print "$Config{osname}\n"; print "$Config{archname}\n";
在我的Ubuntu机器上打印:
linux i486-linux-gnu-thread-multi
请注意,此信息基于Perl构建的系统,这不一定是Perl当前运行的系统(对于$^O
和$OSNAME
也是如此); OS将不可能不同,但是一些信息,如架构名称,可能很好。