Perlコーディング初心者質問スレ Part 40
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/01/27 18:08:42ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0303nobodyさん
05/02/10 19:37:17ID:???use vars qw(%info @dir_list);
$info{no_dir} = { map{$_ => 1} qw(test test2) };
...
{
search($info{path}); #対象ディレクトリ全検索
sub search
{
my @dirs = @_;
foreach my $dir (@dirs){
my @list = map{$_. '/'} file_list { #ディレクトリ全取得
-d #範囲をディレクトリに絞って…
and !(m/[\/\.]+$/) #自己参照ディレクトリの類は排除して…
and !$info{no_dir}->{(m|/([^/]+)$|)[0]} #除外指定ディレクトリは無視。
} $dir;
push(@dir_list, @list); #ディレクトリ追加
search(@list) if(@list); #ディレクトリがまだあったら再帰
}
}
}
ちょっと書き換えちゃったけど、適当に戻しておいて。
0304nobodyさん
05/02/10 19:40:55ID:???my $aaa = "$bbb.txt";
0305nobodyさん
05/02/10 19:49:39ID:???区別って$bbbと".txt"の境界をはっきりPerlに伝えたいってこと?
とりあえず、"."は変数の一部とは見なされないから、そのままでもOKだけど、
もっと安全に書きたいというのなら、
my $aaa = $bbb . ".txt";
my $aaa = "${bbb}.txt";
0308282
05/02/10 20:46:53ID:???やべー。恥ずかしい。pathとpassを間違いまくってた。_| ̄|○
そっか、ハッシュを使うんですね。ハッシュ。
しかも所々細かいアドバイスありがとう。
って事で今からテストしてきます。
0309304
05/02/10 21:41:23ID:???0310nobodyさん
05/02/10 21:46:11ID:???0311nobodyさん
05/02/10 21:50:00ID:???$sazae = "
<table width=675 border=0 cellspacing=0 cellpadding=0 height=5>
<tr>
<td><img src="http://img.yahoo.co.jp/images/clear.gif" alt="" width=1></td>
</tr>
</table>
";
0314nobodyさん
05/02/11 01:43:21ID:???しかし、「www6.ocn.ne.jp」からは取得できますが、「www.ff.iij4u.or.jp」からは「Access Denied」となります。
当然ブラウザからならアクセス可能。User-Agent等を変えてもうまくいかず・・ご助言宜しくお願いします。
#!/usr/local/bin/perl -w
use Socket;
#$address = "http://www.ff.iij4u.or.jp/~ch2/bbsmenu.html";
#$host = "www.ff.iij4u.or.jp";
$address = "http://www6.ocn.ne.jp/~mirv/2chmenu.html";
$host = "www6.ocn.ne.jp";
$myagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
$rhost = "hoge.com";
$port = getservbyname('http','tcp');
$iaddr = inet_aton($host) or die "aton-err\n";
socket (SOCKET,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
connect(SOCKET,sockaddr_in($port,$iaddr));
binmode(SOCKET);select(SOCKET); $| = 1; select(stdout);
print SOCKET "GET $address HTTP/1.0\r\n";
print SOCKET "Host: $host\r\n";
print SOCKET "User-Agent: $myagent\r\n";
print SOCKET "Accept: */*\r\n";
print SOCKET "Accept-Charset: *\r\n";
print SOCKET "Accept-Language: jp\r\n";
print SOCKET "Referer: http://$host/\r\n";
print SOCKET "Remote-Host: $rhost\r\n";
print SOCKET "\r\n";
while (chop($buf=<SOCKET>)) {print "$buf\n";}
close(SOCKET);
exit;
0315nobodyさん
05/02/11 02:07:19ID:???0316nobodyさん
05/02/11 02:29:31ID:???use Socket;
$address = "http://www.ff.iij4u.or.jp/~ch2/bbsmenu.html";
$host = "www.ff.iij4u.or.jp";
$myagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
$rhost = "hoge.com";
$port = getservbyname('http','tcp');
$iaddr = inet_aton($host) or die "aton-err\n";
socket (SOCKET,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
connect(SOCKET,sockaddr_in($port,$iaddr));
binmode(SOCKET);select(SOCKET); $| = 1; select(stdout);
print SOCKET "GET /~ch2/bbsmenu.html HTTP/1.0\r\n"; #ここがおかしい
print SOCKET "Host: $host\r\n";
print SOCKET "User-Agent: $myagent\r\n";
print SOCKET "Accept: */*\r\n";
print SOCKET "Accept-Charset: *\r\n";
print SOCKET "Accept-Language: jp\r\n";
print SOCKET "Referer: http://$host/\r\n";
print SOCKET "Remote-Host: $rhost\r\n";
print SOCKET "\r\n";
while (chop($buf=<SOCKET>)) {print "$buf\n";}
close(SOCKET);
exit;
0317316
05/02/11 02:35:22ID:???$address =~ m|^http://([-_\.a-zA-Z0-9]+)/?(.*)$|;
$host = $1;
$path = $2;
と付け加えて、
print SOCKET "GET /$path HTTP/1.0\r\n";
と変更すると汎用性があっていいかも。
0318294
05/02/11 08:42:07ID:4xNa2hhvありがとうございます。
ユニークキーは一応Perl側で作成してますが、万が一の重複の可能性を考えて
インサート時にauto_incrementになってます。
なのでユニークキーについては役割は半々ですね。
LAST_INSERT_ID()ではアクセスが集中した時にミスりますよね?
プロセスAが入れる→プロセスBが入れる→プロセスAからのLAST_INSDERT_ID()を処理
=プロセスBが入れたものがプロセスAに渡されてしまうorz
0319294
05/02/11 10:01:49ID:4xNa2hhv今回のCGIではPerlで半分ユニークキーを作成してますので、auto_incrementする可能性は
ほとんどないので、last_insert_id()がauto_incrementしてない時には初期値の0まま
(もしくは前回値ですが今回はinsert1回しかないので)という仕様を利用して、
my $your_id = $last_insert_id == 0 ? $perl_creat_id : $last_insert_id;
のようにして確実に自分が入れたデータの取り出しが可能になりました。
お世話になりましたm(_ _)m
0320nobodyさん
05/02/11 10:31:52ID:???0321nobodyさん
05/02/11 11:11:35ID:???テスト環境は(local)→winXP
サーバ→Linux
@array = qw/a b c d e f g/;
@arrayの中に7個あります。インデックスは0-6になります。
これをランダムに表示させたいんですが単にrand関数を使っただけでは均等には
なりませんよね?(rand関数自体どこまで完全確率に近づけられているのかはわかりませんが、
それはおいといてください。)
print $array[(rand 6)];
これだと圧倒的に最後の$array[6]だけ選択率が落ちます。
0-5は小数点も付きますが、6だけ付かないのでまあ当然なのですが。
かといってrand 7にして7が選ばれたらマイナス-1するというのではまだ不公平ですよね。
rand 7にして7が選択されたらマイナスもrandで決定するというのも結局
そのときもマイナス7が選ばれる可能性が・・・・次に続けます
0322321
05/02/11 11:15:15ID:???$number = $number == 7 ? $number - rand 7 : $number;
print $array[$number];
前回言いかけましたがこうしても結局今度は$array[0]が選ばれる可能性がちょっと増える
ので不公平ですよね。
公平に0-6を抽選することはできないのでしょうか?
0323nobodyさん
05/02/11 11:40:10ID:eHptbqsS言ってることがよくわかりませんが
http://www.rescue.ne.jp/CGI-BBS/cgi/perl/20020909010545.shtml
このへん読んでみれば?
というかrand関数を使えば均等になるし、ちゃんとrand呼び出す前に
srand関数で初期化してますか?
0324314
05/02/11 11:54:58ID:???教えていただいた方法で無事取得できました。
ありがとうございました。
0325321
05/02/11 11:56:27ID:???Perl5.1以降は自動的にsrandされてるみたいです。
もしかしてrand 8;
って0-8をランダムに選ぶのではなく0-7(小数点つき)を選ぶんですかね?
確かにprint rand 8;として
>8
となった経験はありませんが、ただ確率が極端に8だけ落ちるからだと思ってました・・・
私の勘違いだったのでしょうか?
0326nobodyさん
05/02/11 11:57:37ID:???0328nobodyさん
05/02/11 14:06:49ID:???これで今年が何年なのかを表示させようと思ったらエラーがでました。
near ")["
となってたのですがこの形式はダメなのでしょうか?
gmtime(time+32400)自体はリストなので大丈夫だと思ったのですが。
0329nobodyさん
05/02/11 14:14:41ID:???0330nobodyさん
05/02/11 14:14:45ID:QAwMbYUp↑これをリスト扱いしてるでしょ。どう見ても。
0331nobodyさん
05/02/11 14:24:46ID:???参考
Perlメモ/W3C形式の日時の解析
http://digit.que.ne.jp/work/index.cgi?Perl%A5%E1%A5%E2%2FW3C%B7%C1%BC%B0%A4%CE%C6%FC%BB%FE%A4%CE%B2%F2%C0%CF
2005-02-10T14:54:18+09:00 を変換する場合、どう書けばいいのでしょうか?
0332nobodyさん
05/02/11 14:32:58ID:???open FH,"+>>test.txt";
seek FH,0,0;
print FH "ファイルの先頭";
close FH;
これを実行したら何故かファイルの末尾にかかれました。
seekが効いてないのでしょうか?
0334328
05/02/11 14:34:37ID:???でも同じエラーがでます。
0335nobodyさん
05/02/11 14:42:49ID:???+>>
ではseekは使えない。ポインタの移動自体が不可能。
もし先頭に追加したければ一度中身を配列に読み込んでから
unshiftで先頭に入れて上書きするしかない。
>>334
当たり前。かっこなんかつけてどうこうなる状況ではない。
@{[gmtime(time+32400)]}[5]
とすればいい。
0337nobodyさん
05/02/11 15:37:08ID:???">>"はO_APPENDがつくのでwriteがかならずその時点でのファイルの
末尾からになる。
ファイルをもしなければ作成して読み書き両用で開きたいんじゃないかと
思うが「>」使うのでちょうどいいのはたぶんない。openでシステムコール
のオプションを明示的に指定できるのでそれを使うのがいいと思われる。
0339nobodyさん
05/02/11 17:00:15ID:CPrSGSxUprint(
"引数",
"引数",
);
↑こーゆーのってコーディングスタイルとしてどーなんですか?
エラーはでないみたいなんですけど。
0340nobodyさん
05/02/11 17:07:21ID:4xNa2hhvmy $test;
〜処理〜
undef $test;
}
ブロックの終端で人間が見たときにこのブロックでどういうローカル変数を使っているかを
わかりやすくするためにわざわざundefしてます。
私のテキストエディタでは関数名は太字になりますので、もの凄く見やすいです。
それでそのブロックないで作った(いじった)グローバル変数もまとめて列挙したいんですが、
# $global
とかしてもコメント用の色にはなりますが、太字にはならず見づらいです。
そこで何か変数に対して何もしない関数があればいいなと思ったのですが、何かいいのはありませんか?
scalar $global;
みたいな感じです。
undefにしろ完全に処理効率を落とすものでしかないのでなるべくその影響が
小さいものがいいです。undef以下の処理時間の関数だと最高です!
0341nobodyさん
05/02/11 17:15:59ID:???http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlstyle.html
あとは君が書いたスクリプトを誰が保守するのか考えた上でご自由に。
>>340
エディタの為のコードを書くな。コードに合わせてエディタを設定しろ。
0342340
05/02/11 17:26:02ID:4xNa2hhvエディタの設定ではできないのです。
0343nobodyさん
05/02/11 18:20:17ID:???リストの最後にカンマが付いているのを懸念しているのか?
結論から言えばアリ。ハッシュでも良く使うね。
{
foo => 1,
bar => 2,
}
後で項目追加したりするときに、ミスが出なくていい。
0344343
05/02/11 18:33:32ID:???http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perldata.html#List_value_constructors
0345nobodyさん
05/02/11 21:22:27ID:???use HTTP::Date qw(parse_date);
my @date = parse_date("2005-02-10T14:54:18+09:00");
my $date_str = sprintf('%04d年 %02d月 %02d日 %02d時 %02d分 %02d秒', @date);
0346339
05/02/11 21:26:56ID:CPrSGSxUこっちのほうがいいな、と。
Cのprintfだと引数1つしかだめなんでちょっと
おどろいたついでに確認してみたんですが・・
アリということなのでがんがんつかいますw
0347339
05/02/11 21:31:01ID:CPrSGSxUprint と print() だとなんか前者の方がよくみるんですが
print()の方でもいいんですよね?
関数に()がないのがなんか気持ち悪くて・・
0348339
05/02/11 21:37:39ID:CPrSGSxU↑に書いてありましたね、連投スマソ
0350nobodyさん
05/02/12 00:13:28ID:???あまりいい趣味とは思えないが、どうしてもやりたければ
use Filter::cpp;
#define NOOP(x)
とか?
0351nobodyさん
05/02/12 00:15:44ID:???俺は関数に限らず極力()を付けない。
基本的に見易さと理解しやすさが第一だから。
もちろんぱっと見たときにどういう優先順位かわからなくなりそうな時はつけるけどね。
>CGIで使う時にprintが乱立するのが見苦しいから
それとこれは君がしょぼいだけと言わざるを得ない。
出力内容はユーザによって変えないといけないことが多いCGIではprintを始める
以前にほとんどのデータを用意しておく。
そして何行にもなるならヒアドキュメントを使ってスッキリさせる。
まぁプログラミングなんて誰でもできるものだけど、
読みやすく効率のいいものが作れるかが馬鹿と賢者の分かれ目かな。
ってえらそうにごめんねm(_ _)m
とりあえず処理効率よりも読みやすさを薦めるよ。
0352nobodyさん
05/02/12 01:31:57ID:???演算子には()をつけないほうが読みやすいとされるそうです。
俺もそう思いますが、printは演算子です。
0353347
05/02/12 01:34:34ID:DEctNxAsなるほど〜、うまいことやる方法がきちんとあるのですね。
なんせCGIは初めてで正直まだ何もわかっていないんです。
でも351さんがおっしゃっていることは自分も同意で、普段書く時
は気をつけています、綺麗なコーディング。
とにかくがんばります。
0354347
05/02/12 01:40:35ID:DEctNxAsえ、、、PerlやPHPだとprintは演算子なんですかぁ、ちとびっくり。
てっきり関数かと思ってました。
だから()がいらないんですね、なるほどなるほど。
0355nobodyさん
05/02/12 03:35:24ID:W11W0gdqそもそもCGIでprint文なんていくつも書かないだろ。
出力用のルーチンに投げてprintは1つでお終い。そこで変数展開してやればいい。
0356nobodyさん
05/02/12 10:55:57ID:???0357nobodyさん
05/02/12 12:43:51ID:???正確に言うと少し違う。Perlの組み込み関数はある意味で全て演算子であるといえる。
>>356
それでいいよ。その方が分かりやすい。
0358s
05/02/12 16:09:49ID:???うまく読み取ってくれません。どうやればいいのでしょうか?
0360nobodyさん
05/02/12 17:35:59ID:???こら。好き勝手書くんじゃない。
0363nobodyさん
05/02/12 23:09:29ID:???0365nobodyさん
05/02/13 04:12:34ID:???print ←リスト演算子
scalar ←名前つき単行演算子
rand ←引数が一つの関数
sort ←関数
演算子はコンパイラが変換形式と答えを知っている。
関数はインタプリタにて処理が実行される。
0366nobodyさん
05/02/13 05:23:09ID:???例
82CA82E982DB
を
%82%CA%82%E9%82%DB
にしたいのです。
使われる文字はa-zA-Z0-9の半角英数です。
ちなみに漏れが考えたのは、2文字ごとにsplitで分割して配列に入れ、joinでくっつけて頭に%をくっつけるって方法だけど、これでいいっすか?
0370nobodyさん
05/02/13 12:40:44ID:NsfysfMzgoogleでperl http webなどとしてもURLのスキーマがヒットするので要領を得ないのです。
0371nobodyさん
05/02/13 14:54:56ID:???httpプロトコルを実装したモジュールなどいくらでもあるから
どういうものを探してるのかわからんが、LWPなどよく使うものなら
↓に少々載っている。
http://homepage3.nifty.com/hippo2000/perltips/index.htm
0373nobodyさん
05/02/13 16:50:52ID:Lwv6BlB8$a == 1 かつ $b == 2
みたいに条件にaかつbみたいな複数条件を付けるにはどう書いたらいいんでしょうか?
教えてエロイ人
0375nobodyさん
05/02/13 16:53:57ID:Lwv6BlB8即レスサンスコ
0376nobodyさん
05/02/13 20:33:35ID:???@xx=();とやってもだめでした。
for($i=0;$i<=$#xx;$i++){
$xx[$i]="";
}
↑こうすればできましたが、やっぱり一行で何とかなりませんか?
0377nobodyさん
05/02/13 21:00:28ID:???でできるけど。
0379nobodyさん
05/02/13 21:08:31ID:???@xx=()でだめということは、要素数を保ったままで全要素を
空文字列にしたいという問題なのかな?
もしそうなら、
map $_ = '', @xx;
$_ = '' for @xx;
for (@x) { $_='' }
あたりからお好きな奴を。下のほうに行くにしたがって
微妙に遅くなるけどそれほど差はない。map使う奴はvoid
コンテキストじゃないと遅くなるので注意。
空文字列じゃなくてundefでよければ、
@xx = ();
したあとに
$#xx = 要素数-1;
で要素数あわせる方が速いけど。
0380376
05/02/13 21:35:58ID:???0381nobodyさん
05/02/13 21:45:50ID:MAmE7PYm!~ /[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/
なんかもうちょっといいのあったら教えてください
0382nobodyさん
05/02/13 22:24:52ID:???メールのアドレスはまじめにやるとかなりメンドウななので、
Email::Valid(または日本の携帯のRFCに違反したアドレスにも
対応したければEmail::Valid::Loose)を使うのが楽だよ、
というかすこしまえにこのスレで話題になってたぞ。せめて
現行のログぐらい読め。
ttp://search.cpan.org/~maurice/Email-Valid-0.15/
ttp://search.cpan.org/~miyagawa/Email-Valid-Loose-0.04/
0383nobodyさん
05/02/14 02:06:35ID:???$host = $1;
if ( !$host || !gethostbyname($host) ) {
print "不正なメールアドレスです";
}
俺はこうしてる。
0384nobodyさん
05/02/14 07:52:59ID:mZmBq9e/cト cト /^、_ノ | 、.__ つ (.__  ̄ ̄ ̄ ̄ ・ ・
,. -─- 、._ ,. -─v─- 、._ _
,. ‐'´ `‐、 __, ‐'´ ヽ, ‐''´~ `´ ̄`‐、
/ ヽ、_/)ノ ≦ ヽ‐'´ `‐、
/ / ̄~`'''‐- 、.._ ノ ≦ ≦ ヽ
i. /  ̄l 7 1 イ/l/|ヘ ヽヘ ≦ , ,ヘ 、 i
,!ヘ. / ‐- 、._ u |/ l |/ ! ! | ヾ ヾ ヽ_、l イ/l/|/ヽlヘト、 │
. |〃、!ミ: -─ゝ、 __ .l レ二ヽ、 、__∠´_ |/ | ! | | ヾ ヾヘト、 l
!_ヒ; L(.:)_ `ー'"〈:)_,` / riヽ_(:)_i '_(:)_/ ! ‐;-、 、__,._-─‐ヽ. ,.-'、
/`゙i u ´ ヽ ! !{ ,! ` ( } ' (:)〉 ´(.:)`i |//ニ !
_/:::::::! ,,..ゝ! ゙! ヽ ' .゙! 7  ̄ | トy'/
_,,. -‐ヘ::::::::::::::ヽ、 r'´~`''‐、 / !、 ‐=ニ⊃ /! `ヽ" u ;-‐i´
! \::::::::::::::ヽ `ー─ ' / ヽ ‐- / ヽ ` ̄二) /ヽト、
i、 \:::::::::::::::..、 ~" / ヽ.___,./ //ヽ、 ー
0385nobodyさん
05/02/14 09:45:44ID:IE9wtcnBカンマ区切りでダブルクォートで括られてると中のメタ文字は評価しないってやつです。
0386nobodyさん
05/02/14 10:26:10ID:???ここを見ながらファイル操作をためしてます。
しかし
open FH,"+>file";
こうした時に何故かファイルの既存データが読み取れません。
+<を使うと普通に読み取れますが、このサイトは間違った事を書いてるのでしょうか?
+>は読み取りも可能だと一覧表には書いてあるんですが・・・・
0388nobodyさん
05/02/14 10:48:19ID:???'+>'はファイルを開くときにまずいったん空にするのでそうなる。
そのあと新たに書き込んだ内容は読み出せるので読み取り可能と
いうのはそういう意味でいっていて間違いではない。
open(2)のflagsパラメタでいうと
'+>'はO_RDWR|O_CREAT|O_TRUNC
'+<'はO_RDWR
0390386
05/02/14 11:07:15ID:???そういうことでしたか!ありがとうござます。
ActivePerl5.6.1
Apache1.3
WindowsXP
この環境で今しがたflockのテスト行いました。flock初めてです;
open FH,"+<test.txt";
if (flock FH,2) {print "ok";}
seek FH,0,0;
print FH "あいうえお";
close FH;
>ok
okと出たのでflockがwinXPで使えるんだと思ってよいのでしょうか?
そうでしたら今から契約サーバでもこれを試して排他処理を選択しようかなと
思ってるんですが。
0391386
05/02/14 11:37:39ID:???+<の時もflockはモードを2にしておいていいんでしょうか?
読み込み時にモード2でやるとロックがかからない時があるようですが、
+<これはどうなのでしょうか?
0392nobodyさん
05/02/14 11:42:51ID:???flockは9x系では使えないけどNT系は使えるということになってたと
思った。未実装だと致命的エラーになるはずだし。
0393nobodyさん
05/02/14 11:57:52ID:???perlのflockがlockfやfcntlを用いたエミュレーションで実現されている場合は、
書き込みで開いてないとLOCK_EX使えないことがあるようだ。XpのActivePerlが
どうなのかは知らない。どちらにせよ'+<'は書き込み付だから問題ないと思う。
Note that the emulation built with lockf(3) doesn't provide
shared locks, and it requires that FILEHANDLE be open with
write intent. These are the semantics that lockf(3) imple-
ments. Most if not all systems implement lockf(3) in terms of
fcntl(2) locking, though, so the differing semantics shouldn't
bite too many people.
Note that the fcntl(2) emulation of flock(3) requires that
FILEHANDLE be open with read intent to use LOCK_SH and requires
that it be open with write intent to use LOCK_EX.
あと「モード2」とかって見づらいので、use Fcntl qw(:flock);して「LOCK_ほげ」
という名前の定数を使った方がいいと思う。
0395385
05/02/14 12:25:37ID:IE9wtcnBどうもです
0396nobodyさん
05/02/14 13:58:03ID:IE9wtcnBEmail::Valid::Loose
この二つを使いたいのですがwin版perl5.6にはプリインストールされてないようです。
そこでppmを使用してEmail::Validだけインストールしてみました。
しかしどうやらMail::Addressともう一つ何かが必要なようでMail::Addressの法を
ppmでインストールを試みてみたらどうやらPPDがないので無理なようですorz
実は今までppm以外のインストールをしたことがありません。
しかしこの度メールフォームを作成したいので、XSS対策?代わりにメルアドチェックを
Email::Validに任せたいのです。
多分鯖にもインストールされてないモジュールだと思うので、winXP環境の
ものをそのままLinux鯖のユーザスペースに移して使おうと思ってます。
0397nobodyさん
05/02/14 14:00:26ID:IE9wtcnBしかしその場合はLinux上にコピーしたところで使用するのは不可能ですよね?
Email::Valid
Email::Valid::Loose
使用してる皆様アドバイスお願いします。
0398nobodyさん
05/02/14 14:13:07ID:???Email::Valid::Looseはperlだけで書かれているっぽいので、
コピーすればいけるんじゃないかな。
ちゃんとディレクトリを掘ったりuse lib追加したりは必要
だろうけど。
しかしLinuxなら普通の手順でインスコできそうなもんだが
貸し鯖かなんかですかね。
0399396
05/02/14 14:24:17ID:IE9wtcnBEmail::Valid::Looseは
Email::Validのサブクラスですよね?
Email::Valid自体もpureperlなんでしょうか?
実は私は中身を見てもそれがpureperlなのかどうか判断できない馬鹿者なんですorz
実際の実行はLinuxのレンサバですが、テスト環境がwinXPなのです。
以前にpureperlのモジュールをLinuxレンサバのユーザスペースに移して
使用したことはあるので、今回もpureperlならできると思いますが、
結局Mail::addressとNet::DNSモジュールあるいはnslookupが必要なので
むりぽですorz
行き詰ってるのでとりあえずソースを自分でコンパイルしてインストールする
方法を勉強してみます。
0400nobodyさん
05/02/14 14:36:52ID:???開発手元に持ったほうがいいよ。
俺はデスクトップ環境にはLAN上にRH9置いてる。
持って歩くノートにはWinXPをホストにしてcolinux+debianを使ってる。
perlモジュールはCPAN使ってインストしてる。
実機はレンサバだけどSSHできるのでCPANで ~/lib/perl5 とかにインストして use lib〜使ってる。
環境作るの少々めんどいけど、都度Win環境でごたごたするよりはまし。
マシンなければ colinux+debian(デストリは何でもいいけど)で、これ最強。
0401nobodyさん
05/02/14 14:40:17ID:???あまり知識がないなら簡単なチェックで我慢したら?
@.-_
確かこれ以外の記号を使ってるメールアドレスってないよ。
だからこれと英数字以外を含んでるなら「メルアドが不正!」みたいな
メッセージを出してメールフォーム画面に戻せばとりあえず問題ないけどね。
まともなメールフォームなら
"<>スペース
あたりも許容するべきだけど、まあないならないでいんじゃないかな?
0402nobodyさん
05/02/14 14:49:16ID:???Net::DNSまたはnslookupが必要になるのはmxcheckを有効にしたときで、
無効にしとけばいらないはず。
0403396
05/02/14 14:52:18ID:IE9wtcnBcolinux+debian
聞いたことない名前ですが調べてみますm(_ _)m
>環境作るの少々めんどいけど、都度Win環境でごたごたするよりはまし。
そうですよねorz
>>401
そうなのですか!?
メールフォームといっても相手していするアドレスに固定文章を送りつけるだけなので
メールフォームとは呼ばないのかもしれません^^;
>@.-_
でもrfc882か何かではサイトURLなどと同じ記号が許されてましたよね。
で、それが結構な数になりますが私も401さんが挙げてくれた記号以外を
使ったメールアドレスを見たことがありません。
でもちょっと不安です;
どなたか @.-_ この4種類以外の記号が使われてるメールアドレスを
見たことがある方はいますでしょうか?
■ このスレッドは過去ログ倉庫に格納されています