プロが教える店舗&オフィスのセキュリティ対策術

以下のようなファイルからデータを読み込みメールを送信させたいのですが、一つ目のデータに対してはメール送信が行われますが、2行目以降に対してメール送信が行われません。
下記のuser.txt例ですと1行目のAさん宛てには送信されますが,2行目のBさんにはメール送信がされません。
どうしてなのでしょうか?
ユーザーに応じたメッセージを送信する必要があり、BCC送信は利用できません。

#user.txtの内容-----------
#Aさん,a@mail.com,0
#Bさん,b@mail.com,0
#------------------------

#読み込んだファイルから一行づつ各項目データを読み込む
#@checkにはuser.txtが入っている。

foreach $item (@check){
@check_array = split(/\,/, $item);

#1件づつメールを送信する
require "./mails_user.pl";
}


#外部 mails_user.plの内容-----------

open (MAIL, "|$mailprog -t") or &Make_Error('mail_trouble');

print MAIL "To: $check_array[1]\n";
print MAIL "From: 送信元アドレス\n";
print MAIL "Subject: タイトル\n\n";
print MAIL "$check_array[0]へのメッセージ";

close(MAIL);
1;

#-----------------------------------

A 回答 (3件)

require では 2度目の読み込むことは 出来ないようですが



読み込んだことを忘れさせれば、再度、読み込みが可能になります

delete $INC{'mails_user.pl'};
require "./mails_user.pl";
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2007/06/07 18:49

疑問形でかかれていましたので僭越ながら補足します。



> 実は「require は最初に実行されるときにしか読み込まない」とか, そういうオチはないかなぁ?

そのとおりです。
"require" demands that a library file be included if
it hasn't already been included.

とありますので、同じファイルを二度以上
取り込むことはありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
その通りでした。

お礼日時:2007/06/07 18:52

そんなところで require するというのが, 個人的に理解できないんだけど....


実は「require は最初に実行されるときにしか読み込まない」とか, そういうオチはないかなぁ?
    • good
    • 0
この回答へのお礼

ありがとうございます。全くその通りででした。
以前似たようなソースを書いたのは動いていたのになぁと思いつつ、
以前のソースと違うのがrequireさせた点でした。

お礼日時:2007/06/07 18:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!