Я пытаюсь записать в файл ~/.log, но файл остается пустым. Я не знаю, почему это происходит, все кажется прекрасным.Почему моя программа Perl ничего не выводит в мой файл?
Моя система Ubuntu 9.10amd64, Perl 5.10.
#!/usr/bin/perl
# vim:set filetype=perl:
use strict;
use warnings;
use LWP::Simple qw||;
use Net::SMTP;
# Only because log file
$| = 1;
my $match_string = "... some text to match ..." ;
my $content;
my @mails = ('[email protected]',
'[email protected]',
);
my $data = <<END;
... Subject text ...
END
open(my $log, ">>","$ENV{HOME}/.log")
or die "Couldn't open log file";
sub get($) {
my $content_ref = shift;
print {$log} "get: Error: $!\n"
until (${$content_ref}
= LWP::Simple::get("www.somesite.com/index.html"));
}
my $check_num = 0;
get(\$content);
while (index($content, $match_string) != -1) {
print {$log} "Check number $check_num\n"
or die "Couldn't write in log file";
# This is printed
# print "Check number $check_num: $ENV{HOME}/.log\n";
$check_num++;
get(\$content);
sleep 60*30;
}
my $server = "smtp.my_provider.org";
my $smtp = Net::SMTP->new($server)
or print {$log} "smtp: Couldn't connect on $server\n";
$smtp->mail('[email protected]_provider.org')
or print {$log} "smtp: Error in mail\n";
$smtp->bcc(@mails)
or print {$log} "smtp: Error in bcc\n";
$smtp->data();
$smtp->datasend($data)
or print {$log} "smtp: Error when sending data\n";
$smtp->dataend;
$smtp->quit();
Я думаю, вы имеете в виду, что он ждет 30 минут. 60 * 30. – Geo
Спасибо :), то есть решение – XoR