我很困惑。我只有一台新的开发机器,而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
最佳答案
我相信问题在Perl之外存在。任何一个
perl
的父进程将perl
的输出重定向到远离终端(或perl
的父进程未提供perl
的STDOUT和STDERR。 您可能可以通过实际检查
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
关于perl - 打印: producing no output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9830610/