68user's page 掲示板

Prev< No. 4701〜4800> Next  [最新発言に戻る] [過去ログ一覧]
No. 4702 # baba 2006/09/12 (火) 17:27:56
>>3716 68user
ksh でも set -o emacs で長いコマンドを受け付けたと思います。
>>4693 あみ
ldterm の制限なのでコーディングでどうにかなる問題ではありません。
tcsh/bash のように行を読み込む JNI の関数を作成して、
Java 側から呼び出すしかないと思います。

No. 4703 # Perl Queen 2006/09/21 (木) 00:29:06
こんばんは。初めて投稿します。

socketで、HTTP の取得を行うプログラムを作成しています。
取得はできたのですが、どうしても取得したデータに、
ゴミデータがまざります。

e05,5d,5, など、ランダムな数値です。
HTMLのタグ括りの中にも、外にも存在しますが、
タグ内には無いようでした。

他の諸センパイ方の情報も参考にさせていただいておりますが、
どうも、有力な手がかりがありませんでした。
何卒、ご教示いただけますでしょうか。
以下、プログラムの抜粋です。
--
$ip = inet_aton($host) || die "NG.\n";
$sockaddr = pack_sockaddr_in($port, $ip);
$proto = getprotobyname('tcp');
socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die "NG.\n";
connect(SOCKET, $sockaddr) || die "NG.\n";
autoflush SOCKET (1);
if ($http eq '1.1') {
    print SOCKET "GET $url HTTP/1.1\n";
    print SOCKET "Host: $host\n";
    print SOCKET "Connection: close\n";
} else {
    print SOCKET "GET $url HTTP/1.0\n";
}
print SOCKET "Accept: text/html; */*\n";
print SOCKET "\n";
my($op_all) = '';
while (chomp($buf=<SOCKET>)) {
    $op_all .= $buf;
}
close(SOCKET);

No. 4704 # 68user 2006/09/21 (木) 02:34:38
>>4703 Perl Queen
> e05,5d,5, など、ランダムな数値です。
chunked エンコーディングというものです。簡単に言うと、その後に続く
バイト数を 16進表記したものです。もし邪魔なら、HTTP/1.1 ではなく
HTTP/1.0 のリクエストを投げればよいです。

No. 4705 # Perl Queen 2006/09/21 (木) 07:19:22
>>4704 68user

68user 様

ご教示ありがとうございました。

HTTP/1.0 でリクエストすると、あるサイトの例ですが、
「サイトがありませんこのURLにはサイトがありません。または現在準備中です。準備中の場合は後に再度お試しください。」
などと出てしまい、サイトにたどり着くことができませんでした。

都合上、http://www.yahoo.co.jp/ のように、デフォルトURL
の指定にしているせいかもしれませんが、アクセス先のURLを
事前に知ることもできません。
あるいは、HTTP/1.0 で、URL指定の際に、何か回避ができたりしますでしょうか。

先に記載抜けていましたが、ポート番号は
$port = getservbyname('http', 'tcp');
であらかじめデフォルトを取るようにして、URL内にポートの指定があれば、
それを優先するようにしています。

No. 4706 # 68user 2006/09/22 (金) 11:13:20
>>4705 Perl Queen
HTTP/1.0 で、Host ヘッダを送信してみてください。
    http://x68000.q-e-d.net/~68user/net/http-4.html#1

No. 4707 # ゆう 2006/09/23 (土) 13:23:31
solaris10をインストールしたのですがインターネットに接続できません。
Mozilla1.7に何か設定が必要なのでしょうか?

初めまして、ゆうです。
先日初めてsolaris10をインストールしました。

デフォルトルーター:192.168.1.1
solarisPC:192.168.1.12
WindowsPC:192.168.1.11

上記のようにネットワークの設定を行っており、
WindowsPCからはインターネット接続が可能です。
また、WindowsPCとsolarisPCは互いにpingが通っています。

No. 4708 # 68user 2006/09/24 (日) 01:42:14
>>4707 ゆう
ひととおりチェックしてみてください。
    http://xxx.upken.jp/report/sol10nw.html

No. 4709 # zsh 2006/09/24 (日) 10:23:04
>>4707 ゆう
経験上 /etc/nsswitch.conf と /etc/resolv.conf の
設定を忘れている人が多い気がします。

No. 4710 # たけお 2006/09/25 (月) 17:44:26
こんにちわ。OSの再起動をスケジューリングしたいのですが、可能でしょうか?またそれはどのような事をすればいよいのでしょうか。ちなみにsolaris8を使ってます。よろしくお願いします。

No. 4711 # たけお ↓↓ 2006/09/25 (月) 17:50:05
自分が考えてることは、shutdownコマンドシェルを書いて、cronで実行、スケジュールする方法なんですが、他にありますか?例えば、再起動のスクリプトがあるとか・・・・

No. 4712 # たけお 2006/09/26 (火) 11:42:33
うまくいきました。どうも失礼します。

No. 4713 # 2006/09/27 (水) 10:55:45
システム間で電文を送受信する機能の設計を
担当することになり悩んでおります。

「相手システムに電文を送信して、その結果を受信する」または、
「相手から送信されてきた電文を受け取って、その結果を返す」
っといった設計に関してまったくの素人です。

なぜ素人に担当させるのかっといった事で突っ込まれると、
みもふたもないので、その点に関して触れないで下さい m(_ _)m

とりあえず、私のレベル(下記)にあった
分かりやすい参考書、またはインターネットのサイトを見て
基礎勉強(下記)からはじめたいのですが、参考資料/サイト
の紹介をお願いします。

<開発環境(案)>
OS:Solaris 
言語:Java(自分からAシステムへ)とPerl(自分からBシステムへ)
プロトコル:https

<私のレベル>
https,SSL、SOAPといった通信用語の意味は知っている(つもり)
Javaは実装の経験は無いが解析は出来る。

<知りたいと思っている事>
※「思っている」の意味は、今まで見た事・聞いた事からインスピレーション的に、
「多分、この辺を押さえておかなければいけないんだろうな...」っと思っている事です。

・送受信処理のJavaの実装例
・送受信が1秒間に100回あってもレスポンス悪化しない方法
    (100回という数値は適当です。普通どれくらいを目標にするのですか?)
・通信エラー等の例外処理の実装方法
    (通信エラー発生時の電文はロストするのですか?それってどうリカバリー
        するのですか? その当たりに関する事)
・「なりすまし,盗聴,改ざん」っといった事に対する防御方法とその実装方法に関する事

No. 4714 # 68user 2006/09/27 (水) 16:41:33
>>4713
> ・送受信処理のJavaの実装例
送受信の基礎は echo クライアント・サーバや http クライアント・サーバの
実装サンプルを探せばよいでしょう。

データ受け渡しは、http のパラメータで渡す・CSV・XMLRPC・SOAP など実現
方法はいろいろあるでしょうが、それは開発スピードや保守性に関わる部分
なので、はっきり言って何でもいいです。

> ・送受信が1秒間に100回あってもレスポンス悪化しない方法
> (100回という数値は適当です。普通どれくらいを目標にするのですか?)
要件次第です。相手側は何箇所あるのか、MAX で 1秒あたり何回送信する
可能性があるかを考え、安全係数 (1.5 とか) をかけて、それをさばける
構成を考えます。

高速化方法は、https の上に載せるのであれば一般的な web のパフォーマンス
チューニングがメインとなるでしょう。
    - web サーバチューニング
    - SSL アクセラレータ導入
    - DB チューニング・コネクションプール
    - web サーバ複数台化

> ・通信エラー等の例外処理の実装方法
> (通信エラー発生時の電文はロストするのですか?それってどうリカバリー
> するのですか? その当たりに関する事)
ロストする可能性があると考えて設計した方がよいでしょう。

プロトコル的には
    1. A -> B データ送信
    2. B -> A 完了通知
これだけだと思いますが、アプリの手順まで含めると
    1. A -> B データ送信
    2. B にて受信済フラグセット
    3. B -> A 受信完了通知
    4. A が受信完了通知を受け、送信済フラグをセット
となると思います。で、
    - A は送信済フラグが立っていない場合は再送する
    - B が既に受信済フラグを受けていたら、無視 or 破棄する
などの対処をすると。もし即時の再送がまずいなら、
    0. A にて送信日時をセット
    1. A -> B データ送信
    2. B にて受信済フラグセット
    3. B -> A 受信完了通知
    4. A が受信完了通知を受け、送信済フラグをセット
として、「前回送信から n分経過していたら再送する」などの仕組みも必要と
なるでしょうが、その辺は要件次第です。

もちろん、ブラウザのように
    「タイムアウトしたらエラー通知するだけ。再送は操作者まかせ」
というのも選択肢としてはアリです。

> ・「なりすまし,盗聴,改ざん」っといった事に対する防御方法とその実装方法に関する事
その辺は SSL でカバーするのがよいでしょう。相手側のなりすましも
防御する必要があるならクライアント証明書を使うとか、アプリレイヤで
認証するとか、固定 IP アドレスなら IP アドレスで制限をかけるとか。

もしネットゲームのように不特定多数が接続し、しかも送信プログラムを
改ざんされる恐れがある場合は大変面倒です。

No. 4715 # こう 2006/10/10 (火) 22:19:10
BシェルからPerlを呼び出し実行しています。
Bシェルの変数の値をPerlに引き継がせることはできるのでしょうか。

以下でいうと、nに、”100”を設定しています。
そのnの値である、”100”を渡したいのですが。

--------------------
#!/bin/sh

n=100
a=`perl -MPOSIX -e 'print strftime("%Y%m%d", localtime(time-(24*60*60*$n)))."\n"'`
echo $a

No. 4716 # zsh 2006/10/14 (土) 13:01:28
>>4715 こう
変数が展開されないのはシングルクォーテーションの中にあるせいなので
$n だけ出してあげましょう。

------
#!/bin/sh

n=100
a=`perl -MPOSIX -e 'print strftime("%Y%m%d", localtime(time-(24*60*60*'$n')))."\n"'`
echo $a

No. 4717 # りょん 2006/10/17 (火) 21:37:53
はじめまして。

現在少々考えこんでしまっていることがあるのですが
DB2でフェデレーション設定を行いたいと思っています。

ただ、フェデレーションという事自体をあまり
明確に理解しておりません。

どなたか、わかり易い説明などしていただけますでしょうか。
ラッパーやらニックネーム作成など色々調べれば出てくるのですが
いまいちピンとこないのです。

どなかたご教授願えればありがたいです。

よろしくお願いいたします。

No. 4718 # こう 2006/11/06 (月) 18:58:46
Bシェルのプロンプトについて教えて下さい。
Bシェルのプロンプトに日付、時間を表示し、何かコマンドを実行するごとに
プロンプトに表示する表示内容を変えたいのですが、可能なのでしょうか。

PS1="[`date{] "
とすれば、表示することはできますが、処理を実行するごとに変わりません。
変えたいのですが、方法とかあるのでしょうか。

No. 4719 # たつ 2006/11/08 (水) 00:17:43
BINDについて教えて下さい。

soralis7でBIND8.1.6の環境でDNSを構築しています。
named.confにzoneで以下の設定を追加してみましたが記述の間違いみたいなエラーが出ました。

zone "ドメイン名" in {
  type forward;
  forward only;
  forwarders { aa.bb.cc.dd; };
};

soralis9でBIND9.3の環境では正常に動作したのでBIND8.1.6ではzoneのforwardは
出来ないのではないかと思っています。
soralis7の環境でBINDをハ゛ーシ゛ョンアッフ゜したら動作するのではないかと思っていますが、
soralis7の環境で正常に動作するBINDは、どのハ゛ーシ゛ョンでしょうか?
また、パッチの適応で動作するなどの情報がありましたら教えて下さい。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 4720 # いれぶん 2006/11/08 (水) 01:09:41
>>4718 こう

shシェルのプロンプトでは無理です。
機能がなかったと思います。
表示は出来ても、プロンプトが生成される度に実行されません。

bashを使われてはいかかがですか。
bashのプロンプトで、時間、日付を表示できるエスケープが
あったはずです。

No. 4721 # miti 2006/11/10 (金) 12:58:21
テープにtarで吸い上げたファイルを削除する方法を教えてください。

テープ内にはtarで吸い上げたファイルがいくつかあり
そのファイルの一つを任意で削除したい場合です。
お願いします。

No. 4722 # 中級でも結構無知な人 2006/11/15 (水) 11:13:53
tarコマンドでわからないことがあり質問させていただきく以下に記します。

使用マシン:Solaris系 (UNIX)

DDS4のテープに15Gほどのデータを吸い上げました。
tar cvf /dev/rmt/0c /XXX/XXX

ただし、他のサーバで25Gほどあいているディスクに
tar xvf /dev/rmt/0 で展開しようとしたところ、
読み取りエラーが発生しました。

ネットなどでブロックサイズがXXXという説明を見ましたが
実際どのように対応するのかが記載している部分を見つけることが
できず、教えてください。

No. 4723 # has 2006/11/21 (火) 00:15:22
Solaris8で質問です。
rloginで特定IP帯からは特定ユーザでログインできないよう、
制限したいと考えています。
既存ツールを使って実現する方法はあるでしょうか。
何か情報ご存知の方がおられましたら、ご教授お願いします。

No. 4724 # zip 2006/11/27 (月) 18:20:46
Solaris8でzip圧縮した際にパスワードをかけたいと思っています。
現在の環境にはinfo-zip2.2がインストールされています。
過去ログにSolaris 標準の zipは暗号化ライブラリなしで
コンパイルされていて、ソースを改造してコンパイルすればよい
とあるのですが、
これはzip2.2のソースでしょうか?Solaris8のソースでしょうか?
またzip2.2の場合、現時点の最新版zip2.3.2にバージョンアップすれば
暗号化できますでしょうか?
よろしければご教授おねがいします。

No. 4728 # gari 2006/12/12 (火) 23:55:46
NetBSD/macppcにて、一通りの初期設定はすみました。
次は、インターネット接続を試みようとしています。
http://nobug.tukusi.ne.jp/netbsd-guide/trans/netbsd.html
の10章あたりを参考に設定しているところなのですが、イマイチよく分かりません。
モデムのデバイスが何なのかが分からないのです。
本体のUSB端子からKeyspan USA-28Xを接続してそこからシリアルポ−トにて
モデムにつながっています。
USA-28Xは認識できているようなのですが、肝心のモデムのデバイスが分からず、
上記URLの10.1.3.7にあるようなモデムの試験ができないでいます。
モデムはINSメイトV-30DSUです。
どなたか、御助言、御教授いただけませんでしょうか。

環境は、
Power Mac G4 450MHz AGP Graphics
NetBSD/macppcのバ−ジョン3.0
カ−ネルはデフォルト(GENERIC)

dmesgとls /devの結果は
http://ww2.tiki.ne.jp/~gari/dmesg.txt
http://ww2.tiki.ne.jp/~gari/device.txt
にあります。

No. 4729 # goro 2006/12/20 (水) 19:48:28
log4j経由でsyslogに同じメッセージを出力する時に…


ちょっとこの掲示板で以下の質問をして良いのかどうかわからないのですが、質問します。
log4jのSyslogApenderを使用してのUnix上マシンでのsyslogに出力する時に、前回と同じ内容のメッセージを出力した場合(前回出力してから30秒経過して出力)、なぜか下記の出力になります。
Nov 9 11:56:39 usrA ccc: repeate test
Nov 9 11:56:39 usrA last message repeated 1 times

『last message repeated 1 times』とは、syslogdのログの抑止をするための仕様です。
このメッセージが出るのは問題ないのですが、2回目の出力時刻が30秒たったにもかかわらず、前回と同じ時間を示しています。時刻を出力しているのは
syslogデーモンであり、syslogdが呼ばれた時刻を本来出力しています。

log4j経由ではなく、直接syslogdにログ要求を出した場合は、以下の出力なります。
Nov 9 11:56:39 usrA ccc: repeate test
Nov 9 11:57:09 usrA last message repeated 1 times

いろいろ調べたのですが、原因の糸口すらわかりません。どんなに時間が経過しても前回と同じメッセージの場合、『last message repeated n times』が必ず出力されるので困っています。
なぜこのような現象になるのかわかる方がいましたら、ご教授願います。また回避方法がありましたら教えてください。

環境:
log4j1.2.12
JDK5.0
Solaris8

No. 4731 # wssjf120 [E-mail] 2006/12/22 (金) 12:10:20
こんにちは  と言う言葉は暗号化したら何で  しいねてふ  になるのですか?

教えてください。

No. 4732 # びすこ 2006/12/22 (金) 18:29:34
Proxy経由でSSL_connectをcallした際にエラーが起こりました。
調べたところコネクション成立までに時間が掛かる場合があると
書かれていましたので、sleepしてみたり、複数回callしましたが
効果はありませんでした。
こちらのNo.289xあたりを参考にしましたが、これも効果がありませんでした。

WindowsXP VC++8 Winsock2 OpenSSL0.9.8aを使用しています。

SSL_connectまでは以下のような流れです。
socket();
connect();
proxyにCONNECT送信、200番を受信
SSL_library_init();
SSL_load_error_strings();
SSL_CTX_new();
SSL_CTX_load_verify_locations();
SSL_new();
SSL_set_fd();
SSL_connect();← "-1"が返ってきます
SSL_get_error();← "5"が返ってきます

元々はこちらのソースを参考にしてRedHat上で動いていたものを移植しています。
変更点はsocket関数の戻り値がint型からSOCKET型になったぐらいです。
proxyを使わない場合はSSL_connectが成功し、その後のSSL_writeとSSL_readも成功しています。

この現象が起こったマシンのcygwinにさらに移植をしたところ
こちらはproxy経由でもSSL_connectに成功しました。

No. 4734 # ひよこ 2006/12/24 (日) 16:42:22
質問があります。

とあるアプリケーションがとあるサーバーと通信しているとします。
そのアプリケーションが接続しているサーバーの、IPとPort番号を調べるにはどうすればよいのでしょうか。

No. 4735 # tkoba 2006/12/26 (火) 13:10:58
>>4734 ひよこ

netstat コマンドでどうでしょう。

http://x68000.q-e-d.net/~68user/unix/pickup?keyword=netstat&target=command

No. 4736 # tkoba 2006/12/26 (火) 13:13:06
>>4731 wssjf120

「シーザー暗号」で調べてみてください。

No. 4737 # moto 2006/12/27 (水) 14:24:44
こんにちわ 
いくらかでもヒントが欲しくて投稿しました。

グーグルマップの ajax についてなのですが、
グーグルマップの htmlソース内に
<div class="sloc" jsdisplay="$m.svaddr">
のようなコードがあります。

このタグ内に jsdisplay という属性名がありますが
これはmaps2.68.jsファイル内で以下のコードと関連しているようなのですが

        var Tc="jsselect",
            te="jsinstance",
            aj="jsdisplay",
            cj="jsvalues",
            bj="transclude",
            $i="jscontent",
            mk="$index",
            nk="$this"
        ;

javascriptで jsdisplay のような任意の属性名を定義する方法というか
それに関して何らかの情報があれば教えていただけませんでしょうか。

No. 4738 # 68user 2006/12/27 (水) 15:56:19
>>4737 moto
勝手に作った属性を書いておいて、getAttribute で読み出すことができます。
値のセットは setAttribute で。XHTML とかだと勝手に属性を作るのはまずい
のかもしれませんが、詳しくないのでわかりません。

--------
<html><body>
<div id="mydiv" hoge="abc"></div>
<script language="JavaScript">
var mydiv = document.getElementById('mydiv');
alert(mydiv.getAttribute('hoge'));
</script>
</body></html>
---------

No. 4739 # 68user 2006/12/27 (水) 16:09:01
>>4732 びすこ
> SSL_get_error();← "5"が返ってきます
よくわかりませんが、5 ってのは include/openssl/ssl.h の
    #define SSL_ERROR_SYSCALL 5 /* look at error stack/return value/errno */
ですよね。

http://www.openssl.org/docs/ssl/SSL_get_error.html
    Some I/O error occurred. The OpenSSL error queue may contain more information
    on the error. If the error queue is empty (i.e. ERR_get_error() returns 0), ret
    can be used to find out more about the error: If ret == 0, an EOF was observed
    that violates the protocol. If ret == -1, the underlying BIO reported an I/O
    error (for socket I/O on Unix systems, consult errno for details).

の通りにやってみるとどうなりますか?

No. 4740 # moto 2006/12/27 (水) 19:11:48
68user 様
ヒントありがとうございました。
  
グーグルマップを制御しているmaps2.68.jsファイル内にもgetAttribute,setAttributeの関数が出て
いますのでこれらが鍵なんですね。
一筋の光明が見えてきた気がします。

でも、maps2.68.jsファイルは170キロバイトもあるのに一行しかありません。
ですからコメントなぞ一つもなくすごい代物です。
解読するのに改行とインデントを入れる作業をしているのですが、
これがまた気の抜けない大変な作業です。
グーグルさんも簡単には教えてくれないんですね (^_^.)

ありがとうございました。

No. 4741 # 68user 2006/12/27 (水) 21:48:50
>>4740 moto
どこかに解説サイトがあったような…と思ったら、Google Suggest でした。
    http://slashdot.jp/developers/article.pl?sid=04/12/18/1033242

Maps の解説は見たことはありませんが、ある程度なら探せばあるかもしれませんね。

No. 4742 # 68user 2006/12/29 (金) 05:34:20
http://X68000.q-e-d.net/~68user/unix/ の検索は OR 検索だったのですが、
AND 検索に変更しました。そのために結構な量の改修を行ったのですが、例に
よって怪しげです。もし不具合があればお教えいただけると幸いです。

No. 4743 # びすこ 2007/01/09 (火) 17:18:24
>> SSL_get_error();← "5"が返ってきます
>よくわかりませんが、5 ってのは include/openssl/ssl.h の
> #define SSL_ERROR_SYSCALL 5 /* look at error stack/return value/errno */
>ですよね。
おそらく#define SSL_ERROR_SYSCALL 5の5だと思います。


>http://www.openssl.org/docs/ssl/SSL_get_error.html
> Some I/O error occurred. The OpenSSL error queue may contain more information
> on the error. If the error queue is empty (i.e. ERR_get_error() returns 0), ret
> can be used to find out more about the error: If ret == 0, an EOF was observed
> that violates the protocol. If ret == -1, the underlying BIO reported an I/O
> error (for socket I/O on Unix systems, consult errno for details).
>の通りにやってみるとどうなりますか?

再度デバッグをしたところssl_connect()の戻り値は-1ではなく0でした。
10回ぐらい連続で動かしてると-1が戻ることもあります。

戻り値が0ですとプロトコルに違反したEOFが見つかったとありますので、
SSL_CTX *ctx = SSL_CTX_new(SSLv23_client_method());
と、プロトコル設定をしているのが悪いのかと思い
TLSv1_client_method()などに変えてみましたが効果はありませんでした。
EOFに関してはEnd Of Fileしか思い浮かばずお手上げです。

戻り値が-1のときのBIO云々に関してもぐぐって見つけたソースを追加してみましたが
こちらも効果はありませんでした。

Winsock2を使ってproxy経由のときだけssl_connect()でエラーになるほうが難しいと
思うのですが・・・
こればかりやっていられないので、cygwinの方を使うことにします。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 4744 # peace 2007/01/12 (金) 17:12:51
初めて書き込みさせていただきます。
http://x68000.q-e-d.net/~68user/net/rsa-1.html
に書かれているrsa1.cをVisal Studio 2005で実行させたいのですが、可能でしょうか?

No. 4745 # 68user 2007/01/12 (金) 17:29:47
>>4744 peace
そのままでは動かないので、
    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=981427&SiteID=7
などを参考にしてください。

No. 4746 # hornets 2007/01/14 (日) 23:42:07
初めまして、hornetsと申します。
このサイトには、OpenSSLを用いたRSA暗号のプログラムが掲載されていますが、
OpenSSLを用いてElGamal暗号もできるのでしょうか?
教えていただけたら幸いです。

No. 4747 # 68user 2007/01/15 (月) 15:31:12
>>4746 hornets
> OpenSSLを用いてElGamal暗号もできるのでしょうか?
現時点の OpenSSL には ElGamal は実装はされていません。

OpenSSL の ML を探すと、実装が欲しいなら
    http://mixmaster.sourceforge.net/
を見れば、とありました。

# http://marc.theaimsgroup.com/?l=openssl-users&m=92476310717523&w=2

No. 4748 # Kenichi Maehashi [E-mail] 2007/01/15 (月) 23:00:02
初めまして。Kenichi Maehashi と申します。
いつもネットワーク関連の情報を拝読させていただいております。

さて、
>> http://x68000.q-e-d.net/~68user/net/module-pop3.html
を参考にさせていただきながら、POP3 クライアントを書いたのですが、
実行すると、カレントディレクトリに msg-xxxxx-x.txt というような
テキストファイルが出力されてしまいます。(x は数字です)

これは Net::POP3 モジュールの仕様なのでしょうか。
または、出力をしないような設定方法はありますでしょうか。

ご教示いただければ幸いです。
よろしくお願いいたします。

No. 4749 # 68user 2007/01/16 (火) 11:18:14
>>4748 Kenichi Maehashi
Perl5.8.5 の Net::POP3 で試してみましたが、そのようなファイルは
生成されませんでした。

Net/POP3.pm や、それが利用している Net/Cmd.pm、Net/Config.pm を見ても、
msg-xxxx-x.txt というファイルが生成されるようには見えませんでしたので、
今一度確認していただけますか。接続時に
    $pop = Net::POP3->new($hostname, Debug => 1);
と Debug を ON にすると何かわかるかもしれません。

No. 4750 # Kenichi Maehashi [E-mail] 2007/01/18 (木) 00:56:08
>>4748 68user さま
有り難うございます。
コードを削って確認してみたところ、併用していた MIME::Parser モジュールが
出力するファイルであることが分かりました。確認不足で申し訳ありません。
MIME::Parser の出力するメッセージファイルは出力しないよう設定できないのでしょうか。。。

重ね重ね申し訳ございませんが、何卒宜しくお願い致します。

No. 4751 # 68user 2007/01/19 (金) 10:31:02
>>4750 Kenichi Maehashi
よくわかりませんが、output_to_core でしょうか。
    http://search.cpan.org/~eryq/MIME-tools-5.411a/lib/MIME/Parser.pm
    output_to_core YESNO
        Instance method. Normally, instances of this class output all
        their decoded body data to disk files (via MIME::Body::File).
        However, you can change this behaviour by invoking this method
        before parsing:

        If YESNO is false (the default), then all body data goes to
        disk files.

        If YESNO is true, then all body data goes to in-core data
        structures This is a little risky (what if someone emails
        you an MPEG or a tar file, hmmm?) but people seem to want
        this bit of noose-shaped rope, so I'm providing it. Note
        that setting this attribute true does not mean that parser-
        internal temporary files are avoided! Use tmp_to_core() for that.

        With no argument, returns the current setting as a boolean.

No. 4752 # Kenichi Maehashi [E-mail] 2007/01/19 (金) 22:18:37
>>4748 68user さま
お世話になっております。
ご指摘の通り、$parser->output_to_core(1); で解決できました。
このページはチェックしていたのですが、見落としておりました。。。申し訳ありません。
本当に有り難うございました。

No. 4753 # サーバにUPしたプログラムと通信したい [E-mail] 2007/01/20 (土) 15:36:09
はじめましてwここのHPをみてソケット通信を勉強しています。
よろしくお願いします。

perlを使ってサーバプログラムとクライアントプログラムを作り
ソケット通信をしています。
ActivePerlを使用し、ローカルマシンでは通信できているので
実際にサーバプログラムをサーバにUPしてテストしたいと思い
プロバイダからもらった領域にFTPでUPしました。

で、質問なのですが
サーバプログラムが仮に http://www.aaa.com/user/test.pl という
アドレスにある場合
クライアントプログラムの
IO::Socket::INET->new( PeerAddr ... );
のPeerAddrはどう変えればいいのでしょうか?
※モジュールを使ってみようを参考にしています。

またほかにも何かしなければいけないのでしょうか?
よろしくお願いいたします。

No. 4754 # 68user 2007/01/20 (土) 18:00:20
>>4753 サーバにUPしたプログラムと通信したい
$socket = IO::Socket::INET->new(
    PeerAddr => 'www.aaa.com',
    PeerPort => '80',
    Proto => 'tcp');
  );
でよいです。

http://perldoc.perl.org/IO/Socket/INET.html に書き方のサンプルが
あるので、ざっと眺めてみてください。

No. 4755 # かみゅ [E-mail] 2007/01/20 (土) 19:01:34
ありがとうございます。

PeerAddr => 'www.aaa.com'
を指定した場合
user/test.pl
この部分はどうなるのでしょうか?
特に指定しなくても通信できるのでしょうか?

No. 4756 # 68user 2007/01/21 (日) 19:50:40
>>4755 かみゅ
IO::Socket はソケットのモジュールです。その上に HTTP を流すのであれば
    HTTP クライアントを作ってみよう(1)〜(4)
を読んで、送信すべき HTTP リクエストはどんなものなのかを調べてください。

No. 4757 # matsumoto 2007/01/24 (水) 12:04:11
初めまして、書き込みさせていただきます。
現在RSAについて学んでおり、非常に有用な情報としてこちらのHPを拝見させていただきました。
さて、http://x68000.q-e-d.net/~68user/net/rsa-1.htmlに記載されているrsa-1.cをコンパイル
してみたところ、openssl関連のヘッダファイルが読み込まれない旨のエラーが返され、
実行できません。実行環境としてVineLinux3.1にてgccコンパイラを用いており、opensslの
バージョンは最新版と思われる0.9.8をインストールしております。
対策方法をご教授いただければ幸いです。よろしくお願いします。

No. 4758 # 68user 2007/01/24 (水) 12:21:12
>>4757 matsumoto
まずは rsa.h や engine.h のありかを探してください。
例えば /usr/local/include/openssl/rsa.h が存在するなら
    % gcc -I /usr/local/include rsa-1.c
とします。

No. 4759 # ST 2007/01/28 (日) 15:46:17
はじめまして。STと申します。
CGI初心者です。
質問させていただきます。
「静的な画像表示」のところで、該当するソースをコピーして
サーバーにアップした後http://〜cgiと入力しGIFファイルを表示させようとすると
「GIF89aX」と表示されます。
パーミッションはOKで画像ファイルは存在します。
解決方法を教えていただけますと幸いです。
よろしくお願いします。

No. 4760 # 68user 2007/01/28 (日) 16:45:43
>>4759 ST
http://chaichan.web.infoseek.co.jp/qanda/qa7041.htm
に一本化ということで。

No. 4761 # 68user 2007/02/13 (火) 22:13:46
http://x68000.q-e-d.net/~68user/webcgi/sample/perl/graph-maker.cgi
にて日本語を出す方法のメモ。

% cvs di -u
cvs diff: Diffing .
Index: graph-maker.cgi
===================================================================
RCS file: /home/68user/cvsroot/public_html/webcgi/sample/perl/graph-maker.cgi,v
retrieving revision 1.9
diff -u -r1.9 graph-maker.cgi
--- graph-maker.cgi 26 Feb 2006 08:31:21 -0000 1.9
+++ graph-maker.cgi 13 Feb 2007 13:12:16 -0000
@@ -886,6 +886,8 @@
                }
          }

+ GD::Text->font_path( "/usr/local/share/fonts/TrueType/" );
+ $graph->set_title_font("sazanami-gothic", 14 );
          my $image = $graph->plot($ref_data) or die "Cannot create image";

          binmode STDOUT;

No. 4762 # べた 2007/02/15 (木) 16:05:07
findコマンドの使い方について教えて下さい。

findコマンドで検索を行う場合、指定したディレクトリ内だけ
検索を行い、下位のディレクトリは対象外にしたいのですが
できるのでしょうか。

例えば、/tmp配下を検索するとして、
/tmp
/tmp/backup
/tmp/save
とあった場合、
/tmp内だけを検索し、/tmp/backupや、/tmp/saveなどの下位ディレクトリ内
は見ないようにしたいのです。

find /tmp -name "*.csv" ! -size 0 -print

ドキュメントに、「-prune」がありましたが、指定すると、表示すべきものが
でてきません。上手くいきませんでした。

find /tmp -name -prune "*.csv" ! -size 0 -print
find /tmp -name "*.csv" -prune ! -size 0 -print

また、ファイル名は、ワイルドカード指定なので、表示後のgrepなども
使えません。

環境は、
Solaris8
Bシェル

No. 4763 # 68user 2007/02/16 (金) 00:33:04
>>4762 べた
試してませんが、
    % find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print
ですかね。

とはいえ、
    - maxdepth オプションを使える find をインストールする
    - grep '^/[^/]*/[^/]*$' としてパスに '/' が 2個以上含まれないことを
        チェックする
    - ls -l /tmp/*.csv | awk '$5~/^0$/{print $9}'
などの方法がよいような気もします。

No. 4764 # べた 2007/02/16 (金) 13:06:41
>> 4763

ありがとうございます。

>% find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print
ですが、配下のディレクトリを全て網羅するのは。。。
また、試してみましたが、直下のファイルがでませんでした。

> - maxdepth オプションを使える find をインストールする
> - grep '^/[^/]*/[^/]*$' としてパスに '/' が 2個以上含まれないことをチェックする
実際には、パスに、’/’が2個以上含まれるているので無理かと。

> - ls -l /tmp/*.csv | awk '$5~/^0$/{print $9}'
これが、一番よい方法になるのですかね。

No. 4765 # 68user 2007/02/16 (金) 15:23:55
>>4764 べた
> 直下のファイルがでませんでした。
FreeBSD では表示されました。Solaris の find は出ないのでしょうか。

> 実際には、パスに、’/’が2個以上含まれるているので無理かと。
「3個以上」の誤りでした。

ベストなのは「/tmp/ 直下に置くといういまいちな仕様を直す」だと
思いますが、それができれば苦労してないんでしょうね。

No. 4766 # べた 2007/02/16 (金) 17:48:15
>>4765 68user

ありがとうございます。
> find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print
ですが、
期待したものがでませんでした。
「*.csv」が表示されず、それ以外の全てがでました。

lsコマンドで上手く行きそうなので、この方法で試します。

No. 4768 # 2007/02/18 (日) 00:56:54
>>4764 べた

>>% find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print
>ですが、配下のディレクトリを全て網羅するのは。。。
すべて書くのは不可能ですよ。
それに、10も20もないでしょ。
ディレクトリだけを求めてすべてを変数に入れて設定すれば出来ませんか。

OP="-o -name backup -o -name -save"
find /tmp -name "*.csv" $OP -o ! -size 0 -print

でも、その下にあったら無理かな。

>>4766 べた

>> find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print
>ですが、
>期待したものがでませんでした。
>「*.csv」が表示されず、それ以外の全てがでました。
使い方、間違ってませんか。?

No. 4769 # beck 2007/02/18 (日) 17:56:20
初めまして!beckと申します。
このサイトでOpenSSLを用いたRSA暗号を実装例を紹介していますが、
鍵生成などの工程では、どれほどの時間を要するのでしょうか?
もちろん、PCのスペックに左右されることは承知していますが・・・

No. 4770 # べた 2007/02/19 (月) 11:54:58
>>4765 68user
>>4768

>% find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print
ですが、
やはり上手くでません。
期待している’*.csv’を表示しません。

> FreeBSD では表示されました。Solaris の find は出ないのでしょうか。
UNIXのOSによって異なる動きをするというこですか。
Solairs以外の環境がないのでなんともいえませんが。

No. 4771 # zxcv 2007/03/07 (水) 16:19:16
文字コードとエンコーディング (1)
http://x68000.q-e-d.net/~68user/webcgi/char-code-1.html

上記のページ、とても良くできていると思います。 ありがとうございます。

しかしながら、「エンコーディングとは」の項の先頭付近にある「他の文字と同時に扱う場合のことは考えられていません」の『文字』は『文字集合』とするべきでは無いでしょうか?

# 入門学習のために読む人にとって、重要な部分だ思います。

No. 4772 # 68user 2007/03/08 (木) 03:58:39
>>4771 zxcv
ご指摘ありがとうございます。修正してみましたがいかがでしょうか。
    http://x68000.q-e-d.net/~68user/webcgi/char-code-1.html

cvsweb が動かなくなっているので、修正点の diff を貼っておきます。

RCS file: /home/68user/cvsroot/public_html/webcgi/org/char-code-1.html,v
retrieving revision 1.6
diff -r1.6 char-code-1.html
68c68
< <LI>ASCII … 半角英数字・半角記号 (a,A,0,!,@,#)
---
> <LI>ASCII … 半角英数字・半角記号 (a,A,0,!,@,# など)
70c70
< <LI>JIS X 0208 … ひらがな・かたかな・漢字・全角記号
---
> <LI>JIS X 0208 … ひらがな・カタカナ・漢字・全角記号
73c73
< があります。
---
> などがあります。
80c80
< エンコーディングとは、複数の文字集合を一緒に扱うための枠組のことです。
---
> エンコーディングとは、複数の文字集合を同時に扱うための枠組のことです。
82c82
< 他の文字と同時に扱う場合のことは考えられていません。
---
> 他の文字集合と同時に扱う場合のことは考えられていません。
84c84
< ASCII と JIS X 0208 を同時に扱う場合を考えてみましょう。
---
> たとえば、ASCII と JIS X 0208 を同時に扱う場合を考えてみましょう。
90c90
< 「A」なのか「あ」なのかを判断できません。そのためには
---
> 「A」なのか「あ」なのかを判断できません。これを判断できるようにするためには、
94c94
< つまり「ここから先は ASCII」「ここから先は JIS X 0208」というようなものを入れる。
---
> たとえば「ここから先は ASCII」「ここから先は JIS X 0208」という意味の、区切り用のコードを入れる。
96c96
< という2通りの対策があります。さらに、
---
> という2通りの対策が考えられます。さらに、
101c101
< という細かい規格を決めたもの、それがエンコーディングです。
---
> という細かな規格を決める必要があります。
103,104c103,105
< エンコーディングには、主に3種類あります。
< JIS と Shift_JIS と EUC-JP です。
---
> このような、複数の文字集合を同時に扱うための規則のことを「エンコーディング」と呼びます。
> <P>
> エンコーディングには、主に3種類あります。ISO-2022-JP と Shift_JIS と EUC-JP です。

No. 4773 # べた 2007/03/17 (土) 17:20:13
readコマンドを使ってファイルから読み込みを行っています。
読み込んだ件数を出力しようとしているのですが、どうしても
0件となってしまいます。
どこがいけないのでしょうか。どう直せばよいのでしょうか。

-----------------------------------
#!/bin/sh
#

FILE="/tmp/sample.csv"

i=0
while read LINE
do

        編集処理

        表示処理

        i=`expr ${i} + 1`

done < ${FILE}

echo "${i} 行読み込みました。"

No. 4774 # べた 2007/03/18 (日) 11:26:27
>>4773 べた

whileとかforのループ内で使用した変数は、
ループ終了後(ループを抜けた後)参照する
ことはできないのでようか。

できるとした場合、どうすればいいのですか。

No. 4775 # 2007/03/19 (月) 23:45:28
>>4774 べた
私もあまり詳しくないのでしりません。
kshでできたような。

http://search.luky.org/linux-users.9/msg06099.html

で、似たことが質問されていますので確認してみては。

No. 4776 # zsh 2007/03/20 (火) 10:37:41
>>4774 べた
最近シェルスクリプト触ってないんですが、
多分これでOKかと。

------
i=0
exec 3<&0 0<$FILE
while read LINE; do
        :
done
exec 0<&3 3<&-
echo $i
------

No. 4778 # べた 2007/03/20 (火) 17:35:18
>> 4776

ありがとうございます。
上手く行きました。

また、以下でも出来ました。

-------------
i=0
exec < ${FILE}
while read LINE
do

        echo ${LINE}
        i=`expr ${i} + 1`

done

echo ${i}
-------------

No. 4779 # める 2007/03/31 (土) 16:14:20
はじめまして。
質問があります。

よくあるポートモニターなどはどのように作っているのでしょうか。
また、自分のパソコンが通信しているデータを見ることができますか?

No. 4780 # べた 2007/04/10 (火) 16:24:19
Perlなのですが、sync(fsync?)を使って
書き込みを実現しようとしています。
書き込み後、正しく書けたか、ファイルの比較や
サイズの取得をやろうとしています。

今一、Perlのモジュールとかライブラリとかが
わかりません。
参考になるものありませんか。
また、どのようにすればよいですか。

No. 4781 # べた 2007/05/17 (木) 16:52:39
findコマンドの「-perm」指定での検索について

findコマンドで、ファイルの権限の検索をする場合、
ユーザ、グループ、その他の所有者に権限を設定して
実施しますが、ユーザ、グループ、その他所有者を
表す「u」、「g」「o」の前に、「-」があるかないかで
状態が変わります。
「u」、「g」「o」の前の「-」にはどのような意味が
あるのでしょうか。

# find . -type f -perm o+w
# find . -type f -perm -o+w

# find . -type f -perm -g+w,o+w
# find . -type f -perm -g+w,-o+w

No. 4782 # 68user 2007/05/17 (木) 22:34:02
>>4781 べた
http://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html
がわかりやすいかと思います。
    -perm -mode
        mode で指定されている許可属性ビットのすべてがファイルでも立っていたら真。
    -perm +mode
        mode で指定されている許可属性ビットがファイルでどれか一つでも立っていたら真。

No. 4783 # のみ 2007/05/19 (土) 03:02:10
おしえてください

No. 4784 # のみ 2007/05/19 (土) 03:30:10
VMwareServer(無償版)を使ってlinux4を2台(A、B)を仮想環境を使ってインストール
しました。(ethernetはnetwork connectionはHost-only)
linuxのファイアウォールを無効にし、bindをカスタムでインストールし
特に設定を変更しないで、/var/named/etc/chroot/etcフォルダにnamed.conf
を作成しました。
AサーバのVゾーンの問い合わせについては、zoneファイルから名前解決はできますが、
Xゾーンについてはforwardを使ってBサーバに転送するように設定しましたが
Xゾーンの名前解決ができません。(Xゾーンについては、Aサーバからの問い合わせ
に関しては、Xzoneファイルで解決するように設定してあります)

AサーバからXゾーンPCに対してdigコマンドを実行すると、
AUTHORITY SECTION : 518400 IN NS F.ROOT−SERVER.NET
・・・・
が記録されます。

何か原因等は考えられるでしょうか。

ちなみにforwardの設定は以下のようにしてあります。
ご教授のほう、よろしくお願いします。

zone "X" {
                type forward;
                forward only;
                forwarders {
                                0.0.0.0; #Bサーバのアドレス 
                  };

No. 4785 # のみ 2007/05/21 (月) 01:06:52
解決しました。
recusionがnoになっていたようです。

No. 4786 # べた 2007/05/21 (月) 12:22:23
>4782
ありがとうございます。
読んでみます。

No. 4787 # べた 2007/05/21 (月) 12:22:47
>>4782 68user
ありがとうございます。
読んでみます。

No. 4788 # べた 2007/05/21 (月) 13:00:51
シェルで、FTPを自動実行しています。

FTPの接続が失敗した場合、ログイン・パスワードが間違っていた場合、
getするファイルが存在しなかった場合など、異常を判断したいのですが、
例えば、
0:正常終了
1:実行エラー
みたいな感じで、、、。
リターンコードを取得することができるのでしょうか。

UNIXのFTPですとファイル転送に失敗してもリターンコードが、”0”が
返ってくると聞いたのですが、最後に、byeを実行しているので、"0”で
返ってきます。

以下のような内容でやっています。
ftp -v -n [IPアドレス] <<END > /dev/null 2>&1
user [ユーザ名] [パスワード]
cd [リモートディレクトリ]
lcd [ローカルディレクトリ]
get [getするファイル名]
bye
END

エラーだけをファイルに出力してみたのですが、接続エラーしかでず、
ログインの失敗やファイルが存在しないエラーは出力されませんでした。
ftp -v -n [IPアドレス] <<END 2>ftp_error.log > /dev/null >&1

すべてのFTP結果ログをファイルに出力し、該当の処理のエラーメッセージ
があるかないかをgrepでみるしかないのでしょうか。

Not connected.
530 Login incorrect.
Login failed.
530 Please login with USER and PASS.
550 getするファイル名: No such file or directory.

No. 4789 # 68user 2007/05/21 (月) 23:01:43
>>4788 べた
ftp コマンドを使う限りは
> すべてのFTP結果ログをファイルに出力し、該当の処理のエラーメッセージ
> があるかないかをgrepでみるしかないのでしょうか。
が無難です。また、どのようなエラーがどこで発生したかをプログラム上で
突き止めようとせず、行頭の 4xx か 5xx にマッチするものがあれば全て
エラーとすることをお勧めします。

これ以上を求めるならば、Perl + Net::FTP モジュールなどで FTP クライアントを
作成するのがよいとわたしは思います。

No. 4790 # べた 2007/05/22 (火) 18:48:35
>> 4789
ありがとうございます。
必要な、エラーすべてをgrepしようと考えていました。
行頭の 4xx か 5xx にマッチするものがあれば全てエラー
とするでやつてみます。

ちなみに、接続エラー(open)ですが、これは、4xxとか5xx
にならないのですが、メッセージの内容で見た方がよいの
でしょうか。

No. 4791 # 68user 2007/05/23 (水) 02:27:15
>>4790 べた
> ちなみに、接続エラー(open)ですが、これは、4xxとか5xx にならないの
> ですが、メッセージの内容で見た方がよいのでしょうか。
数年ほど前に同じようなことをやっていましたが、そのときはどうやったの
だったか…。
    ・ftp コマンドの終了ステータスが >0 ならエラー
    ・2xx がひとつもなかったら認証以前で失敗とみなしてエラー
のいずれかだったような気がします。

No. 4792 # べた 2007/05/23 (水) 13:51:17
>>4791 68user

>・ftp コマンドの終了ステータスが >0 ならエラー
>・2xx がひとつもなかったら認証以前で失敗とみなしてエラー
ありがとうございます。

なるほど、2xxがなかったらですか。
確かに、接続エラーということは、レスポンスコードが出てなかった
ので、レスポンスコードがなければで良いかも知れません。
UNIXのOSによるかも知れませんが。
環境は、Solaris8 です。

No. 4793 # 保守見習い 2007/05/24 (木) 22:44:47
AIX5.3の環境にて下記のようなファイルシステムをマウントしています。
/app
/app/log
auto mount=trueの設定です。

OS再起動後、/appがマウントされていなかったので、/etc/filesystemsを
確認したところ、/app/logの定義が/appの定義よりも前に記述されいたため、
/app/logが先にマウントされてしまい、/appのマウントに失敗したようです。
一旦、/app/logをアンマウントし、/app, /app/logの順番でマウントしました。

次回の再起動時に正常にマウントできるように、/etc/filesystemsを直接、
編集して正しい順序に設定しようと考えていますが上記ファイルシステムが
マウントされたままの状態で作業を行なっても大丈夫か教えて頂けますでしょうか?

No. 4794 # 68user 2007/05/24 (木) 23:17:24
>>4793 保守見習い
AIX は知りませんが、マニュアルを読む限りでは他 UNIX 系システムの
/etc/fstab と同様に、
    ・ブート時の mount 順序を決める
    ・ブート時の mount の設定を記述する
    ・mount コマンド実行時に各種オプションが省略された場合の
        デフォルト値を記述しておく
という役割のようなので問題ないでしょう。

http://publib16.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/files/aixfiles/filesystems.htm

No. 4795 # 保守見習い 2007/05/25 (金) 23:25:00
>>4794 68user
ご意見ありがとうございます。
ファイルシステムをマウントしたまま、/etc/filesystemsを編集し、
問題なく無事作業が完了しました。

No. 4796 # ふくし 2007/05/26 (土) 15:42:08
おひさしぶりです。
わからないことができると質問しに現れてすみません。
よろしくお願いします。

C:\>perl -v

This is perl, v5.8.8 built for MSWin32-x86-multi-thread
(with 50 registered patches, see perl -V for more detail)

Copyright 1987-2006, Larry Wall

Binary build 820 [274739] provided by ActiveState http://www.ActiveState.com
Built Jan 23 2007 15:57:46

で、以下のようなプログラムを書きました。
-------------------------------------------------- Foo.pm
#! perl -w

use strict "subs";
package Foo;
use base Exporter;
our @EXPORT = qw($bob);
our $bob = "#123456789";

1;

-------------------------------------------------- bar.pl
#! perl -w

use strict;
use Foo;

print "bob: $bob \n";

すると、以下のようなエラーになります。

C:\>bar.pl
Unknown error
Compilation failed in require at C:\bar.pl line 6.
BEGIN failed--compilation aborted at C:\bar.pl line 6.

Foo.pm の use strict 'subs'; を無効にするとなぜか正常に動作します。

C:\>bar.pl
bob: #123456789

何が悪いかお分かりでしょうか。

別に use strict 'subs' をやめればいいじゃん・・・
というハナシなんですが、
実際の元のプログラムはもっと大きくて(当たり前 ;;;)、
  use strict;
でずっとやってきていたので・・・。

何かわかりましたらよろしくお願いいたします。

No. 4797 # ふくし 2007/05/27 (日) 23:42:13
追記です。
どうも use base Exporter; が use strict 'subs' に引っかかるらしく

-------------------------------------------------- Foo.pm
#! perl -w

package Foo;

use base Exporter;

use strict "subs";

our @EXPORT = qw($bob);
our $bob = "#123456789";

1;

だと動作します。あと use base をあきらめて
-------------------------------------------------- Foo.pm
use strict "subs";
package Foo;

use Exporter;
our @ISA = qw(Exporter);

our @EXPORT = ('$bob');
our $bob = "#123456789";

1;

でも動作します。
ううーん。

No. 4798 # 通りすがりのプログラマ 2007/06/10 (日) 20:42:48
kqueue の説明の所
timeval は tv_sec, tv_usec で分解能 10^-6 == micro second
timespec は tv_sec, tv_nsec で分解能 10^-9 == nano second
実際の分解能は処理系依存

No. 4799 # べた 2007/06/13 (水) 17:16:21
awk/nawkを使って編集をしています。
ファイルから読み込み、読み込んだ内容を判断して
printf関数を使って表示しています。
例えば
    { \
        printf("XXX:%s\nxxx:%s\nxxx:%s\n・・・・\n", \
        $1,$2,$s・・・・); \
    } \
のように、値の前にコメント付けて表示しています。

この表示内容を追加したところ、
「Word too long」
のメッセージが出力され動かなくなりました。
メッセージの通り、printf関数で表示する内容が長すぎるためだと
思うのですが、原因は、その通りでしょうか。
実際、何バイト(何文字)までなのでしょうか。
また、対処するにはどうしたらよいのでしょうか。

環境は、
    Solaris8、csh

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 4800 # べた 2007/06/13 (水) 17:30:24
>>4799 べた
補足です。

メッセージの通り1行が長いのがいけないのではと
フィールドごとに表示しようとしたのですが、
例えば
    { \
        printf("xxx:%s\n",$1); \
        printf("xxx:%s\n",$2); \
        printf("xxx:%s\n",$3); \
            :
            :
    } \

やはり、
「Word too long」
のメッセージが出力され動かなくなりました。

Prev< No. 4701〜4800> Next  [最新発言に戻る] [過去ログ一覧]