10

現在のタイムスタンプを Perl ファイルに書き込むにはどうすればよいですか?

myperl.pl現在のタイムスタンプを出力するという名前のファイルを作成しました。ファイルは次のとおりです。

#!/usr/local/bin/perl
@timeData = localtime(time);
print "@timeData\n";

今、このファイルの出力を別のテキスト ファイルにリダイレクトしようとしています。スクリプトは以下のとおりです。

#!/usr/local/bin/perl
@myscript = "/usr/bin/myperl.pl";
@myfile = "/usr/bin/output_for_myperl.txt";
perl "myscript" > "myfile\n";

これを実行しているときに、次のエラーが発生します。

perl sample_perl_script.pl
オペレータが予期した場所で、sample_perl_script.pl の 4 行目の "perl "myscript"" 付近に文字列が見つかりました
(Perl を事前宣言する必要がありますか?)
sample_perl_script.pl の 4 行目の "perl "myscript"" 付近で構文エラーが発生しました
の実行コンパイル エラーのため、sample_perl_script.pl が中止されました。

4

2 に答える 2

36

別のヒント。タイムスタンプの形式を制御したい場合は、通常、次のようなサブルーチンをスローします。これは、「20120928 08:35:12」の形式でスカラーを返します。

sub getLoggingTime {

    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
    my $nice_timestamp = sprintf ( "%04d%02d%02d %02d:%02d:%02d",
                                   $year+1900,$mon+1,$mday,$hour,$min,$sec);
    return $nice_timestamp;
}

次に、コードを次のように変更します。

my $timestamp = getLoggingTime();
于 2012-09-28T19:57:42.703 に答える
11

ファイルに書き込むには、ファイルハンドルが必要です。

#!/usr/local/bin/perl

use strict;
use warnings;

my $timestamp = localtime(time);

open my $fh, '>', '/tmp/file'
   or die "Can't create /tmp/file: $!\n";

print $fh $timestamp;

close $fh;

いくつかのドキュメント: openLeaning Perl

もう 1 つの解決策は、コマンド ラインでファイル ハンドルを使用せずに出力するだけのスクリプトです。

./script.pl > new_date_file
于 2012-09-28T17:08:54.010 に答える