WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:perlでリストを使用したい

0:[投稿] えぴく [2002/07/01 18:27 ][環境:WIN+IE UNIX系+Perl]

world cupもとうとう閉幕してしまいましたね。

$test = 'test@test.ne.jp';
@mail = ("test.ne.jp","yahoo.co.jp","google.com"); #@

というリストを
foreach (@mail) {
  if($test =~ /$_/g) {
     &error('error');
  }
}
としていますが、このリストを外部テキストファイルにしようと思い、@を
$list = 'list.txt';
open (IN,"$list") || &error;
@mail = <IN>;
close(IN);

list.txtの内容###########

test.ne.jp<改行>
yahoo.co.jp<改行>
google.com<改行>

#########################("<改行>"は、テキストファイルでの改行)
としてみたところ、どうしても同じ結果を導けません。
どこに間違いがあるのでしょうか。
お気づきの点ありませんか(ToT)


1:[回答] andi [2002/07/01 19:03 ]

@mailに改行コードが入っているのではないでしょうか。
chomp関数を使う等して改行コードを削りましょう。


2:[回答] えぴく [2002/07/01 19:38 ]

見当違いなことを言っていたらすみません。

@mail[0]と@mail[1]の境界は現在改行文字なんですよね。
改行文字を削除すると、行ごとのデータはくっつかないのですか?

やっぱり見当違いかも(;;


3:[回答] おーなーしぇふ [2002/07/01 20:11 ]

以下の例で違いを比べて見てはいかがでしょう?

#1)------------------------------
@mail = ("test.ne.jp","yahoo.co.jp","google.com");

print "1)---\n";
foreach (@mail) {
    print;
}

print "\n";

#2)------------------------------
@mail = ();
$list = 'list.txt';
open (IN,"$list") || die "$!\n";
@mail = <IN>;
close(IN);

print "\n";

print "2)---\n";
foreach (@mail) {
    print;
}

print "\n";

#3)------------------------------
print "3)---\n";
foreach (@mail) {
    chomp;    #改行削除
    print;
}

print "\n";

#4)------------------------------
@mail = ();
open (IN,"$list") || die "$!\n";
while( <IN> ){
    chomp;    #改行削除
    push( @mail, "$_" );
}
close(IN);

print "\n";

print "4)---\n";
foreach (@mail) {
    print;
}

print "\n";

exit;


4:[回答] えぴく [2002/07/02 17:33 ]

あ、試してみます。ありがとうございます!


5:[完了] えぴく [2002/07/02 19:31 ]

おーなーしぇふさん、ありがとうございました。
ちょっとパニックになっているところで、基本的な「比較」で指し示して頂いて、落ち着いて理解することができました。
問題は無事解決することができました。ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World