如何在Perl文件中写入当前时间戳?

Avi*_*Das 9 perl

如何在Perl文件中写入当前时间戳?

我创建了一个名为的文件myperl.pl,它将打印当前的时间戳.该文件如下:

#!/usr/local/bin/perl
@timeData = localtime(time);
print "@timeData\n";
Run Code Online (Sandbox Code Playgroud)

现在我尝试将此文件的输出重定向到另一个文本文件.脚本如下:

#!/usr/local/bin/perl
@myscript = "/usr/bin/myperl.pl";
@myfile = "/usr/bin/output_for_myperl.txt";
perl "myscript" > "myfile\n";
Run Code Online (Sandbox Code Playgroud)

运行这个时,我得到以下错误:

perl sample_perl_script.pl
在sample_perl_script.pl第4行找到运算符所在的字符串,在"perl"myscript""
(你需要预先声明perl吗?)
(sample_perl_script.pl第4行,"perl"myscript"附近的语法错误")
执行sample_perl_script.pl因编译错误而中止.

小智 29

另一个提示.如果你想控制时间戳的格式,我通常会抛出如下的子程序.这将返回格式为"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;
}
Run Code Online (Sandbox Code Playgroud)

然后将您的代码更改为:

my $timestamp = getLoggingTime();
Run Code Online (Sandbox Code Playgroud)


Gil*_*not 8

您需要一个文件句柄来写入文件:

#!/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;
Run Code Online (Sandbox Code Playgroud)

一些文档:open,Leaning Perl

另一个解决方案是没有文件句柄的脚本,只是一个打印,然后在命令行上:

./script.pl > new_date_file
Run Code Online (Sandbox Code Playgroud)