如何理解 Perl 脚本

How to understand a Perl script

我正在尝试理解以下 Perl 脚本。我是 C 程序员,但无法理解这个脚本:

use OpenSSL::Test::Utils;
use OpenSSL::Test qw/:DEFAULT srctop_file/;

my $test_name = "test_sysdefault";
setup($test_name);

plan skip_all => "$test_name is not supported in this build"
    if disabled("tls1_2") || disabled("rsa");

plan tests => 1;

$ENV{OPENSSL_CONF} = srctop_file("test", "sysdefault.cnf");

ok(run(test(["sysdefaulttest"])), "sysdefaulttest");

问题是.c文件'test_data_int_test.h'中的以下定义没有按预期生效:

/* sysdefault.cnf */
char _sysdefault_cnf[] =
    "# Configuration file to test system default SSL configuration\n"
    "\n"
    "openssl_conf = default_conf\n"
    "\n"
    "[ default_conf ]\n"
    "\n"
    "ssl_conf = ssl_sect\n"
    "\n"
    "[ssl_sect]\n"
    "\n"
    "system_default = ssl_default_sect\n"
    "\n"
    "[ssl_default_sect]\n"
    "MaxProtocol = TLSv1.2\n"
    "MinProtocol = TLSv1.2\n";

特别是最后两行,其中最小值和最大值设置为 TLSv1.2。

我是否需要以任何方式修改上述 perl 脚本?

OpenSSL::Test 不在 CPAN 上,所以这都是(有根据的)猜测。您可能应该与向您提供模块的人确认这一点。

看起来 OpenSSL::Test 继承自像 Test::More or Test::Class 这样的标准 Perl 测试模块,因此阅读他们的文档会对您有所帮助。

Perl 测试套件总是包含一个计划。这只是预期的测试数量 运行。测试套件在某种测试工具(通常为 prove)中将是 运行,并且测试工具会将预期的测试数量与实际数量 运行 进行比较,因此可以判断如果这两个数字不匹配时发生了奇怪的事情。例如,如果测试数量 运行 少于预期数量,这可能意味着您的测试程序在完成之前崩溃了。

在您的代码中,有一个测试(调用 ok() 的代码行)因此我们将测试计划设置为 1。