打印:生产没有输出
我很困惑。我刚拿到一台新的开发机器,perl似乎没有输出任何内容,用于print命令。打印:生产没有输出
#!/usr/bin/perl
use warnings;
use strict;
print "A";
print STDOUT "B";
print STDERR "C";
open FH, ">", "testprint';
print FH "D";
close FH;
可生产在控制台什么,testprint变成1再见(空)文件。
即使这会产生什么:
perl -e "print 'a';"
这情况出现在这恰好是我的机器上的Perl二进制文件。我很难从哪里开始调试这个问题。有任何想法吗?
编辑:
perl -v
This is perl, v5.8.8 built for x86_64-linx-thread-multi
和
which perl
/usr/bin/perl
问题不STDOUT
丢失或起壳重定向,而是外壳设置写时提示,从而覆盖发送到同一行的所有输出发送一个回车不换行。
具体来说,我的老版本zsh
已经设置了promptcr
。有关更多信息,请参阅question 3.23 here。
(我已经提到过了。) – ikegami 2012-03-23 16:40:47
我相信存在的Perl以外的问题。无论是
- 在当你运行该脚本一些异常状态的终端,
-
perl
的父进程重定向perl
的输出远离终端,或 -
perl
的父进程没有提供STDOUT和STDERR为perl
。
您可能可以通过实际检查print
是否返回错误来收集更多信息。 (它总是令我感到困惑,为什么人们不检查错误,当事情不工作,他们的方式,他们希望它的工作。)
perl -we'print("a") or die("Can'\''t print: $!\n");'
您可能能够通过使用strace
或任何收集更多的信息,这就是所谓的在你的系统上。 (寻找write(1
和write(2
)
strace perl -we'print("a") or die("Can'\''t print: $!\n");'
但这些应该打印什么都没有,如果问题是Perl的外面,这就是为什么它可能是明智的尝试将输出重定向到一个文件,然后检查文件和它的大小。
perl -we'print("a") or die("Can'\''t print: $!\n");' 1>out 2>err
@JoshJordan ,也可以用'\ perl'而不是'perl'。也许你有一个别名? – ikegami 2012-03-22 21:59:37
@JoshJordan,另外,你可以使用''a \ n“'而不是''a”'。输出(例如你的提示) – ikegami 2012-03-22 22:02:26
Upvoted帮助我找到strace的问题。谢谢! – JoshJordan 2012-03-23 15:08:01
更多资讯帮助。试试:'perl -V'和'which perl' 另外,在脚本中添加'使用警告;'和'use strict;' – Freddo411 2012-03-22 21:16:38
添加您请求的信息。 – JoshJordan 2012-03-22 21:23:00
“perl v5.5.5”是什么? [这个版本号从来没有任何官方发布](http://search.cpan.org/perldoc?perlhist),即使有,它也是古老的。升级你的'perl'安装。 – mob 2012-03-22 21:29:22