Perlプログラムを実行しています。コンソールに印刷されているものが何であれ、それをテキストファイルにリダイレクトしたいと思います。
質問する
55995 次
4 に答える
18
このための推奨される方法は、コマンドラインを介してリダイレクトを処理することです。
perl -w my_program.pl > my_output.txt
stderr出力も含めたい場合は、これを行うことができます(シェルがbashであると想定)。
perl -w my_program.pl &> my_output.txt
于 2012-05-21T08:54:57.017 に答える
11
>
CLIでは、次のように使用できます。
perl <args> script_name.pl > path_to_your_file
perlスクリプト内でこれを実行する場合は、何かを出力する前に次のコードを追加してください。
open(FH, '>', 'path_to_your_file') or die "cannot open file";
select FH;
# ...
# ... everything you print should be redirected to your file
# ...
close FH; # in the end
于 2012-05-21T08:58:42.920 に答える
6
Unixでは、端末に送られるすべてのものをキャプチャするために、標準出力と標準エラーの両方をリダイレクトする必要があります。
bashを使用すると、コマンドは次のようになります
$ ./my-perl-program arg1 arg2 argn > output.txt 2>&1
Cシェル、などのcsh
派生物tcsh
、および新しいバージョンのbashは理解します
$ ./my-perl-program arg1 arg2 argn >& output.txt
同じことを意味します。
Windowsのコマンドシェルの構文は、Bourneシェルの構文に似ています。
C:\> my-perl-program.pl args 1> output.txt 2>&1
Perlコードでこのリダイレクトを設定するには、次を追加します。
open STDOUT, ">", "output.txt" or die "$0: open: $!";
open STDERR, ">&STDOUT" or die "$0: dup: $!";
プログラムの実行可能ステートメントの先頭まで。
于 2012-05-21T15:40:47.127 に答える
3
出力をログだけでなくコンソールにも出力する場合は、この行をコードに追加します(たとえば、printステートメントの前に)
open (STDOUT, "| tee -ai logs.txt");
print "It Works!";
スクリプトに最後に印刷した後
close (STDOUT);
エラーメッセージの場合のみ、
open (STDERR, "| tee -ai errorlogs.txt");
于 2015-10-13T05:04:45.910 に答える