ピンプ
[E-Mail]
1998/06/25(木) 23:19:08
perlで名前登録ページを作っているのですが、現在登録されてる
名前が再度登録されないように、名前が存在するかどうか確認して
から登録を行いたいのですが、どうもパターン照合でエラーが出る
ようです。
実際には、下のように、
sub check_name {
open(OUT,"$HOME/.jnames");
while(<OUT>) {
if ($_ =~ /$in{'name'}/){
&existing_name;
exit;
}
}
close(OUT);
}
という感じなんですが。日本語をこれに渡すとエラーがでます。
これと同じような処理をするにはどう書けばいいのでしょうか?
>> perl -v
perl version 5.004_04 built for i386-freebsd
mo
[E-Mail]
1998/06/26(金) 10:48:42
if ($_ =~ /$in{'name'}/)
の部分に問題があります。$in{'name'} が展開されたときに
正規表現の特殊文字が含まれていると、それが解釈
されてしまいます。
if ($_ =~ /\Q$in{'name'}\E/) { ... } # \Qから\Eまでの記号をエスケープ
とするか、あるいは
if (index($_, $in{'name'}) >= 0) # サブ文字列のチェック
とするのはどうでしょうか。
でも、単に同じ文字かどうかのチェックなら、
if ($_ eq $in{'name'}) { ... }
のように eq 十分でしょう。