![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
初めて投稿させていただきます、perl初心者です。
イベントの登録とデータ集計がしたくて、色々なメールフォームCGIを
比較検討しております。
今評価中のプログラムはデータをCSVにかき出してくれるのですが、メールアドレスの重複チェックが付いていません、そこでこのプログラムにメールチェック機能を追加したいと考え、色々見て廻ったのですが、良く分かりませんでした、
頭の中では書き出されたCSVファイルを読み込んでメールの列だけ抜き出し、それをチェックすれば良いのかなと考えています。
perlの本やohzakiさんのPerlメモ等も見ましたが良く分かりません。
何方か分かりやすく教えて頂けると助かります。
No.4ベストアンサー
- 回答日時:
こんにちは、解決した?
評価中のプログラムはPerlなのかな?Perlでないのなら仕方ないけど。Perlなら、出力したCSVを再度読み込むよりも、評価プログラム自体のデータ変数を解析するのも手だと思うよ。下記は、ファイル'sample.csv'に、一行あたり"<名前>,<メアド>,<質問文>"の順にデータが格納されてる事を前提に話します。rush_2009さんの考えをなるべく素直にあらわしてみました。
---------- ここから ----------
01: //===== Initialize =====
02: %occurrence=();
03:
04: //===== File open and read loop =====
05: open FH, "sample.csv";
06: while( $line = <FH> ) {
07: ($name, $mail, $question) = split /\,/, $line;
08:
09: //===== Check and branch =====
10: if( exists $occurrence{$mail} ) {
11: print "'$mail' is already exsists.\n";
12: }
13: else {
14: print "$name,$mail,$question\n";
15: $occurrence{$mail}=1;
16: }
17: }
---------- ここまで ----------
学校の宿題程度のスクリプトです。高効率化やデータ再利用などを考えた構成ではありませんが、参考にしてみてください。僕なら、もうちょっと用途に応じたデータベース変数を用意しますが、スクリプトや変数構成はそれだけ複雑になります。実際にプログラムを走らせてないので、つまんないバグがあるかもしれないですが、まあ、許してください。責任感なくて、ごめんね~(笑)。
MAGNAFIFTYさま、ご丁寧に有難うございます。
分かりやすい説明でなんとなく分かったのですが・・・
仰るようにperlで書かれたデータ変数を解析をいましているところです。
またもう少し調べてからお聞きするかもしれませんが、
そのときにお時間の有るようでしたら宜しくお願いします。
No.5
- 回答日時:
形はあってますが, おしむらくは英語が....>#4.
'$mail' is already exists.
は英語として間違ってまっせ.
'$mail' has already appeared.
あたりが適当かと.
'$mail' already exists.
でも意味は通りそうだけどちょっと変な感じ.
No.3
- 回答日時:
>>1-2
ヒント:昔のokwave
回答もしておくか。
こうすればいい。これは
シーケンシャルサーチという高度なアルゴリズム
sub check{
$flag = 0;
$target = 'mail\アットマークmailtest.jp';
$num = $#mail;
for($i=0$i<$num;$i++){
if(mail[$i] eq $target){
$flag = 1;
}
}
return $flag;
}
この回答への補足
JavaJavax2さま、お名前からすると
これはJavaスクリプトなのですか?
ちょっと思いつきなのですが、登録フォームのメールアドレスの
項目にJavaスクリプトを直接付けてデータベースから全文をみて検索するという方法ないのでしょうか?
すみません、素人の思い付きです・・・
JavaJavax2さま、
早速のご回答有難うございます。
未だよくは分かってはいないのですが、
試してみます。
有難うございます。
No.1
- 回答日時:
漠然としていて、よくわからないのですが、
メールだけを抜き出せるなら、
それをハッシュに突っ込みつつ、すでにハッシュに在るかどうかで
重複チェックは出来るんじゃないですね?
この回答への補足
urakidsさま、早速のご回答有難うございます。
CSVのデータは
2009/9/10 13:14,80910-13142516,home,page,a,a,男性,1,123-4567,長野県,1,045-123-1234,home1@suv.com,home@suv.com
2009/9/10 13:18,80910-13181011,home,page,a,a,男性,1,123-4567,長野県,1,045-123-1234,home2@suv.com,home@suv.com
2009/9/10 13:30,90910-13303910,home,page,a,a,男性,1,123-4567,長野県,1,045-123-1234,home3@suv.com,home@suv.com
こんな感じのデータでそこからメールアドレスを抜き出せば簡単なのかなと考えました、
もう少し勉強してみます。
有難うございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- XML PHP.laravelについて 1 2023/07/06 15:26
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- PHP 値の取り出し方について教えて下さい。 1 2023/03/31 13:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列を変数名として扱う方法
-
ハッシュ検索はなぜ速い
-
列挙型と連想配列の違いを教え...
-
ハッシュ値が一致したデータは...
-
文字列をハッシュにしなければ...
-
CSVファイルにあるメールアドレ...
-
*(アスタリスク)の意味
-
VBAでの一時停止と再開の方法
-
画面を強制的に再描画させる方法
-
VBA横データを縦にしたいです
-
「偶数・奇数の和」のフローチ...
-
VBのReturnの使い方
-
乱数の桁数指定、または範囲指定。
-
VBA 多次元配列を用いてグルー...
-
VBA for i=1 to lastrow
-
乱数と順列と組み合わせ
-
フラグについて
-
VBA Dir関数でファイルをループ...
-
VBAで3秒だけ時間を止めたい
-
データベースをEOFまでループさ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハッシュ検索はなぜ速い
-
文字列を変数名として扱う方法
-
チェックデジットについて
-
ハッシュのハッシュを実現したい。
-
まったく同じファイルのハッシ...
-
列挙型と連想配列の違いを教え...
-
重複ファイルを削除したいので...
-
*(アスタリスク)の意味
-
短いハッシュの作り方
-
英語でのシャープとコメの呼び...
-
ハッシュマーク以降のアドレス取得
-
一意(ユニーク)かつ、ソート...
-
Perlは戻り値で、ハッシュや配...
-
ハッシュリストって単にハッシ...
-
ActivePerl がハングアップ
-
多次元配列から重複を削除
-
mapのポインタ
-
Perlのハッシュ変数のソートに...
-
Perlのサブルーチンの引数に配...
-
文字数の短いユニークなID生成
おすすめ情報