如何在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)
您需要一个文件句柄来写入文件:
#!/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)