为什么这两个变量 `${ "_<$filename" }` 和 `${ "::_<$filename" }` 不相等?

2023-12-09

这个问题与this one.

你说这两个是一样的:

${ "::_<$filename" }                       # Not allowed under strict.
${ "_<$filename" }     # In main package   # Not allowed under strict.

但接下来怎么可能呢?

if( ${ "_<$filename" } ne ${ "::_<$filename" } ) {
    print "MISMATCH\n";
    print ">>${ '_<$filename' }<<\n>>${ '::_<$filename' }<<\n";
}

output:

MISMATCH
>><<
>><<

这发生在$filename is /home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm

UPD
with "引用为@HåkonHægland建议

    print "MISMATCH\n";
    print ">>${ \"_<$filename\" }<<\n>>${ \"::_<$filename\" }<<\n";
    Devel::Peek::Dump( ${         "_<$filename"  } );
    Devel::Peek::Dump( ${       "::_<$filename"  } );
    Devel::Peek::Dump( ${     $::{"_<$filename"} } );
    Devel::Peek::Dump( ${ ${'::'}{"_<$filename"} } );

输出是:

MISMATCH
>><<
>>/home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm<<
SV = PV(0xfb84520) at 0xff527a0
  REFCNT = 1
  FLAGS = ()
  PV = 0
SV = PV(0x2e43d80) at 0x2f40400
  REFCNT = 1
  FLAGS = (POK,IsCOW,pPOK)
  PV = 0x2edc4a0 "/home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm"\0
  CUR = 111
  LEN = 113
  COW_REFCNT = 0
SV = PV(0x2e43d80) at 0x2f40400
  REFCNT = 1
  FLAGS = (POK,IsCOW,pPOK)
  PV = 0x2edc4a0 "/home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm"\0
  CUR = 111
  LEN = 113
  COW_REFCNT = 0
SV = PV(0x2e43d80) at 0x2f40400
  REFCNT = 1
  FLAGS = (POK,IsCOW,pPOK)
  PV = 0x2edc4a0 "/home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm"\0
  CUR = 111
  LEN = 113
  COW_REFCNT = 0

从输出中我们可以看到主题变量是不同的:

SV = PV(0xfb84520) at 0xff527a0
SV = PV(0x2e43d80) at 0x2f40400

谢谢@HåkonHægland。我错过了:: mean main包裹。

我被以下事情搞乱了:

以下是等效的:

${ "::_<$filename" }                       # Not allowed under strict.
${ "_<$filename" }     # In main package   # Not allowed under strict.

现在我明白这意味着

${ "::_<$filename" }   # This refers to a var in main package
${ "_<$filename" }     # This refers to a var in CURRENT! package
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这两个变量 `${ "_<$filename" }` 和 `${ "::_<$filename" }` 不相等? 的相关文章

  • 如何检测已更改的网页?

    在我的应用程序中 我使用 LWP 定期获取网页 无论如何 是否要检查两次连续提取之间网页是否在某些方面发生了变化 除了明确进行比较之外 是否有在较低协议层生成的任何签名 例如 CRC 可以提取并与旧签名进行比较以查看可能的更改 有两种可能的
  • Perl 删除目录中的所有文件

    我怎样才能删除allPerl 中目录中的文件 不删除目录 我的主机只允许最多 250 000 个 文件 而我的 tmp 文件夹会在所有会话 cookie 运行的情况下快速填充 250 000 个 qouta 在这种情况下我无法删除 tmp
  • linux + ksh + 向下舍入或向上舍入 - 浮点数

    在我的 ksh 脚本中 我只需要计算整数 有时我会得到浮点数 例如 3 49 或 4 8 等 所以我需要根据以下规则将浮点数转换为整数 示例 3 49 will be 3 2 9 will be 3 4 1 will be 4 23 51
  • 为什么我不应该使用 UNIVERSAL::isa?

    根据这个 http perldoc perl org UNIVERSAL html http perldoc perl org UNIVERSAL html 我不应该使用 UNIVERSAL isa 而应该使用 obj gt isa 或 C
  • 使用perl,在每行都有相同单词的情况下如何选择最后两行?

    Bini 21 89753 20 47853 20 27835 18 34952 16 23454 Bini 16 89753 14 47853 13 27835 12 34952 11 23454 Bini 10 09014 我的文件有一
  • Perl Tk 模块有哪些缺点?

    与在 Perl 中创建 GUI 的其他解决方案相比 Tk 模块有哪些缺点 我最近浏览了 Perl 的各种 gui 模块 这是我的总结 免责声明 最终我发现现有模块都不能满足我的需求 所以我开始编写自己的 gui 工具包 Tk 工作起来很不错
  • Bugzilla 中分离客户端的基本权限

    我正在尝试配置一个 Bugzilla 实例 这将允许我的客户登录并为其正在开发 维护的网站提交错误 例如 我创建了 2 个名为 TestProject TestProject2 的产品和一个名为 TestClient 的用户 我想要实现的是
  • Perl 的 caller() 函数返回错误的行号

    我在 Perl 5 10 1 上运行了以下脚本 usr bin perl use strict use warnings foreach my x 0 x lt 1 x Line 5 print line Line 6 sub print
  • 如何让 mod_perl 在更改时重新加载源文件?

    我正在开发一个带有 mod 的应用程序 perl 并在每次更改代码时重新启动服务器是一个巨大的阻力 我还是想用mod perl 用于开发 因为我计划将其用于实时服务器 我在文档中没有看到有关如何执行此操作的任何内容 想法 我认为 Apach
  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • 当值相同时,为什么我的值比较返回 false?

    我有一个 perl 脚本 可以将 Excel XLS 文件中的数据加载到数据库中 首先 它检查文件中的值的日期时间是否已存在于数据库中 如果是 它会检查文件中的值是否与数据库中的值相同 如果它们相同 则跳过该值 如果不同 则更新数据库中的值
  • 在 ExtUtils::MakeMaker 下调用 gcc -pthread

    指定编译和链接的正确方法是什么 pthread not lpthread 在 Makefile PL 中 据我了解 应该调用 gcc pthread针对 pthread 进行构建时 因为此标志会扩展为正确的特定于平台的标志以进行编译和链接
  • 仅当我在 Windows 上时,如何有条件地使用 Perl 模块?

    以下 Perl 代码 if O eq MSWin32 use Win32 do windows specific stuff 在Windows下工作 但无法在所有其他平台下运行 无法在 INC中找到Win32 pm 如何指示 Perl 仅在
  • 如何打印v字串?

    如何打印v字串 our VERSION v2 1 print VERSION n n 打印笑脸 打印 v 字符串是什么意思 你想要什么输出 你可以这样做 printf vd VERSION prints 2 1 or this print
  • 如何找到进程启动时使用的原始用户名?

    有一个 perl 脚本需要以 root 身份运行 但我们必须确保运行该脚本的用户最初没有以用户 foo 身份登录 因为它将在脚本运行期间被删除 那么 我如何查明自登录以来可能已多次起诉的用户是否在该链中的任何时间都没有模拟过 foo 我发现
  • Perl OLE32 MSSQL dateadd 函数结果出现“光标类型已更改”错误

    以下 sql select DATEADD day DATEDIFF day 2 GETDATE 20 00 00 as A 在 Microsoft sql 查询中运行得非常好 然而在 perl 中 它抱怨以下错误 描述 Microsoft
  • 数据结构格式(YAML 或其他)的往返解析保留注释,用于编写配置

    我一直在多个应用程序中使用 YAML 作为配置文件格式 一切都很顺利 除了一件事 当我的程序需要在 YAML 配置文件中写入 修改配置变量时 它会通过加载和转储整个文件来破坏格式和注释 结构 嗯 实际上 YAML 还有另一个问题 大多数用户
  • 为什么安装某些 CPAN 模块需要 root 权限?

    我需要在没有 root 权限的 Linux 机器上安装一些 CPAN 模块 安装Spreadsheet WriteExcel http search cpan org perldoc Spreadsheet WriteExcel进行得很顺利
  • File::Find 是否有更干净的方法来返回所需文件的列表?

    我找到了背后的设计选择File Find find https metacpan org module File 3a 3aFind有点令人惊讶 我遇到过的例子都表明find用在 void 上下文中 The 文档 https metacpa
  • 为什么没有调用回调?

    我有来自的示例脚本B OP检查 https metacpan org pod B OPCheck SYNOPSIS模块经过修改PL op name to padsv https github com Perl perl5 blob blea

随机推荐

  • 在 spring 中将值从控制器传递到 html

    您好 我有一个简单的网页 其中有一个按钮和按钮附近的文本 单击按钮时我需要更改文本并从代码中获取新文本 这是我需要传递响应的控制器类 GetMapping stream public String openStream Model mode
  • Dnsmasq 无故停止工作

    我开始在 OSX Yosemite 上使用 Dnsmasq 将所有 dev 域解析为 192 168 10 10 IP 地址 这是 Laravel Homestead 的默认地址 它对我有用 但在睡眠并唤醒我的 Macbook 后 它停止工
  • EditText 的实时字符计数

    我想知道在 Android 中对编辑文本框进行实时字符计数的最佳方法是什么 我在看this但我似乎无法理解它 为了描述这个问题 我有一个 EditText 我试图将字符限制为 150 个 我可以使用输入过滤器来做到这一点 但是我想在文本框正
  • 如何使用 nuget.core 获取包大小?

    我想知道是否有办法在下载之前知道包的大小 我正在使用 nuget 包来部署组件 并且了解更新的大小将是一个很好的功能 包大小在从服务器返回的响应中返回NuGet图库包源码
  • Pandas 数据框按索引选择行,按名称选择列

    有没有办法在 pandas 数据框中按索引 即整数 选择行并按列名称选择列 我尝试使用 loc 但它返回一个错误 并且我了解 iloc 仅适用于索引 这是数据框 df 的第一行 我愿意选择第一行 名为 Volume 的列并尝试使用 df l
  • 通过历史记录向后移动,跳过具有不同查询字符串的同一页面

    当我刷新页面或使用相同的 URL 重定向到同一页面时 我可以单击带有 window history back 的按钮代码并返回上一页 但是 如果查询字符串已更改 当我尝试返回时 我只会返回同一页面 示例1 page1 html gt pag
  • 如何在 emacs 中关闭 vhdl 模式?

    我现在正在学习 emacs 并尝试编写一个简单的 vhdl 程序进行测试 我可以看到 vhdl 模式可能是一个有趣的功能 但我想知道如何暂时关闭它以及稍后如何重新激活它 使用命令M x 基本模式 那是 按下 并按住 meta键 通常是Alt
  • 访问由文件夹引用添加的 Swift 变量

    事实上 我在这个简单的问题上花了大约 3 个小时 并用 google 搜索了很多 但没有办法 我的问题很简单 我想将一个目录作为 文件夹引用 添加到我的 Swift xCode 项目中 但无法访问它们 我不需要添加然后使用组引用 有什么建议
  • 如何仅由单个用户发布 Facebook 用户墙/页面状态 不为其他用户安装应用程序

    我正在一个网站上工作 如果在该网站上发布了某些内容 我需要将页面链接从该网站发布到特殊的用户墙或页面 这意味着我只需要一个用户来发布该问题 我面临的问题是访问令牌 因为我不想在网站流量前面显示 Facebook 登录页面 它不像在用户墙上共
  • 如何让Maven下载特定依赖项的源代码和javadoc?

    我需要特定的依赖项文档 一些文档和源代码 告诉 Maven 这样做的最佳方法是什么 首先 IntelliJ 应该自动为您下载源代码 尽管有时您可能需要单击 下载源代码 这实际上使用 Maven 来获取源代码和 javadoc 如果您想使用
  • 角度路线开始和路线结束事件

    我如何访问路由开始和路由结束事件 我想在路由和加载数据时显示进度栏 有人能告诉我这是如何工作的吗 如果您更喜欢使用可观察的 import Router NavigationStart from angular router construc
  • 如何从电子表格编写 Google 表单脚本以根据答案转到特定页面?

    我已经成功创建了一个 Google 表单 该表单使用从此处改编的代码从电子表格填充 https www youtube com watch v BYA4URuWw0s 现在我想让表单根据上一个问题的答案转到一个特定的问题 而不失去从电子表格
  • 引起原因:java.net.NoRouteToHostException:没有到主机的路由

    我正在尝试在 openshift 上从 eclipse 部署我的 Jersey 项目 并且在尾部文件中收到此错误Caused by java net NoRouteToHostException No route to host 以前当我有
  • 如何在php中获取会议邀请电子邮件的回复

    我正在向用户的电子邮件发送日历会议邀请 当接收者接受邀请时 它会出现在接收者日历中 但我无法得到回复 有什么方法可以获得回复并在我的网站中使用它 在这种情况下 Google 服务帐户是完美的解决方案 在这种情况下 用户不需要任何 API 详
  • 如何将 Action Listener 设置为 3 个按钮

    我正在尝试制作一个带有三个按钮的秒表 开始 暂停 和 停止 我的老师只教我们如何将动作监听器设置为两个按钮 如何为三个按钮设置动作监听器 这是到目前为止我的编码 JButton startButton new JButton Start J
  • 获取当前进程中 JavaVM* 的所有实例?

    这仅特定于 Windows JNI 是否提供返回所有实例的 APIJavaVM 调用过程 考虑以下场景 将 C dll 注入到java exe过程 现在的问题是 C dll如何定位当前的实例JavaVM 在它运行的进程内 据我所知 所有 J
  • Django DRF ListField 反序列化 GET 查询参数中的 id 列表

    尝试使用 DRF 的 ListField 选项来反序列化查询参数中的值列表 下例中的应用程序 我很难让它发挥作用 在网上找不到示例 希望有人提供一些帮助 api getAppStats applications one two three
  • 如何从 Genymotion android 模拟器访问本地主机?

    我不知道如何从 Genymotion android 模拟器访问本地主机 顺便说一句 我正在使用 MAMP Update genymotion更新到2 2后你可以使用10 0 3 2 ref 另一种方法 要通过 Genymotion 访问本
  • SignalR、JQuery 和 Node

    在我目前正在进行的一个项目中 我们使用 Electron 作为主机 在 Electron 主进程 这是一个普通的 Node 进程 中 我们需要连接到具有 SignalR 端点的下游后端 然而 由于 SignalR 是一个 JQuery 模块
  • 为什么这两个变量 `${ "_<$filename" }` 和 `${ "::_<$filename" }` 不相等?

    这个问题与this one 你说这两个是一样的 lt filename Not allowed under strict lt filename In main package Not allowed under strict 但接下来怎么