1

我已经使用了该模块的许多功能,但有时必须安装到具有旧版本模块的环境中,该版本没有我已实现的功能。

那么处理这个问题的最佳方法是什么?- 版本检查?- 试着抓{}?

4

1 回答 1

2

所有 perl 对象都从UNIVERSAL模块扩展而来

是所有受祝福的引用都继承自的基类

您可以调用can模块来测试是否在包中实现了特定方法。

perl -MExcel::Writer::XLSX -e 'if (Excel::Writer::XLSX->can("set_vba_name")) {print "It can";}';

perl -MExcel::Writer::XLSX -e '$xlsx = Excel::Writer::XLSX->new("/tmp/file");  if ($xlsx->can("add_worksheet")) {print "It can"}';

我会避免使用版本检查,它会使测试和开发变得更加困难,但可以在紧要关头工作。

最终,您需要一个一致的运行时环境,因此您可以创建一个生成文件,将所有依赖项安装到您需要的版本。

于 2020-05-20T00:22:15.243 回答