A second question:
I call a sub check_nr_of_lines($nr_ofl, $arch_path, $logfile, $fh);
When the max nr of lines in the logfile is reached, I want to write the half nr of lines in an archive file and delete them in the logfile. The other half should still be in the logfile. The following code does not work. It creates only an empty archive file, and changes nothing in the logfile. What must I change?
...
sub do_log {
...
sysopen my $fh, $logfile, O_RDWR|O_CREAT or do {...};
my $tmp_file = "${logfile}_tmp";
if (flock $fh, LOCK_EX) { #exclusive lock
open my $tmp_fh, '>', "$tmp_file" or do {...};
while (<$fh>) {
..
$nr_ofl = $.;
my $line = $_;
..
print $tmp_fh $line, "\n";
}
...
check_nr_of_lines($nr_ofl, $arch_path, $logfile, $fh);
...
close $tmp_fh or die "Can't close tmp_file: $!";
move($tmp_file, $logfile);
}
close $fh or die "Can't close logfile $!"; #unlocks automatic
}
sub check_nr_of_lines {
my ($nr_of_lines, $arch_path, $logfile, $fh) = @_;
if ( $nr_of_lines >= max_nr_of_lines_per_logfile ) {
eval { mkpath($arch_path) };
if ($@) {
...
}
my $c = int($nr_of_lines / 2);
open my $fh3, '>', "$arch_path/arch_test.log" or do {
...
};
seek($fh, 0, 0);
while (<$fh>) {
print;
if ($. <= $c) {
print $fh3 $_;
last;
}
print $fh $_;
}
}
return;
}
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.