Я новичок в программировании на Perl и сокетах, и это то, что я пытаюсь реализовать, поэтому, если скрипт не может подключиться к IP 192.168.0.100 и Port 5000, он запускает электронное письмо на основе подпрограммы подэлемента , Я предполагаю, что ненулевой код выхода означает сбой, но я читаю некоторые документы и там упоминается в Perl, если сокет не установлен, он возвращает значение undef, поэтому я пытаюсь сопоставить ($? == undef), а также ($?! = 0), как указано ниже, но не работает. Я не знаю, как соответствовать статусу выхода, так что она будет срабатывать по электронной почте, любая помощь приветствуется http://www.perlmonks.org/bare/?node_id=398525Perl Socket Program
#!/usr/bin/perl
use IO::Socket::INET;
$| = 1;
my ($socket,$client_socket);
$socket = new IO::Socket::INET (
PeerHost => '192.168.0.100',
PeerPort => '5000',
Proto => 'tcp',
) or die "ERROR in Socket Creation : $!\n";
eval { my $size = $socket->send("Hello"); };
if ((my $size > 0) || [email protected]) {
&send_email;
}
sub subemail
{
my $subject = "ERROR in Socket Creation";
my $body = "\n Check if the logstash server is up \n\n";
my $smtp_server = $ENV{"ET_SMTP_SERVER"};
my ($from, $to) = ("test\@example.com", "testing\@example.com");
unless (defined($smtp_server))
{
$smtp_server = 'mailhost.example.com';
}
my $smtp = Net::SMTP->new($smtp_server);
$smtp->mail($from);
$smtp->to($to);
$smtp->data();
$smtp->datasend('To: ' . $to . "\n");
$smtp->datasend('From: ' . $from . "\n");
$smtp->datasend('Subject: ' . $subject . "\n");
$smtp->datasend("\n");
$smtp->datasend($body);
$smtp->datasend("\n");
$smtp->dataend();
$smtp->quit;
}
Имеет ли ваш фактический код ту короткую цитату из Юникода на 'die', или это артефакт публикации? –
@JimDavis: Спасибо, Джим за ваш ответ. В этом коде также есть эта короткая цитата из Юни-кода. –
Меняет ли он настоящую '' 'помощь? –