Perl - 包含相对路径中的包,其中包含相对路径中的另一个包?

2023-11-30

我有三个文件:

〜/ multiFindBinTest.pl:

use FindBin;
use lib "$FindBin::Bin/mod2";
use pack2;

〜/mod1/pack1.pm

package pack1;
1;

〜/mod2/pack2.pm

use FindBin;
use lib "$FindBin::Bin/../mod1";
use pack1;
package pack2;
1;

正如您所看到的,base.pl 使用 pack2,而 pack2 又使用 pack1。然而,这是如何不使用FindBin模块的演示:当执行base.pl时,pack2将无法找到pack1,因为它将保留从base获取的“$FindBin::Bin”的值.pl。

所以我的问题很简单:perl 中是否有一种方法可以“使用”一个模块,该模块“使用”另一个模块,所有这些都基于相对于“使用”文件的路径?


找到位置的唯一方法module文件是要使用__FILE__. Both FindBin and $0始终参考主脚本文件。

对于模块来说,这是我能想到的最简洁的。您的主代码解决方案很好,但您也可以在那里使用此替代方案。

use strict;
use warnings;

use File::Basename 'fileparse';
use File::Spec;

my $dir;
BEGIN {
  $dir = (fileparse(File::Spec->rel2abs(__FILE__)))[1];
}
use lib $dir.'../mod1';

use pack1;

package pack2;

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

Perl - 包含相对路径中的包,其中包含相对路径中的另一个包? 的相关文章

  • 如何轻松地将 Ajax、perl 和 JSON 结合使用?

    我正在尝试使用 Ajax 制作一个网页 Example 我创建了一个 Perl CGU 文件来触发一个简单的帖子 文件 test cgi name 托马斯 回复短信 你的名字是托马斯 我创建了一个可以使用该帖子的 html 文件 但随后页面
  • 由于 lpcap,CPAN 安装 Net::Pcap 和 Packet 模块失败

    最近 我尝试通过 cpan 安装 perl 模块 Net Packet 和 Net Pcap 但它抱怨找不到 pcap 库 所以我正在搜索 cpan 在安装模块时是否接受外部 lib include 目录 但到目前为止还没有运气 looki
  • 如何编写 Perl 脚本来使用 curl 处理 URL?

    我有一个非常简单的任务 我有一个 crontab 每小时运行一个脚本 该脚本旨在简单地处理 URL 这就是我所拥有的 这不起作用 我收到语法错误 usr bin perl curl http domain com page html 我已经
  • MIME::Lite - 无法发送邮件 [smtp.gmail.com 不支持 SMTP auth() 命令]

    use MIME Lite use warnings use MIME Base64 use Authen SASL use MIME Lite use MIME Base64 use Authen SASL use warnings us
  • Perl 是否有相当于 Python 的 `if __name__ == '__main__'` 的功能?

    有没有一种方法可以确定当前文件是否是 Perl 源中正在执行的文件 在 Python 中 我们使用以下结构来做到这一点 if name main This file is being executed raise NotImplemente
  • 我怎样才能挂钩 Perl 的 use/require 以便抛出异常?

    如果文件已经加载 是否可以挂载到use require所以我可以抛出异常 在我即将到来的nextgen blacklist http github com EvanCarroll nextgen blob blacklist lib nex
  • 你能挽救我的负面回顾示例来传达数字吗?

    在 高级正则表达式 一章中掌握 Perl http oreilly com catalog 9780596527242 我有一个损坏的示例 我无法找到一个很好的修复方法 这个例子可能为了自己的利益而试图变得太聪明 但也许有人可以帮我解决它
  • 在 Perl 中使用数据引用的正确方法

    我有一组想要处理的数据 为了简化我的代码 最好通过指向原始数据的引用数组来访问我的数据的某些子集 比解释更好的是 我写下了这个例子 它还没有工作 最后 我想更新原始数据 而不必更新所有子集 用 Perl 可以做这样的事情吗 usr bin
  • 如何在附加的 sqlite 数据库中创建外键?

    我正在尝试创建一个 sqlite3 数据库作为模拟生产环境的测试环境 由于生产的设置方式 表处于多个模式中 我已经在 DBIx Class 中设置了类 使用 schema gt storage gt dbh do将数据库与架构附加在一起 并
  • 在 Windows 7 中使用 ActivePerl @ARGV 为空

    我有以下 Perl 脚本 我正在尝试使用 ActivePerl 在 Windows 7 中运行它 c Perl64 bin perl exe w use strict my mp3splt exe c Program Files x86 m
  • Text::平衡和多行 xml

    看来我有点失落了 我需要解析一个大的 大约 100 mb 且相当难看的 xml 文件 如果我使用parsefile 它返回错误 文档元素后的垃圾 但它会很乐意解析文件的较小元素 所以我决定将文件分解为元素并解析它们 由于不鼓励使用正则表达式
  • 如何将 NTLM 身份验证与 Perl 的 SOAP::Lite 模块集成?

    此 Perl 代码适用于对 ASP NET Web 服务的匿名访问 但当打开集成安全性时 该服务会返回 401 错误 我认为我需要将 NTLM 模块与 SOAP Lite 结合使用 但尚不清楚如何做到这一点 如何集成这些组件 use SOA
  • 如何在 Perl 中获取本周的日期?

    我有以下循环来计算本周的日期并将其打印出来 它有效 但我正在考虑 Perl 中日期 时间可能性的数量 并且想听听您对是否有更好的方法的意见 这是我写的代码 usr bin env perl use warnings use strict u
  • 使用 Visual Studio Code 调试 Perl

    我今天刚开始使用 Perl 并安装了活动Perl https en wikipedia org wiki ActivePerl5 24 1 一切都很顺利 我能够创建我的测试程序testPerl pl与简单的print命令并运行它consol
  • 从具有多行记录的文件中提取数据,将每个范围保存到单独的文件中

    我有一个看起来像这样的文件 TRANSACTION STARTED 020t CARD INSERTED 020tCARD 5845 DATE 01 02 16 TIME 05 45 52 05 46 26 GENAC 1 ARQC EXT
  • 为什么 Perl 的 LWP 给我的编码与原始网站不同?

    可以说我有这个代码 use strict use LWP qw get my content get http www msn co il print STDERR content 错误日志显示类似 xd7 x9c xd7 x94 xd7
  • 何时计划 (SELECT) 查询?

    在 PostgreSQL 中 什么时候计划 SELECT 查询 Is it 在报表准备时 或者 在处理 SELECT 开始时 或者 别的东西 我问的原因是 Stackoverflow 上有一个问题 相同的查询 两种不同的方式 性能截然不同
  • perl - 子进程向父进程发送信号

    我编写了以下代码来测试孩子和父母之间的信号传递 理想情况下 当子进程向父进程发出 SIGINT 时 父进程应该在新的迭代中返回并等待用户输入 我在 perl 5 8 中观察到了这一点 但在 perl 5 6 1 我被要求使用 中 父级实际上
  • Perl `join` 生成多行字符串

    我有这个程序来对两个数组进行排序 usr bin perl w movies movies txt open FHD movies die could not open movies n movies
  • 如何检测FTP文件传输完成?

    我正在编写一个脚本 用于轮询 FTP 站点上的文件并在可用时将它们下载到本地 文件由各个来源方随机存放到 FTP 站点 我需要一种方法能够在下载之前检测 FTP 站点上的文件是否已被源方完全传输 关于如何解决这个问题有什么想法吗 如果您可以

随机推荐

  • 对 void“函数”C++ 的未定义引用

    我收到以下错误 features cpp text 0x4f6 undefined reference to void Convolve
  • 如何将 NSMutableDictionary 保存到文档中的文件中?

    我想将 NSMutableDictionary 对象的内容保存到文件中 我该怎么做呢 我已经知道如何使用 NSDictionary 对象完成此任务 但我不知道如何将此 NSMutableDictionary 转换 复制到 NSDiction
  • 生成器函数(yield)比迭代器类(__next__)快得多

    UPDATE 反映最先进的知识水平 状态 2017 05 12 这次更新的原因是 当我问这个问题时 我并没有意识到我已经发现了一些关于 Python3 如何 在幕后 工作的信息 以下所有内容的结论是 如果您为迭代器编写自己的 Python3
  • 大型对象列表上多处理 Pool.map() 的缩放效果不佳:How to meet betterparallelscaling in python?

    让我们定义 from multiprocessing import Pool import numpy as np def func x for i in range 1000 i 2 return 1 请注意func 做某事并且总是返回一
  • 使用 Python 获取 Windows 版本

    当我在控制台 CMD 中输入 winver 时 我将获得我的Windows版本 内部版本号左边的四个数字 例如 1803 1903 1909 2004 20H2 但是我怎样才能在Python中获得我的Windows版本呢 我已经尝试过 im
  • Django:无法导入模块

    我正在尝试在我的views py 中导入一个模块 from django shortcuts import render Create your views here from viewcreator import Builder impo
  • iPhone - UILocalNotification 作为警报

    即使我的 iPhone 应用程序处于后台 我如何使用 UILocalNotification 每天晚上 8 点显示我的闹钟 Set the fireDate到晚上 8 点并设置repeatInterval to NSDayCalendarU
  • 将 N 列的数据框转换为两个“堆叠”列的数据框

    你好堆栈社区 我正在从事网络分析工作 并且有一个数据重塑问题 我的原始数据以一系列列的形式出现 每列都是 源 和 目标 对 最终的数据框需要由 源 和 目标 两列组成 请注意 这些对是交错的 因为它们的源和目标像在有向网络中一样链接 请参阅
  • 使用 vbscript 更改控制台标题

    有没有办法改变cmd标题 我写了一个vbs程序 但dos标题很糟糕 名称为 c windows system32 cscript exe 我尝试一下 标题 the name 和 标题 姓名 但两者都不起作用 感谢帮助 AlexK您指向的链接
  • 如何覆盖循环内的可变字符串?

    我的示例稍作修改The Rust Book 中的猜谜游戏教程 第一次迭代后 循环似乎无法正确读取用户对可变字符串的输入 您能找出以下代码中关于以下内容的问题吗 mut input text extern crate rand use ran
  • 通道发送是否是 goroutine 调度的抢占点?

    从我对Go调度器的理解来看 Go调度算法是部分先发制人 当 goroutine 调用函数或阻塞 I O 时 会发生 goroutine 切换 向通道发送消息时是否会发生 goroutine 切换 goroutine A ch lt mess
  • PHP 正则表达式,忽略交替语句中的第一个分组

    我试图弄清楚如何使用 preg match 捕获一条语句 如果另一条语句不存在 示例文本 div h1 strong Citing Your Sources strong h1 div 因为 pagetitle
  • 如何将应用程序路径传递给Azure批处理中的任务

    我正在使用 Azure 批处理 我有一个需要在计算节点上执行的exe 我在任务窗口的天蓝色门户中使用此路径 cmd c AZ BATCH APP PACKAGE MyAppCreateRG CreateRG exe args HelloRG
  • 什么是 -D 编译器标志 C++(clang、GNU、MSVC)

    好吧 我假设 D前缀表示 define无论它后面跟着什么变量名 但是我找不到任何有关编译器标志的 makefile 功能的文档 CXX clang DTHISISPREPROCESSORVARIABLE So DTHISISPREPROCE
  • 剧作家使用 JavaScript (Node) 将变量传递给 eval

    注意 这是针对 Playwright 浏览器 API 如 puppeteer 我试图找到页面上的所有元素 然后想将这些元素过滤为值 这些值具有特定的选择器 css 类等 我遇到的问题是我无法将外部变量传递到 eval 函数中 以便我的 CS
  • 如何调整 OpenEars 错误识别

    我在我的应用程序中使用了 OpenEars 只需识别字母表中的 a 到 z 即可 但它在识别字母方面的识别能力比识别单词的能力差 那么 我如何使用我的声音模型来提高 OpenEars 的识别度 以及如何使用 OpenEars 来识别一些特殊
  • 根据时间序列中的条件对行进行分组并忽略错误值

    我有一组具有不同采样间隔的动物位置 我想要做的是对采样间隔符合特定条件 例如低于特定值 的序列进行分组和标记 这是一个修订版这个问题被标记为重复项this one 这个修订后的问题的不同之处在于 所有不符合标准的值都应该被忽略 而不是被标记
  • Bing 搜索 API - 如何本地化结果?

    默认情况下如何使用斯洛文尼亚语搜索结果 我们的服务器有德国 IP Bing API 首先自动显示德国结果 我已经尝试了文档中描述的一些参数 但到目前为止它们都不起作用 Thanks 您是否尝试过设置市场选项 根据这个示例页面 你应该尝试这样
  • boost karma 中的生成器指令列行为不一致

    我正在编写一个 karma 生成器来生成 HTML 页面 并且在使用列指令时遇到不一致的行为 这很可能是我对其工作原理的理解 基本上我正在生成一个网格 它要求我在数据每出现两次后插入一些分隔符 以下是我用来进行测试运行的基本程序 inclu
  • Perl - 包含相对路径中的包,其中包含相对路径中的另一个包?

    我有三个文件 multiFindBinTest pl use FindBin use lib FindBin Bin mod2 use pack2 mod1 pack1 pm package pack1 1 mod2 pack2 pm us