问题标签 [perl-io]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
12 回答
65857 浏览

perl - 在 Perl 中打开和读取文件的最佳方法是什么?

请注意 - 我不是在寻找打开/读取文件的“正确”方式,或者我每次都应该打开/读取文件的方式。我只是想知道大多数人使用什么方式,也许同时学习一些新方法:)*

在我的 Perl 程序中,一个非常常见的代码块是打开一个文件并读取或写入它。我见过很多这样做的方法,多年来我执行这项任务的风格已经改变了几次。我只是想知道最好的(如果有最好的方法)方法是什么?

我曾经打开过这样的文件:

但我认为这有错误捕获的问题。

添加括号似乎可以修复错误捕获:

我知道您也可以将文件句柄分配给变量,因此我可以使用 $input_filehandle 而不是像上面那样使用“INPUT_FILE”——这样更好吗?

对于读取文件,如果文件很小,像这样的通配有什么问题吗?

或者

或者你应该总是循环遍历,像这样:

我知道在 perl 中有很多方法可以完成任务,我只是想知道是否有在文件中打开和读取的首选/标准方法?

0 投票
3 回答
243 浏览

perl - 为什么我的代码生成程序会出现此语法错误?

我想通过在 Perl 中使用文件处理来生成一些 Perl 代码行,例如:

但是当我编译生成器代码(不是生成的)时,我得到了这个错误:

我要做什么?

0 投票
4 回答
136 浏览

perl - 为什么这个程序在我的文本文件中找不到“错误”这个词?

0 投票
4 回答
3383 浏览

perl - 需要在 Perl 中打印最后一次出现的字符串

我在 Perl 中有一个脚本,用于搜索配置文件中的错误,但它会打印出任何出现的错误。我需要匹配配置文件中的内容并仅在上次发生错误时打印出来。有任何想法吗?


哇...我没想到会有这么多回应。我应该更清楚地说明这是用于向 Nagios 发送警报的 Windows 框上的日志监控。这实际上是我的第一个 Perl 程序,所有这些信息都非常有帮助。有谁知道我如何在 wintel 盒子上应用这个任何尾部答案?

0 投票
1 回答
515 浏览

perl - 如何在 Perl 中正确访问环境变量?

Perl 代码

所有四个标志都是设置的环境变量的名称(我echo $flag1从 shell 中检查过)。

这里的 if 条件总是返回 false。如果我写$ENV{flag1},结果为 true 并按func()我的预期调用。

我在 if 语句中做错了什么?

0 投票
3 回答
10648 浏览

perl - 如何将 die 函数的输出重定向到 Perl 中的文件?

我想将die消息重定向到一个单独的文件,以便以后可以比较该文件以确定出了什么问题。

但是这段代码给了我错误:

我不想2>从调用者那里做一个。有没有办法从脚本中重定向它们?

0 投票
1 回答
89 浏览

perl - 如何测试 PerlIO::fse 是否适用于文件测试运算符?

这会打印 2 次OK;我想这是因为 Perl 在$dir内部存储为 utf8。

我有办法检查PerlIO::fse是否对文件测试运算符有影响,只要 perl 和文件系统存储在utf8?


编辑:

也许我还没有完全理解它是如何PerlIO::fse工作的——在这个例子中我看不到任何效果PerlIO::fse

0 投票
2 回答
444 浏览

perl - 如何在不“安装”的情况下链接 PerlIO Perl 包

我正在尝试将 PerlIO::eol 包添加为我的项目的一部分而不安装它,这样所有依赖项都可以与我的脚本一起打包,而无需在每台机器上重新安装它们。我该怎么做PerlIO::eol 我不明白结构和重要文件在哪里

0 投票
4 回答
6566 浏览

linux - 在 Perl 中从管道中读取无缓冲数据

我正在尝试从 Perl 的管道中读取未缓冲的数据。例如在下面的程序中:

iostat 每 10 秒(五次)吐出数据。你会期望这个程序做同样的事情。但是,它似乎会挂起 50 秒(即 10x5),之后它会吐出所有数据。

我怎样才能返回任何可用的数据(以无缓冲的方式),而无需一直等待 EOF?

PS 我在 Windows 下看到了很多对此的引用——我在 Linux 下这样做。

0 投票
3 回答
26648 浏览

perl - 如何在 Perl 中创建一个新文件?

我在变量$a, $b,中存储了一些值$c。现在我必须将这些值加载到新文件中(创建文件并加载)。我是 Perl 的新手,我该怎么做?