ref($variable) 何时返回“IO”?

2023-12-02

这是文档的相关摘录ref功能:

返回的值取决于引用所引用的事物的类型。内置类型包括:

SCALAR
ARRAY
HASH
CODE
REF
GLOB
LVALUE
FORMAT
IO
VSTRING
Regexp

基于此,我想象调用ref在文件句柄上会返回'IO'。令人惊讶的是,它没有:

use strict;
use warnings;

open my $fileHandle, '<', 'aValidFile';
close $fileHandle;

print ref $fileHandle;     # prints 'GLOB', not 'IO'

perlref试图解释原因:

不可能创造出真正的 对 IO 句柄的引用(文件句柄 或 dirhandle)使用反斜杠 操作员。您最多可以获得的是 对 typeglob 的引用,即 实际上是一个完整的符号表 条目 [...]但是,您仍然可以 使用类型 glob 和 globrefs 就像它们是 IO 句柄一样。


什么情况下会ref return 'IO' then?


获取 IO 引用的唯一方法是使用 *FOO{THING} 语法:

$ioref = *glob{IO};

其中 glob 是一个命名的 glob(如 STDIN)或一个引用(如 $fh)。但一旦你有了 这样一个引用,它可以像任何其他标量一样传递或存储在任意数据结构中,因此像编组模块这样的事情需要精通它。

由于 glob 或 globref 可以用作文件句柄并隐式获取包含的 IO 事物,因此不需要太多 IO 引用。主要的例外是:

use Symbol;
# replace *FOO{IO} handle but not $FOO, %FOO, etc.
*FOO = geniosym;

(geniosym 返回一个新的半匿名 IO 引用,任何非 glob 引用到 glob 的分配仅分配给该特定引用的 glob 部分)

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

ref($variable) 何时返回“IO”? 的相关文章

  • 在 qx 运算符中将 perl 数组拆分为单独的参数

    我试图将一组参数传递给qx操作员 考虑 my files qw A txt B txt print qx ls files 这给出了错误 ls cannot access A txt B txt No such file or direct
  • 有没有办法匹配任意 Unicode 字母字符?

    我有一些文档经过 OCR 从 PDF 转换为 HTML 因此 他们最终会出现很多随机的 unicode 标点符号 而转换器会搞砸 即省略号等 他们还正确地有一堆非英语但仍然是字母字符 如 和俄语字符等 有没有办法制作一个匹配任何 unico
  • 如何在附加的 sqlite 数据库中创建外键?

    我正在尝试创建一个 sqlite3 数据库作为模拟生产环境的测试环境 由于生产的设置方式 表处于多个模式中 我已经在 DBIx Class 中设置了类 使用 schema gt storage gt dbh do将数据库与架构附加在一起 并
  • Perl:测试输入阅读器?

    有没有一种方法可以使用标准 Test 等模块自动测试 Perl 程序是否正在读取输入 例如标准输入正确吗 例如 测试一个从 STDIN 读取两个整数并打印它们之和的程序 这不是 100 清楚你的意思 我会回答假设你想编写一个测试脚本来测试你
  • 从 php 执行 bash 脚本并立即输出回网页

    我有一组 bash 和 Perl 脚本 开发在 Linux Box 上部署所需的目录结构 可选 从svn导出代码 从这个源构建一个包 这在终端上运行良好 现在 我的客户请求此流程的 Web 界面 例如 某些页面上的 创建新包 按钮将一一调用
  • Perl regex:如何知道匹配数

    我循环遍历一系列正则表达式并将其与文件中的行进行匹配 如下所示 for my regex regexs ref LINE for rawfile regex do do something here next LINE 有没有办法让我知道我
  • 如何在 Perl 中获取本周的日期?

    我有以下循环来计算本周的日期并将其打印出来 它有效 但我正在考虑 Perl 中日期 时间可能性的数量 并且想听听您对是否有更好的方法的意见 这是我写的代码 usr bin env perl use warnings use strict u
  • 如何在 Perl 脚本中加密或隐藏密码?

    我正在研究 Perl 脚本 它使用Expect http search cpan org dist Expect通过 telnet 登录到远程计算机 不要问 必须使用 telnet 我还根据需要执行 perforce p4 登录操作 并使用
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • perl - 子进程向父进程发送信号

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

    哪一个用作 Perl 脚本的 shebang 行更好或更快 perl perl exe fullpath perl perl exe partialpath perl perl exe 并且 当使用 perl 当它在特定系统上运行时 我如何
  • Perl `join` 生成多行字符串

    我有这个程序来对两个数组进行排序 usr bin perl w movies movies txt open FHD movies die could not open movies n movies
  • 在哪里可以找到将现有 CPAN 模块转换为使用 Dist::Zilla 的简明指南?

    我曾多次阅读过相关文档和一些博客文章地区 齐拉 http search cpan org dist Dist Zilla 我从来没有对自己的理解充满信心 在回答另一个问题时 Ether 提出了转换的可能性地穴 SSLeay http sea
  • 如何匹配与 Perl 中的特定模式不匹配的字符串?

    我知道使用正则表达式很容易匹配除给定字符之外的任何内容 text ab ac ad text s c g Match anything except c text is now c 我不知道如何 排除 字符串而不是字符 我如何 匹配除 ac
  • 如何加速我的 Perl 程序?

    这确实是两个问题 但它们非常相似 为了简单起见 我想我应该把它们放在一起 Firstly 给定一个已建立的 Perl 项目 除了简单的代码优化之外 还有哪些不错的方法可以加速它 Secondly 用Perl从头开始编写程序时 有哪些好的方法
  • Perl 拆分和正则表达式

    我有以下字符串 100 California Grown Olives Water Salt And Ferrous Gluconate An Iron Derivative asasd sadasda 我想把它分开 but only if
  • 在 Perl 中如何打印到变量而不是文件?

    如何使用 Perl 打印到变量 我已经在一个程序上工作了一段时间 它记录了它的迭代的以非常详细的方式取得进展 print loghandle some message 但是 我还想有选择地将一些消息打印到不同的文件中 当然 我可以在代码中添
  • Java 相当于 Perl 的 s/// 运算符?

    我有一些代码正在从 Perl 转换为 Java 它大量使用了正则表达式 包括s 操作员 我已经使用 Perl 很长时间了 但仍然习惯 Java 的做事方式 特别是 字符串似乎更难使用 有谁知道或有一个完全实现的Java函数s 这样它就可以处
  • Perl 正则表达式匹配模式的多个实例并替换

    我有一个看起来像这样的字符串 abc 1 2 3 something here foo 10 6 34 somethingelse here def 1 2 another 我想将此字符串拆分为一个数组 其中包含 abc 1 2 3 som
  • 是否有与 pdl2(或 Devel::REPL)中的 perl 调试器“x”等效的东西?

    我在用pdl2 the PDL http p3rl org PDLshell 也作为我的默认 Perl 交互式 shell 它加载所有不错的插件Devel REPL http search cpan org perldoc Devel 3a

随机推荐

  • UWP 窗口放置

    我正在 Visual Studio 2015 RC 中创建 net UWP 应用程序 我使用以下代码成功设置了窗口大小 ApplicationView GetForCurrentView TryResizeView New Size wid
  • 分割文件 - Java/Linux

    我有一个包含近 2 5 亿个字符的大文件 现在 我想将其分成几个部分 每个部分包含 3000 万个字符 因此前 8 部分将包含 3000 万个字符 最后一部分将包含 1000 万个字符 另一点是 我想在下一部分的开头包含每个文件的最后 10
  • 如何通过 ZF2 FormElementManager 将 Doctrine ObjectManager 传递到表单

    我想在 ZF2 中创建自定义表单元素 这需要 FormElementManager 我目前在表单创建中使用 Doctrine Hydrator 如下所示本教程 在此方法中 在控制器中创建一个 ObjectManager 对象 并在实例化时将
  • 基于 R 中的值进行迭代和分配的函数

    我正在编写一个函数 该函数迭代一个帐户列表 每个帐户都有一个关联的值 并为该帐户分配名称列表中的一个名称 名称列表将具有关联的值 我希望分配的名称是具有最小值的名称 name totalvalue Jeff 54 Christy 43 Ma
  • Adobe flash cs6 输出窗口在 .exe 文件中执行 Filesteam 操作时自动关闭,但在 Flash 调试模式下工作正常

    我在用Adobe Flash CS6用于创建桌面应用程序 在该应用程序中我使用闪存文件系统文件流保存文本文件 我不想使用文件参考因为我不想显示保存对话框 当我在导出的文件中调用 new FileStream 时 swf or exe文件后
  • 使用 URL 中的 ID 从 mySQL 选择数据

    我有一个包含列的表 GroupID GroupName GroupDesc Overs 1 Test Group Description Yes 我有一个名为 list php 的页面 它当前为组表 上图 中数据库中的每一行创建 URL 该
  • 如何中断 Scanner.nextline() 调用

    SO 上有很多关于中断读取 system in 的线程 但我在这里寻找的是一些关于如何最好地编码我想要实现的目标的建议 我有一个getlogin 需要执行以下操作的方法 要求用户输入所需的登录环境详细信息 如果 6 秒后用户没有输入有效值
  • 从 Android 应用程序中的 Sqlite 数据库读取数据。

    我正在尝试从数据库读取数据 我将数据库导入到sqlite手动 现在只想在 android 应用程序中建立连接 并希望读取行并将其显示在文本字段中 但是我使用的代码要么每次都创建新数据库 要么在该数据库中再次创建表 我出现运行时错误 我的代码
  • 像 € 这样的 Html 实体在 CSV 转换中不会转换为其符号

    我使用过 CSV 解析器http code google com p parsecsv for php 将我的报告导出为 PHP 中的 CSV 我已显示销售总额 euro XXXX XX 在浏览器以及Excel 导出后 中 显示为欧元符号
  • 使用 JavaScript 淡出 Mp3 歌曲

    我正在尝试创建一个嵌入了一些 JavaScript 的 HTML 文件 该文件允许我按下按钮并开始淡出歌曲 我已经设法让它工作 以便它播放歌曲 这是一个开始 但我一直在尝试使用第二个功能来尝试降低音量并在该功能上设置延迟 有人可以帮忙吗
  • WPF C# Web浏览器滚动到顶部菜单

    我有一个网格 里面有菜单和滚动查看器 在滚动查看器中 我有一个带有另一个网格的组框和一个网络浏览器元素 现在 当我使窗口小于网络浏览器内容的内容并在滚动查看器中向下滚动时 问题就出现了 所有内容都有边距 因此它位于顶部菜单下方 但网络浏览器
  • 需要在java中以某种方式识别本地机器

    我试图找出应用程序正在运行的本地计算机的名称 或唯一标识特定计算机的其他方式 我一直在用这个 String hostname java net InetAddress getLocalHost getHostName 效果很好 但我碰巧在分
  • 无法使用 AWS Glue 中的 cx_oracle 连接 Oracle 数据库

    我正在尝试使用 cx oracle 从 AWSglue 连接 Oracle 数据库 但收到此错误消息 数据库错误 DPI 1047 无法找到 64 位 Oracle 客户端库 libclntsh so 无法打开共享对象文件 没有这样的文件或
  • 在不同的 Activity 或 Fragment 之间共享数据的正确方法是什么?

    我需要一个应该具有 UI 工作流程的应用程序 其中用户应该能够浏览应用程序的特定部分 可以是 ListView 或 GridView 并且他可以点击某个项目以显示该特定项目的详细信息 现在 如果用户向右滑动 即ViewPager 视图分页器
  • 更改 lubridate 函数以从星期一而不是星期日开始

    dates lt NULL date lt as Date 01 01 2014 d m Y dates lt data frame date as Date character cal day in year num numeric ca
  • 将大文本文件添加到资产文件夹

    我正在开发一个 Android 2 2 应用程序 我想向 Android 项目添加一些大文本文件 4 5MB 或更多 首先我不知道是否可以将此类大文件添加到资产文件夹中 但是 如果可以的话 是否可以压缩它们 如何压缩文件 并解压 还有其他更
  • 如何从 WebAPI 传递 pdf 并从 MVC 控制器读取 pdf?

    我有一个 Web API 服务 应该返回 PDF 然后我尝试调用该 WebAPI 方法来读取 PDF 这是我的 API 方法 HttpPost Route GetTestPDF public HttpResponseMessage Test
  • Git 推送问题

    我有一个从 github 上新克隆的存储库 地址是git github com JoshClose CsvHelper git如果你想尝试一下 我正在使用 tortoisegit 但如果需要的话 我会使用命令行来解决这个问题 我可能需要稍微
  • 如何动态改变webView的高度?

    我目前正在使用webView来显示新闻 在新闻下面我打算放一些按钮 所以我需要获取webView的高度 以便在所有下载后根据webView的高度改变按钮的位置 在其他那么 如何动态改变webView的高度呢 try this void we
  • ref($variable) 何时返回“IO”?

    这是文档的相关摘录ref功能 返回的值取决于引用所引用的事物的类型 内置类型包括 SCALAR ARRAY HASH CODE REF GLOB LVALUE FORMAT IO VSTRING Regexp 基于此 我想象调用ref在文件