【发布时间】:2014-05-14 11:29:41
【问题描述】:
CPAN 上的某些模块使用 LWP::UserAgent 模块。其中一些模块提供了设置属性的能力,然后模块将这些属性与 UserAgent 对象一起使用。但是,其中一些不提供这种机制。在这种情况下,将属性传递给模块中的 UserAgent 对象的最佳方法是什么?具体来说,我对代理属性和代理字符串感兴趣。
我的第一个想法是参考 Mastering Perl 的第 10 章,但这似乎太过分了,我猜有一个更简单的解决方案。有没有更简单的解决方案?
不提供设置代理属性机制的模块示例:
【问题讨论】:
-
WWW::TV::Series的文档说 “还没有对代理服务器的支持。如果你真的需要,LWP 应该在你的环境中使用它......”所以我假设您可以使用LWP::UserAgentdocumentation 中描述的环境变量。从文档来看,这两个模块都没有通过方法调用公开LWP::UserAgent对象,所以除非你想破解内部结构(可能会随着下一个模块发布而改变),你最好向维护者提交功能请求. -
即使从环境变量加载,我仍然需要访问 UserAgent 对象,不是吗?根据您在其余消息中所写的内容,我需要学习掌握 Perl 的第 10 章。
-
查看 LWP::UserAgent 文档后,我注意到您可以将 PERL_LWP_ENV_PROXY 环境变量设置为 1,然后将 http_proxy 变量设置为您的代理地址,这将使所有 LWP::UserAgent 对象都使用代理在 http_proxy 中指定。从模块中访问未通过访问器等公开的属性的更普遍的问题似乎是子类化或修补,无论是通过发送给模块开发人员还是在本地进行。
标签: perl perl-module