配列変数の使い方とメール送信方法について

このQ&Aのポイント
  • 初歩的な質問で申し訳ありませんが、3つの配列変数について説明します。$aは会員コード、$bは文字列、$cは会員のメールアドレスです。
  • $a、$b、$cのそれぞれの要素がどのような情報を持っているか詳しく説明します。
  • 会員コード毎に文字列を結合して対象のメールアドレスにメールを送信する方法についてアドバイスします。
回答を見る
  • ベストアンサー

配列変数

初歩的な質問で申し訳ありませんが、 下記のような3つの配列変数があります。  $a $b $c [0]01 あ メールアドレス1 [1]01 い メールアドレス1 [2]01 う メールアドレス1 [3]02 ア メールアドレス2 [4]03 阿 メールアドレス3 [5]03 伊 メールアドレス3 [6]03 宇 メールアドレス3 [7]03 江 メールアドレス3 $aは会員コード、$bは文字列、$cは会員のメールアドレス という内容で、それぞれ[0]~[7]まで8つの要素を持って いて、事前に会員コードでソートされた状態で格納され ています。 このような条件で$bの文字列を会員コード毎に結合して対 象メールアドレスにメール送信したいのですが、どのよう な方法がありますでしょうか? よろしくお願い致します。

  • Perl
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

すみません、1つ書き忘れてました。 No.1 で書いたコードは、インデントを見やすくするために全角スペースを使っています。 ですが、Perlのスクリプトとしてこれは許されず、半角スペースなりタブなりに置き換える必要があります。 全角スペース2個→タブ1個などに置き換えてみてください。

puchi-mat
質問者

お礼

ありがとうございました! 完璧な結果が得られました。 重ねて御礼申し上げます。

その他の回答 (1)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

ちょっと確認。 ・要素を3つ持つ構造のデータが8レコードある。 ・要素ごとに別の配列で管理している ・同じレコードのデータは同じIndexに格納されている ということでいいでしょうか? (配列は $a、$b、$c ではなく、@a、@b、@c ですよね?) また、1つの会員コードに対するメールアドレスは1つと決まっているのでしょうか? 以下、そのような仮定で。 my %code2data; for (my $i = 0; $i <= $#a; $i++) {   $code2data{$a[$i]} ||= { mailaddr=>$c[$i] };   $code2data{$a[$i]}->{str} .= $b[$i];  # 文字列の連結部分 } foreach my $code (keys %code2data) {   # メールを送る   # メールアドレスは $code2data{$code}->{mailaddr}   # 連結文字列は $code2data{$code}->{str}   # です。 } これで、以下のようなメールを送ることができます。 ・会員コード 01(メールアドレス1)の人へ 'あいう' という内容 ・会員コード 02(メールアドレス2)の人へ 'ア' という内容 ・会員コード 03(メールアドレス3)の人へ '阿伊宇江' という内容

puchi-mat
質問者

補足

早速のご返答ありがとうございます。 ちょっと試してみたのですが、 Unrecognized character \xA1 at ($code2data{$a[$i]} ||= { mailaddr=>$c[$i] }; の行). のようなエラーが出てしまいました。 どのような原因が考えられますでしょうか? よろしければ重ねてお知恵をお借りできませんで しょうか。 よろしくお願い致します。

関連するQ&A

  • エクセルで、例えば

    エクセルで、例えば A1セルには亜、伊、宇、江、尾 などの複数の漢字が入っています。 もしこのセルの中に宇 の字が入っていたら B1セルに○ 入っていなければ× が表示されるようにしたいのですが どんな方法を使用したらよろしいのでしょうか?

  • 連想配列の可変変数

    <?php $test[a][b][c] = "成功"; $string = 'test[a][b][c]'; echo ${$string}; ?> このコードで"成功"を出したいのですが上手くいきません 恐らく可変変数ではブラケットを文字列として扱ってしまっているのが原因だと思います どうにかうまくこれを可変変数のように上手く実現させる方法はないでしょうか?

    • ベストアンサー
    • PHP
  • エクセル 関数について

    エクセル 関数について 先日こちらでわかりやすい回答を頂いて活用していました。↓ 質問 A1セルには亜、伊、宇、江、尾 などの複数の漢字が入っています。 もしこのセルの中に宇 の字が入っていたら B1セルに○ 入っていなければ× が表示されるようにしたいのですが どんな方法を使用したらよろしいのでしょうか? 回答 =IF(ISERROR(SEARCH("宇",A1)),"×","○") 今回の質問として下記の追加の関数の作り方をどなたか教えて下さい。 A1セルに亜または伊が入っていたら B1セルに○、入っていなければ× 宜しくお願い致します。

  • 配列のソートについて

    配列をソートした時、もともとデータのあった配列番号を記憶しておきたいのですが いい方法はないでしょうか (31,55,84,20,96,14); //1 2 3 4 5 6 ↓ (14,20,31,55,84,96) //6 4 1 2 3 5    ※ソート前の配列番号 いくつかの行(配列A)の、違う列にあるデータを抜き出して配列Bにまとめた後、配列Bをソート その後、配列Bのもともとの順番の位置の行にあるデータを上からコピーしていく感じで行ごとのソートを考えています イメージはこんな感じです a[0]=[1,512,200]; a[1]=[3,100,1]; a[2]=[4,100,265]; a[3]=[8,300,1]; //ソート対象を抜き出す b[0]=a[0][1]; b[1]=a[1][2]; b[2]=a[2][0]; b[3]=a[3][1]; b.sort(); c[0]=a[b[0]のソート前の配列番号]; c[1]=a[b[1]のソート前の配列番号]; c[2]=a[b[2]のソート前の配列番号]; c[3]=a[b[3]のソート前の配列番号];

  • エクセル マクロ VBA での部分参照ソート

    エクセル2003で 下記のようなデータをソートし、 【ソート前】 2208550 92059184 92059174 92059174B 92059174A 92059174C 1348535 19777225 2519034 2519034D 2519034B 2519035A 2519035C 【ソート後】 1348535 19777225 2208550 2519034 2519035A 2519034B 2519035C 2519034D 92059184 92059174 92059174A 92059174B 92059174C 上記ソート後の結果を得られるマクロを作りたいです。 文字列の右にABCが付与されるコードです。 よろしくお願いいたします。

  • 2次元ハッシュ または 2次元配列をソートしたい

    2次元ハッシュのソートをしたいです。 ハッシュは2つのキーを使用していて、 1つ目のキーは文字列、2つ目のキーは数字(0からの連番)です。 ハッシュの中身は文字列が入っています。 これを次のような表に見立てて、特定の列でソートしたいのです。 hash['a']['0'], hash['a']['1'], ..., hash['a']['50'], hash['q']['0'], hash['q']['1'], ..., hash['q']['50'], hash['c']['0'], hash['c']['1'], ..., hash['c']['50'], ... hash['d']['0'], hash['d']['1'], ..., hash['d']['50'], 例えば 6列目の値によってソートするということです。 以下のようにソートしようとしましたが、うまくいきません。 my @sorthash = sort { $a->[6] <=> $b->[6] } @hash; 何かヒントがあれば教えてください。

    • ベストアンサー
    • Perl
  • 多次元配列のソート

    過去に同様の質問があったのですが、未回答でしたので質問させていただきます。 多次元配列のうちの一つの列の値でソートし、その他の列にも結果を連動させたいのですが方法が分かりません。 たとえば、a[n][m]という配列で a[0][0]=C a[0][1]=う         a[0][0]=A a[0][1]=あ a[1][0]=A a[1][1]=あ   →    a[1][0]=B a[1][1]=い a[2][0]=B a[2][1]=い         a[2][0]=C a[2][1]=う というように、n列でソートしm列でもその結果で並べ替えたいです。 恐らくComparatorインタフェースを使用すると可能かと思うのですが、方法を教えて頂けないでしょうか。

    • ベストアンサー
    • Java
  • エクセルでデータを照合したい。

    Aに会員登録している人のメールアドレスが約1万件 Bに会員登録している人のメールアドレスが約2万件 あります。 A列     B列 a@aaaa 1@1111 b@bbbb 2@2222 c@cccc 3@3333 というイメージです。 ここから、 (1)AとB両方に会員登録しているメールアドレス (2)Aには登録しているものの、Bには登録していないメールアドレス (3)Aには登録していないものの、Bには登録しているメールアドレス この3つを照合したいのですが、どうすればいいでしょうか? 教えてください!!

  • 2つの表を合わせた表3作成したい

    表1 A B  C  D  E  F G  H  I  名称 1 01 00 00 00 00 000 00 00 00  あ 2 01 01 00 00 00 000 00 00 00  い 3 01 01 01 00 00 000 00 00 00  う 4 01 01 01 01 00 000 00 00 00  え 5 01 01 01 01 01 000 00 00 00  お 6 01 01 01 01 01 001 00 00 00  か 7 01 01 01 01 01 001 01 00 00  き 8 01 01 01 01 01 001 01 01 00  く 9 01 01 01 01 01 001 01 01 01  け 10 01 01 01 01 01 001 01 01 02  こ 20 01 01 01 01 01 001 01 02 00  阿 21 01 01 01 01 01 001 01 02 01  居 22 01 01 01 01 01 001 01 02 02  卯 100 02 00 00 00 00 000 00 00 00  亜 101 02 01 00 00 00 000 00 00 00  医 102 02 01 01 00 00 000 00 00 00  宇 AからIの欄には入る数字によって名称が変わります。 表2 A  B  C  D  E  F G  H  I   1 01 01 01 01 01 001 01 01 01  2 01 01 01 01 01 001 01 01 02  3 01 01 01 01 01 001 01 01 03  4 01 01 01 01 01 001 01 02 01  5 01 01 01 01 01 001 01 02 02  6 02 01 01 01 01 001 01 01 01  この2つの表を合わせた表3を作成したいのです。 表3 A  B  C  D  E  F  G  H  I 1 01あ 01い 01う 01え 01お 001か 01き 01く 01け 2 01あ 01い 01う 01え 01お 001か 01き 01く 02こ  3 01あ 01い 01う 01え 01お 001か 01き 01阿 01居  4 01あ 01い 01う 01え 01お 001か 01き 01阿 02卯

  • 文字列を配列に…。

    VBはまだ始めたばかりで本当に初歩的なことかもしれませんが分かる方がおられたら是非教えて下さい。 text1.textから取り込んだ文字列を”一文字ずつ”(Dim a(100) as stringで宣言した)配列に格納したいのですがどうしたらいいのでしょうか?? <例>text1.textに"abc"と入力しcommandbuttonを押すとa(0)に"a"がa(1)に"b"がa(2)に"c"が格納されるといったかんじです。 ちなみに今私がしたいのはtext1.textに、ある文字列を入れその文字列を文字コードに変換しそれを一文字分ずつ+1してまたそのコードを文字に直しtext2.textに出力するというものです(ようは簡単な暗号化ですね)。 私はAscとChrコマンドを利用して1文字ずつコードをずらしていこうと思っているのですが、他に良い方法などあるのでしょうか?? 本当に初心者でどのようにしらたよいのか分かりません…。 どなたか分かりやすく教えていただけませんでしょうか?? お願いします。

専門家に質問してみよう