2015-04-14 2 views
0

Я новичок в программировании на 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; 
    } 
+0

Имеет ли ваш фактический код ту короткую цитату из Юникода на 'die', или это артефакт публикации? –

+0

@JimDavis: Спасибо, Джим за ваш ответ. В этом коде также есть эта короткая цитата из Юни-кода. –

+0

Меняет ли он настоящую '' 'помощь? –

ответ

0

Возвращение он имеет в виду, вероятно, от самого new. Таким образом, вы бы проверили:

subemail() if not defined $socket; 
+0

Теперь я пытаюсь eval, но даже это не работает –