在Perl中是否有类似于`<?php phpinfo(); ?>`的东西?

6
在Perl中是否有类似于<?php phpinfo(); ?>的东西?

1
注意!你不需要分号。?>会自动添加分号。所以<?php phpinfo() ?>或<?php phpinfo()同样有效。 - AntonioCS
4个回答

11

您想要了解什么信息?phpinfo 函数可以提供几乎所有信息:

输出大量关于 PHP 当前状态的信息。包括 PHP 编译选项和扩展,PHP 版本,服务器信息和环境(如果编译为模块),PHP 环境,操作系统版本信息,路径,配置选项的主和本地值,HTTP 头以及 PHP 许可证。

在 Perl 中,您可以从不同的地方获取大部分信息,但不是全部。

  • Perl 自带的 Config 模块包含解释器的编译选项
  • Probe::Perl 可能会给您更好的接口
  • $^V 包含当前解释器的版本 (参见 perlvar)
  • %ENV 包含环境变量 (参见 perlvar)
  • 您可以使用 Devel::CheckOS 模块了解操作系统信息
  • 除非您使用 mod_perl,否则 Perl CGI 脚本可能无法直接访问 HTTP 头

6
use Config qw(myconfig);

print myconfig();

这段代码输出了很多与perl -V相同的信息。你也可以通过Config模块获取其中的单独元素。


1

补充一点,别忘了在你的文件中添加Perl二进制路径。

下面是我使用的示例脚本:

确保以下行是你文件中的第一行:

#!/usr/bin/perl

对于 Windows 系统,可能是这样的(取决于您的环境):

#!C:/wamp/bin/Perl64/bin/perl.exe

段落:Snippet:
#!/usr/bin/perl
# test.cgi by Bill Weinman [http://bw.org/]
# Copyright 1995-2008 The BearHeart Group, LLC
# Free Software: Use and distribution under the same terms as perl.

use strict;
use warnings;
use CGI;

print foreach (
    "Content-Type: text/plain\n\n",
    "BW Test version 5.0\n",
    "Copyright 1995-2008 The BearHeart Group, LLC\n\n",
    "Versions:\n=================\n",
    "perl: $]\n",
    "CGI: $CGI::VERSION\n"
);

my $q = CGI::Vars();
print "\nCGI Values:\n=================\n";
foreach my $k ( sort keys %$q ) {
    print "$k [$q->{$k}]\n";
}

print "\nEnvironment Variables:\n=================\n";
foreach my $k ( sort keys %ENV ) {
    print "$k [$ENV{$k}]\n";
}

来源:http://cgi.bw.org/cgi-t/


0

为了澄清,我已经包含了bash提示符号。

$ perl --version # This is what I would use

它应该从脚本中调用,而不是从控制台中调用。无论如何感谢您! - Flo Edelmann
6
哎呀,路径中的 Perl 不是正在运行此脚本的 Perl。你以 suid 的方式运行程序时,“perl”实际上是一个放置在 $PATH 中并删除系统上所有内容的 shell 脚本。(至少你的脚本也被删除了。) - jrockway
1
如果您想获取版本信息,只需在程序中使用 $^V 变量即可。 - brian d foy
@jrockway:如果是这样,那么你面临的问题比一个有缺陷的脚本更大,主要问题是存在高水平的蠢货。 - Josh K
1
@Josh:不,这里的主要问题是你在做错误的事情。你回答中的“perl”可能不是唯一的,也可能不是你想要使用的。当有更好的答案时,用其他问题分散注意力来为如此糟糕的答案辩护是没有意义的。从一开始就正确地做。 - brian d foy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接