我似乎遇到了一个特殊的问题。这是代码
#read a list of strings and print in 20-character column
print "Enter your strings:\n";
chomp(@list = <STDIN>);
foreach $_ (@list){
printf "\n%20s", $_;
}
如果我在Windows上调用文件结尾CTRL + Z之前没有按Enter键,则代码不会打印数组的最后一个元素。
编辑:这是一个示例输出
Enter your strings:
a
v
b
a
v
这里我输入b后按下Ctrl-Z,然后按回车键,它没有打印b。如果我按了Enter键然后按Ctrl-Z,它就会打印b。
答案 0 :(得分:1)
STDOUT在去往终端时进行线路缓冲;在添加换行符之前,数据实际上不会显示。尝试:
print "Enter your strings:\n";
chomp(@list = <STDIN>);
print "\n";
foreach $_ (@list){
printf "%20s\n", $_;
}
或在循环之前添加$| = 1;
。