|
度々すみません。 先ほど投稿させていただいたtomtomです。 処理系を書き忘れたので,再度書き込みをさせていただきました。 動かしている処理系は、linuxです。 余談ですが、linux-perlとactive-perlとで、recvやsendなどの システムコールの処理結果は、異なるのでしょうか? (NG時undefを返さず、別のものを返す、、など) クライアントをlinux-perlで、サーバをactive-perl(WinXP)で 起動しおり、サーバの方は、同様のrecv記述で上手く受信できているの で、なにか関係あるのかな、と素人ながら少し気になりました。 以上、度々失礼しました。 |
|
>>3315 tomtom > if(recv($sock_id, $msg, $MAX_BUFF, 0) eq undef){ undef かどうかのチェックは、正しくは if ( ! defined recv($sock_id, $msg, $MAX_BUFF, 0) ){ です。recv は相手側のアドレス (IP アドレス+ポート番号) を 返すので、それが undef と一致する、と解釈されているのかも しれません。 # でも、この書き方では undef を返さない限り eq undef と # ならないような気がするなぁ。 >>3314 mikan > いざメールを使用してみると、パスワード認証エラーがでて > はじかれます。 メールを使用というのは、POP を使ってメールを取得してみた ということですか? もしそうなら、telnet で POP サーバに アクセスし、本当に認証エラーになっているのか調べてください。 http://x68000.startshop.co.jp/~68user/net/pop3-1.html あと、ユーザ追加だけで OK か、というのは職場のメールサーバの 設定次第なので何とも言えません。 |
|
tomtomです。 68userさん、アドバイスをありがとうございます。 自分が素人であることを実感いたしました。 undefを判別するのには、define関数をもちいるのですね。 アドバイスに感謝いたします。 早速、試してみますね。 ではでは |
|
perlでテキスト処理をしていますが、有るリストをキーとしたハッシュ を生成したんですが、そのキーとなるファイルのサイズが110Mb程、キー数 (レコード数)は約1000万弱のレコードが有ります。 そのハッシュのキーを使い別のCSVのフィールドの中に同じキーが存在 する場合に必要な処理を行なっています。 if(exists $KEY{$csv_key_field}){ 処理 } で、実際に動かすと500Mbのメモリを使い切り(何故?)、1Gbのスワップ さえも使いきり止まってしまいます。 根本的にこのアルゴリズム自体が悪いのか、それとも何かメモリ使用量を 抑える解決方法があるのか教えてください。 ちなみに、キーとなるデータを配列に格納して grep で検索するとさらに べらぼうに時間が掛かります。 具体的には2つのリストの合成処理なんですが、このくらいの規模になると DBに置き換えて処理した方が良いのでしょうか? (最終的には何らかのDBに格納されるそうです) もちろん、変数は可能な限り局所化しています。(つもりです(^^;) もっと言えば、上記は最大サイズのリストではありますが、キーリストは 複数あり、それらを順繰りに処理しています。 どうぞお助けくださいm(_ _)m |