gpt4 book ai didi

perl - 为什么我的 Perl 程序没有向我的文件输出任何内容?

转载 作者:行者123 更新时间:2023-12-01 05:31:16 25 4
gpt4 key购买 nike

我正在尝试写入文件 ~/.log 但文件仍为空。
我不知道为什么会这样,一切似乎都很好。

我的系统是 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 = ('mejl1@provider1.com',
'mejl2@provider2.com',
);
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('my_mail@my_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();

最佳答案

您需要调试脚本的每个步骤。你有:

print {$log} "get: Error: $!\n"
until ( ${$content_ref}
= LWP::Simple::get("www.somesite.com/index.html") );

尽管您可能更改了问题的 URL,如所写 get可能正在返回 undef。我不知道你为什么使用 until那里。您想一直运行它直到网站上线吗?检查一切的返回值,看看发生了什么。

我会将脚本的大部分内容简化为:
 while( 1 ) {
my $data = LWP::Simple::get("http://www.somesite.com/index.html");
print "got [$data]\n";

if( substr( ... ) > -1 ) { sleep 1800; next }

.... do error stuff here ...
}

但是,与其睡 30 分钟,不如每 30 分钟从 cron 运行一次脚本。这样你就摆脱了循环:
 my $data = LWP::Simple::get("http://www.somesite.com/index.html");
print "got [$data]\n";

exit if( substr( ... ) > -1 );

.... do error stuff here ...

关于perl - 为什么我的 Perl 程序没有向我的文件输出任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2258141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com