2012-03-22 8 views
6

私はかなり混乱しています。私はちょうど新しい開発マシンを手に入れました。のprintコマンドでは、perlは何も出力していないようです。印刷:出力なし

#!/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-BYE(空)ファイルになります。

perl -e "print 'a';" 

これは私のマシン上ですることが起こるperlのバイナリの両方のために発生します。

はこれでも何も生成しません。私はこの問題のデバッグをどこで始めるべきかについて悩まされています。何か案は?

EDIT:

perl -v 

This is perl, v5.8.8 built for x86_64-linx-thread-multi 

which perl 

/usr/bin/perl 
+0

詳細情報が役立ちます。 'perl -V'と' perl'を試してください また、スクリプトに 'use warnings;'と 'use strict;'を加えてください。 – Freddo411

+0

あなたがリクエストした情報を追加しました。 – JoshJordan

+0

「perl v5.5.5」は何ですか? [そのバージョン番号で正式リリースされたことはありませんでした](http://search.cpan.org/perldoc?perlhist)、それがあったとしても古代のものです。あなたの 'perl'インストールをアップグレードしてください。 – mob

答えて

0

問題がSTDOUT見つからないか、シェルからリダイレクトされなかったのではなく、シェルは、このように同じ行に送信されたすべての出力を上書きし、プロンプトを書くときに改行せずにキャリッジリターンを送信するように設定されたこと。

具体的には、私の旧バージョンのzshpromptcrに設定されていました。詳細については、question 3.23 hereを参照してください。

+0

(私は実際にそれを言いました。) – ikegami

8

私は問題はPerlの外に存在すると信じています。どちらの

  • スクリプトを実行したいくつかの異常な状態にある端末、
  • perl端末からの出力離れの親プロセスがperlリダイレクト '、または
  • perlの親プロセスが提供されていませんでしたperlの場合はSTDOUTおよびSTDERR。

printがエラーを返したかどうかを実際に確認して、詳細を収集することができます。 (何かは、彼らが道彼らはそれが動作することを期待動作しない場合、人々はエラーをチェックしていない理由はいつも私をバッフル。)

perl -we'print("a") or die("Can'\''t print: $!\n");' 

をあなたがstraceまたは何でもそれは呼ばれていますを使用してより多くの情報を収集することができるかもしれませんあなたのシステムで。

strace perl -we'print("a") or die("Can'\''t print: $!\n");' 

を(。write(1write(2を探してください)しかし、問題は出力をファイルにリダイレクトし、ファイルを調べてみてくださいするのが賢明かもしれない理由である、パールの外にある場合、それらは全く何も印刷しないはずですそのサイズ。

perl -we'print("a") or die("Can'\''t print: $!\n");' 1>out 2>err 
+1

@JoshJordanまた、 'perl'の代わりに' \ perl'を試してみてください。別名があるかもしれませんか? – ikegami

+1

@JoshJordanまた '' a''の代わりに '' a \ n "'を試してください。出力(例えばあなたのプロンプト) – ikegami

+0

straceの問題を見つけるのを助けるためにアップアップされました。ありがとう! – JoshJordan

関連する問題