オブジェクト指向の Perl がどのように機能するかをよく知っていますか?
オブジェクト指向の Perl モジュールを使用するには、最初にそのクラス タイプのオブジェクトを作成する必要があります。通常、これはnew
メソッドを介して行われます。
my $smtp = Net::SMTP->new($mailhost);
今、クラス$smtp
のオブジェクトNet::SMTP
です。基本的に、これはデータ構造 (送信先、メッセージなど) を格納できるグロブへの参照です。その後、Perl はメソッド呼び出し (パッケージ Net::SMTP の一部である単なるサブルーチン) 中にこの情報を使用できます。
私が書いたプログラムの例を次に示します。
use Net::SMTP;
my $smtp = Net::SMTP->new(
Host => $watch->Smtp_Host,
Debug => $debug_level,
);
if ( not defined $smtp ) {
croak qq(Unable to connect to mailhost "@{[$watch->Smtp_Host]}");
}
if ($smtp_user) {
$smtp->auth( $watch->Smtp_User, $watch->Smtp_Password )
or croak
qq(Unable to connect to mailhost "@{[$watch->Smtp_Host]}")
. qq( as user "@{[$watch->Smtp_User]}");
}
if ( not $smtp->mail( $watch->Sender ) ) {
carp qq(Cannot send as user "@{[$watch->Sender]}")
. qq( on mailhost "@{[$watch->Smtp_Host]}");
next;
}
if ( not $smtp->to($email) ) {
$smtp->reset;
next; #Can't send email to this address. Skip it
}
#
# Prepare Message
#
# In Net::SMTP, the Subject and the To fields are actually part
# of the message with a separate blank line separating the
# actual message from the header.
#
my $message = $watch->Munge_Message( $watcher, $email );
my $subject =
$watch->Munge_Message( $watcher, $email, $watch->Subject );
$message = "To: $email\n" . "Subject: $subject\n\n" . $message;
$smtp->data;
$smtp->datasend("$message");
$smtp->dataend;
$smtp->quit;