我正在尝试将 tail命令的输出捕获到临时文件中。
的示例这是我到目前为止所尝试的内容。
#!/usr/bin/perl
use strict;
use warnings;
use File::Temp ();
use File::Temp qw/ :seekable /;
chomp($tail = `tail access.log`);
my $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.dat' );
print $tmp "Some data\n";
print "Filename is $tmp\n";
我不确定如何将$tail
的输出传递给此temporoy文件。
由于
答案 0 :(得分:0)
我会使用不同的方法来拖尾文件。看看File::Tail,我认为它会简化一些事情。
答案 1 :(得分:0)
听起来你需要的只是
print $tmp $tail;
但你还需要声明 $tail
而你可能不应该chomp
它,所以
my $tail = `tail access.log`;
答案 2 :(得分:0)
有很多方法可以做到这一点,但既然你很乐意使用模块,你也可以使用File::Tail;
use v5.12;
use warnings 'all';
use File::Tail;
my $lines_required = 10;
my $out_file = "output.txt";
open(my $out, '>', $out_file) or die "$out_file: $!\n";
my $tail = File::Tail->new("/some/log/file");
for (1 .. $lines_required) {
print $out $tail->read;
}
close $out;
这将占用并监视日志文件,直到它获得10个新行。如果您只想要最后10行的副本,最简单的方法是使用shell中的I / O重定向:tail /some/log/file > my_copy.txt
答案 3 :(得分:0)
经典的Perl方法是使用句柄的正确文件名吗?
struct profile *p = profiles;
double uf[ARRAY_SIZE];
int i;
double u, v, s;
for (i = 1; i <= n; i++, p++) {
if (p->drctn)
v = phi;
else v = TWOPI - phi;
u = p->xfall*TWOPI;
uf[i] = -(a0*cos(u + v) - a1*sin(u + v));
}