gpt4 book ai didi

perl - 加载特定版本的 perl 模块

转载 作者:行者123 更新时间:2023-12-05 01:00:46 30 4
gpt4 key购买 nike

我正在寻找一种方法让模块(或脚本)能够加载特定版本的模块(如果解决方案不适用于 CPAN 模块,则主要查看内部模块)。

我希望这主要是一个打包练习(就像 npm/nodejs 的工作方式一样)。我的代码定义了它想要的模块版本,然后在使用发生时加载正确的模块版本。

如果不能在包装级别完成,是否有一种理智的方法可以在代码中处理这个问题?我真的不想乱扔模块(或模块的 USE-er)

if($api_ver eq '1.1'){    }
elsif($ap_ver eq '2.0') { }

更一般地说,我试图想出一种理智的方法来跟踪模块级别的版本化 API。

我看了 only根据这篇文章 How can I 'use' specific version of a perl CPAN module?但是单元测试报告相当糟糕,据我所知,该模块在 6 年内没有被触及(尽管仍然在我的列表中)

编辑:本质上我是在询问我的应用程序中的不同模块是否可以使用同一模块的不同版本。就像是:
Module A
load version 1.0.1 of Module Foo

Module B
load version 2.1.0 of Module Foo

模块 A 和 B 是更大软件的一部分,模块 Foo 也是本地编写的(正如我所说,我不太关心 CPAN 版本)我希望能够对模块 Foo 进行 API 重大更改而无需提升使用它的每个模块。是的,模块 Foo 的第 1 版最终可能会被弃用,那时代码必须升级。

最佳答案

过去,我通过在所有版本中拥有依赖项的副本以及 namespace 中的版本解决了这个问题。这似乎是代码重复,但实际上只是确保您提供稳定的 API 而不依赖于所有加载。

API::Version1::Dependency
API::Version2::Dependency

如果我们谈论的是面向 Web 的 API(可能是 REST),您可以让您的 API 成为单独的进程,这样它们就不会在加载内容时发生冲突,并使用类似 http://www.example.org/api/1/frobnicate 的内容调用它们

关于perl - 加载特定版本的 perl 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30622356/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com