68user's page 掲示板

Prev< No. 1151〜1155> Next  [最新発言に戻る] [過去ログ一覧]
No. 1151 # gongo [E-mail] 2000/09/10 (日) 00:37:06
@68user様
>FreeBSD なら ports か packages でインストールしましょう。
なるほど、わかりました。
あぁ、でも勝手にマシンに入れちゃうとまずいかも・・・。
私のマシンではないので様子を見てインストールできたらやってみます。

No. 1152 # konan [E-mail] 2000/09/10 (日) 02:08:28
HTTP クライアントを作ってみよう(2)
http://www2.startshop.co.jp/~68user/net/http-2.html

のhttp-client.plを実行すると下記のエラーで止まってしまいます。
Use of uninitialized value in subroutine entry at http-client.pl line 14.
Use of uninitialized value in concatenation (.) at http-client.pl line 21.

対策方法をお知らせください。

perlはperl, v5.6.0 built for MSWin32-x86-multi-threadを使っています。
OSはWin98SEです

No. 1153 # 68user 2000/09/10 (日) 02:30:28
こちらの perl-5.6 では動いているので、おそらく 7行目の
    $port = getservbyname('http','tcp');
で値が取得できていないんでしょう。
    $port = getservbyname('http','tcp') || 80;
でどうですか。

No. 1154 # konan 2000/09/10 (日) 03:23:28
>$port = getservbyname('http','tcp') || 80;
>でどうですか。

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

ところでこのスクリプトを会社の2台のUNIXで走らせたら
1台は動作してもう一台はUse of uninitialized valueの
エラーで止まってしまいました。それではとWINDOWSでやって
みたら同じエラーで止まってしまいました。原因がわからないので
質問をさせて頂きました。WSによって動いたりそうでなかったり
する原因は何なのかな?っと言う新たな疑問がありますが
宜しければお知らせください。

No. 1155 # 68user 2000/09/10 (日) 03:29:44
man getservbyname すればわかりますが、この関数は
/etc/services (NIS を使っているなら ypcat services の
結果) を読むだけの関数なので、/etc/services がオープン
できないとか、ファイルはあるけど中身に
    http 80/tcp
というエントリがない、などというときポート番号の取得に
失敗します。

サンプルとはいえ、本来は getservbyname に失敗したら 80 に
決め打ちするか、あるいは die すべきですね。次回更新時に
直しておきます。

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