我想在标准输入上以交互方式阅读记录。CTRL+D 标记记录的结束。它会一直持续下去,直到按下 ctrl+c。我的代码产生以下错误:
Use of uninitialized value in open
Use of uninitialized value in <HANDLE>
通过测试 $rec 可以避免错误,我必须这样做才能跳过空记录。但我觉得我在掩盖一个我不太明白的问题。我怀疑标准输入正在关闭,但我不确定。你能解释为什么会发生错误以及如何修复我的循环吗?
my $eof = $INPUT_RECORD_SEPARATOR;
while (1) {
local $INPUT_RECORD_SEPARATOR = chr(0x04);
my $rec = <STDIN>;
# format last record that ended with ^D
local $INPUT_RECORD_SEPARATOR = $eof;
open my $input, "<", \$rec;
my_formatting_func $input;
close $input;
}