【发布时间】:2020-10-12 02:37:29
【问题描述】:
从 Perl 中的数据部分 __DATA__ 很容易读取。
以下代码使用预先存在的DATA 句柄:
foreach (<DATA>) {
print("- $_");
}
__DATA__
1
2
The End of The End
产生:
- 1
- 2
- The End of The End
但是我还没有找到将数据写入该部分的任何巧妙方法。 例如,我尝试了以下方法:
use feature say;
say STDERR 'Some Error';
say STDOUT 'Some Message';
say DATA 'Some Data';
__DATA__
foo bar
STDOUT 和 STDERR 的打印按预期工作:
perl write.pl 2> /dev/null
Some Message
但是打印到DATA 什么也没做:
tail -2 write.pl
__DATA__
foo bar
我也看过 CPAN 的几个模块,但我总是只发现对 read 的支持,而不是 write。 感谢您的任何提示和帮助!
【问题讨论】:
-
从脚本中修改 Perl 脚本是一个非常非常糟糕的主意。请改用单独的数据文件。
-
这可能是个坏主意,但它(也许直到现在还无法测试)对于一些花哨的噱头工具来说很方便。我正在寻找一种理智的方式(如果存在任何理智的方式)。疯狂的方法可能是在自己的脚本上打开一个文件句柄......如果这可能的话?
-
您不能“写入”到 DATA 文件句柄。您可以“打开”
$0- 并寻找/写入它。但这不是一个好主意。 -
现在在 CPAN 上展示了这个所谓的坏主意:metacpan.org/release/App-Unding
标签: perl