是否可以使用或需要 Perl 脚本而不执行其语句?

2024-03-01

我需要对一些旧脚本添加单元测试,这些脚本基本上都是以下形式:

#!/usr/bin/perl

# Main code
foo();
bar();

# subs
sub foo {

}
sub bar {

}

如果我尝试在单元测试中“要求”此代码,则代码的主要部分将运行,因为我希望能够单独测试“foo”。

有没有办法在不将 foo,bar 移动到单独的 .pm 文件中的情况下执行此操作?


假设您没有安全问题,请将其包装在 sub { ... } 中并对其进行评估:

use File::Slurp "read_file";
eval "package Script; sub {" . read_file("script") . "}";

is(Script::foo(), "foo");

(注意 eval 不在脚本关闭的任何词汇范围内)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用或需要 Perl 脚本而不执行其语句? 的相关文章

随机推荐