2010-11-18 84 views
0

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

下面是我从我的机器得到了描述:

我的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 

回答

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:\选择\草莓5.12.1 \ Perl的\斌\ perl -V来

另外,我用Console2这使我在与标签打开cmd.exe弹正确设置每个选项卡。最后,我使用FileMenu Tools来设置右键单击快捷方式,以应用相关设置打开命令提示符。

这样,我可以使用一个主要的Perl进行日常开发,并且可以根据需要使用其他版本。而且,他们都没有践踏对方的脚趾。请注意,尽管看起来不是绝对必要的,但应该将每个分发版cpan设置为使用特定于版本的目录。

+0

更新环境变量只能从哪个方式更改库路径include? (如上面的描述) – hemanth 2010-11-18 22:10:51

+1

你到底想做什么? “perl -V”命令的输出无法更改。它在程序编译时设置。您可以使用-I指定要为Perl模块包含的目录,并且可以将PERL5LIB设置为指定要加载的Perl库的目录路径。那是你要的吗?尝试从命令行运行'perldoc perlrun'(如果在可执行文件路径中有Perl二进制文件,它应该可以工作)。这将为您提供Perl的命令行选项以及它们的用途。 – 2010-11-19 03:01:00

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在某个地方,你会发现你需要知道的一切。我遇到的最大问题是很难确切地知道你在找什么。如果他们把一些更常见的东西放在一起,那会很好。