モジュール小技

小技です。

子モジュールで属性(変数)をセットする部分がありました。

to_email => ['mail'],
from_mail => ['ruffy@kaizoku.co.jp']

ここです。

これは、メールフォームの作成で、問い合わせ相手に自動返信するものなんですが、
ここに問い合わせてきた人のアドレスをセットするわけです。
相手のアドレスなんて特定できませんよね?
相手がメールアドレスを入れてくれた場合、そのアドレスを変数で指定して
自動的に返信する、というプログラムになるわけですが。。。。

ここには、['mail']と書いてやればいいわけです。
from_mailには自分のアドレスをセットしてやったのに、ここはなぜmail
でいいの??

それはですね〜♪

子モジュール(モジュールBとしましょう。)の親のモジュール(モジュールAとしましょう。)
に、

if ($self->{from_email} =~ /@/ ){
$from_email = $self->{from_email};
}
else {
$from_email = $query->param($self->{from_email});
}

と、あるわけです。だから、mailと入れると、相手のメールアドレスを
指定してくれるんですね。

さて、どういうことかというと。。。。

if ($self->{from_email} =~ /@/ ){
「もし、from_emailの値がアドレスだったら」
$from_email = $self->{from_email};
「そのアドレスをそのまま$from_emailに代入してメールを送れ!」
else {
$from_email = $query->param($self->{from_email});
「そうじゃなかったら、クエリーから、mailの値を取ってきて、それを代入して
メール送れよ!」

という意味なんですね♪

もちろん、['mail'] この値は、相手がメールアドレスを入れたフォームの名前を
入れないとだめですよ♪

なかなか便利な小技でした♪