需要Perl -V描述

时间:2010-11-18 16:58:54

标签: perl

查找perl版本“perl -V”的命令提供相关信息 平台,编译器,链接器和库,动态链接,编译时选项&本地应用的补丁。您能告诉我这些信息的提取位置(环境变量或任何其他方法)以及每组下各种参数的描述。 由于我的机器中安装了许多Perl版本,因此我在库文件包含方面遇到问题。

以下是我从我的机器上获得的描述:

我的perl5(修订版5版本10颠覆0)配置摘要:

   Platform:
        osname=MSWin32, osvers=5.1, archname=MSWin32-x86-multi-thread
        uname=''
        config_args='undef'
        hint=recommended, useposix=true, d_sigaction=undef
        useithreads=define, usemultiplicity=define
        useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
        use64bitint=undef, use64bitall=undef, uselongdouble=undef
        usemymalloc=n, bincompat5005=undef
    Compiler:
        cc='gcc', ccflags =' -s -O2 -DWIN32 -DHAVE_DES_FCRYPT  -DPERL_IMPLICIT_CONTE
    XT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_READFIX',
        optimize='-s -O2',
        cppflags='-DWIN32'
        ccversion='', gccversion='3.4.5', gccosandvers=''
        intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
        d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=12
        ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='long long', lseek
    size=8
        alignbytes=8, prototype=define
      Linker and Libraries:
        ld='g++', ldflags ='-s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\li
    b"'
        libpth=C:\strawberry\c\lib
        libs= -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32
    -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm
     -lversion -lodbc32 -lodbccp32
        perllibs= -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdl
    g32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lw
    inmm -lversion -lodbc32 -lodbccp32
        libc=-lmsvcrt, so=dll, useshrplib=true, libperl=libperl510.a
        gnulibc_version=''
      Dynamic Linking:
        dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
        cccdlflags=' ', lddlflags='-mdll -s -L"C:\strawberry\perl\lib\CORE" -L"C:\st
    rawberry\c\lib"'


    Characteristics of this binary (from libperl):
      Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                            PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
                            PERL_MALLOC_WRAP PL_OP_SLAB_ALLOC USE_ITHREADS
                            USE_LARGE_FILES USE_PERLIO
      Built under MSWin32
      Compiled at Apr 30 2009 14:30:10
      %ENV:
        PERL5_INCLUDE="C:\Perl\lib\CORE\"
        PERL5_LIB="C:\Perl\lib\CORE\"
      @INC:
        C:/Perl/lib
        C:/Perl/site/lib

2 个答案:

答案 0 :(得分:8)

请参阅Config

  

Config模块包含Perl构建时配置程序可用的所有信息(超过900个值)。

您可以查询单个变量的值。如,

C:\> perl -V:intsize

现在,如果您在Windows上安装了多个Perl,则需要小心。我的机器上有六个不同的版本。在某些时候,我决定使用ActiveState发行版作为“系统”发行版。因此,我的路径从该分发的bin目录开始:

Path=c:\opt\perl\site\bin;c:\opt\perl\bin; ...

其他人住在他们自己的目录中。我有所有这些批处理文件。这些批处理文件只是将相关的bin目录添加到路径中。我也可以通过路径显式调用它们。如,

E:\主页> c:\ opt \ strawberry-5.12.1 \ perl \ bin \ perl -V

此外,我使用Console2,这使我能够在标签中打开cmd.exe个shell,并为每个标签设置正确的设置。最后,我使用FileMenu Tools设置了右键单击快捷方式,以打开命令提示并应用相关设置。

这样,我可以使用一个主要的Perl进行日常开发,并且可以根据需要使用其他版本。并且,他们都没有践踏彼此的脚趾。

请记住,虽然它似乎并非绝对必要,但您应设置每个发行版cpan以使用特定于版本的目录。

答案 1 :(得分:0)

什么版本的Perl?

use Config;

print "Perl version: $Config{api_versionstring}\n";

# Same thing:

print "Perl version: $Config{api_revision}.$Config{api_version}.$Config{api_subversion}\n";

# Same Again...

print "Perl version: $Config{PERL_REVISION}.$Config{PERL_VERSION}.$Config{PERL_SUBVERSION}\n";

问题是早期版本的Perl(大约5.5左右)有一个十进制数。因此,您需要检查$Config{PERL_REVISION}以查看它是十进制数还是浮点数。

看看那里的Config module documentation某处,你会找到你需要知道的一切。我遇到的最大问题是很难确切地知道你在寻找什么。如果他们把一些比较常见的东西放在一个地方,那就太好了。