|
早々のお返事、有難う御座います。 エラーは「認証失敗: 」だったのですが、 ご教授の通りデバッガつけて起動させて見ましたところ Net::POP3>>> Net::POP3(2.28) Net::POP3>>> Net::Cmd(2.26) Net::POP3>>> Exporter(5.58) Net::POP3>>> IO::Socket::INET(1.29) Net::POP3>>> IO::Socket(1.29) Net::POP3>>> IO::Handle(1.25) Net::POP3=GLOB(0x9e97f44)<<< +OK Qpopper (version 4.0.4) at ******.jp startin g. Net::POP3=GLOB(0x9e97f44)>>> USER ****** Net::POP3=GLOB(0x9e97f44)<<< +OK Password required for ******. Net::POP3=GLOB(0x9e97f44)>>> PASS .... Net::POP3=GLOB(0x9e97f44)<<< +OK ****** has 0 visible messages (0 hidden) in 0 octets. Net::POP3=GLOB(0x9e97f44)>>> STAT Net::POP3=GLOB(0x9e97f44)<<< +OK 0 0 認証失敗: at ./pop3-client-Net::POP3.pl line 41. ということで認証は通っていたようです。mailが空だったということでしょうか。 お騒がせいたしました。line 41というのは多少いじったところもあって originalとは異なりますが、 $auth_check = $pop->login($username,$password); など、実質的な変更はしていないつもりでした。 ちなみにtelnet接続でのcapaの応答は +OK Capability list follows TOP USER LOGIN-DELAY 0 EXPIRE 0 UIDL RESP-CODES AUTH-RESP-CODE X-MANGLE X-MACRO X-LOCALTIME Fri, 20 Jul 2007 09:04:45 +0900 IMPLEMENTATION Qpopper-version-4.0.4 となっていました。 これからFTPなどもやってみるつもりですのでまたお世話になるかもしれません。 そのときはまたお願いいたします。 |
|
Net::POP3 の検索でみましたら login ( [ USER [, PASS ]] ) USER、PASSコマンドの両方を送信します。... メールボックスのなかのメッセージ数を返します。 しかしサーバーにメッセージが何もなければ文字列"0E0"を返します。 これはブール値コンテキストでは trueになりますが、 数値コンテキストでは0です。 指定したユーザがサーバーで認証できなければ、undefが返されます。 ----------------------------------- とあったのですがバグということでしょうか。 Mailが無いことを確認できる方法は有りますでしょうか。 その場合はundefのエラーを回避するというスクリプトを 書けばよいようにも思っています。 |
|
>>4811 mac pop3-client-Net::POP3.pl の if ( $auth_check == undef ){ は誤った書き方で、正しくは if ( ! defined $auth_check ){ です (以前は undef かどうかのチェック方法を誤解していたため)。 これだとどうなりますか。 |
|
>>4813 68user > if ( ! defined $auth_check ){ バッチリです。それにしてもすばやいレス、本当に有難う御座います。 |
|
たいへん心苦しいのですが別のことをお聞きしてよろしいでしょうか。 HTTPクライアントのスクリプトで、Basic認証が通ったかどうか 戻り値などで判断する方法は有りますでしょうか。 いま確認中のスクリプトは以下の通りです。 #!/usr/local/bin/perl use strict; use HTTP::Request::Common; use LWP::UserAgent; my $req = POST( 'http://*****.jp/login.html'); $req->authorization_basic('ID', 'Pass'); my $ua = LWP::UserAgent->new; my $res = $ua->request($req); |
|
>>4815 mac HTTP::Response の code メソッドを使えばよいと思います。 ----- #!/usr/local/bin/perl use strict; use HTTP::Request::Common; use LWP::UserAgent; my $req = POST( 'http://X68000.q-e-d.net/~68user/net/sample/http-auth/secret.html'); $req->authorization_basic('hoge', 'wrong-password'); my $ua = LWP::UserAgent->new; my $res = $ua->request($req); print $res->code."\n"; my $req2 = POST( 'http://X68000.q-e-d.net/~68user/net/sample/http-auth/secret.html'); $req2->authorization_basic('hoge', 'fuga'); my $ua2 = LWP::UserAgent->new; my $res2 = $ua2->request($req2); print $res2->code."\n"; |
|
>>4816 68user 重ね重ね、有難うございました。 |
|
>>4810 68user さん、 そうなんですよ。use は引用符をつけてはいけないが use base だとダメ、 no strict 'refs'; だとあらゆる裸のワードを勝手にクォートするらしいです。 お騒がせしました。 |
|
>>4818 ふくし わかっておられるかもしれませんが、use base は built-in な文法ではなく ただ base.pm を use しているだけなので、base 内の sub import の引数として 渡されるから、ということですね。strict も実体は strict.pm なので同様に strict refs ではなく 'refs' としなければならないと。 個人的には、ここまで汚い造りにするかねぇ、という感じです。いちおう つじつまをあわせてるのはすごいですが。 |
|
awkを使ってファイルからある部分のデータを取り出そうとしています。 ファイルの内容 ---------------------------------- ---------------------------------------- Tue Jul 31 09:00:00 Jst 2007 xxxxxx xxxxxx xxxxxx xxxxxx Tue Jul 31 09:00:00 Jst 2007 ---------------------------------------- Tue Jul 31 09:10:00 Jst 2007 xxxxxx xxxxxx xxxxxx xxxxxx Tue Jul 31 09:10:00 Jst 2007 ---------------------------------------- Wed Aug 1 09:00:00 JST 2007 xxxxxx xxxxxx xxxxxx Wed Aug 1 09:00:00 JST 2007 該当の曜日、月、日から始まる行以降から 最終行まですべてを取り出そうとしているのですが、 awkで上手くいきません。 以下の様なエラーがでて上手くいきません。 どうすればよいのでしょうか。 awk: syntax error near line 1 awk: bailing out near line 1 シェルの内容 ----------------------------------------- #!/bin/sh LOG_FILE="/tmp/kekka.log" #DATE=`date "+%a %b %e"` DATE=`date +%C | cut -c 1-10` awk -v DAY=$DATE'/^DATE/,/\\r/ {print $0}' ${LOG_FILE} exit 0 |
|
UNIXの環境変数のLANGに使用する言語の指定に 「japanese」があるのですが、これは、日本語 が使えるのですか。それとも日本語のSJISが 使えるのでしょう。 また、UNIXのOSがどのコードなのかどこを見れば わかるのでしょうか。 また、EBCDICコードがあるのですが、これを使うには どうしたらよいのでしょうか。 |