プログラム質問箱一括表示
[表示範囲:487〜564][スレッドモード]


[RE] フォロー記事投稿 記事のキャンセル
From: いしどう <ishidou@jpn.hp.com>
Subject: Re: やっぱりPerl書かなきゃ・・・?
Date: 1998/03/27 20:25:20
Reference: mesh.program/00485

いしどう@そろそろ帰ろうっと。

3月27日に、こじろぉさんは書きました。

>素速いフォローありがとうございます(^-^

あ、どういたしまして (_ _) ちょうどいま使ってたんで。

>cgi-lib.plを使って単純にWebサーバの固定ディスクに
>ファイルを転送するには具体的にどんなソースになるんでしょう?(^-^;;
>(え?Perlを一から勉強しろって?)(^-^;;;

上でご紹介したページに、Perl 4の例とPerl 5 の例が出てます。

>>同じような環境です。
>># Perl for Win32 Build315 の Perl IIS で rename() が動かなくって、はまってしまいました (^o^)
>
>おぉ!NTユーザーだ(^-^
>ASPでも出来ますかね?(^-^;;;

さぁ… (^o^;; 理屈からいえばできるんでしょうが、どんなスクリプトを書けばいいのか、
とんと見当がつきません。
いま作ってる物は UNIX でも動くようにと Perl の CGI-BIN にしてるもんで…(パス名さえ
変えれば UNIX でも動く…つもり)


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: NT関係会議室は...
Date: 1998/03/28 00:05:58
Reference: mesh.program/00486

# ファイルアップロード関係は次版のうぇぶ会議室には入れると言いつつも、
# まだインプリメントしてないんで(汗)役立たずですが...

3月27日に、Hironobuさんは書きました。

>ところで(これが本題)NT Option packなるものが出ていますが、インストール
>されました?
>IIS4もあるらしいのですが、私のところではまだ怪しそうなので入れていません。
>IISにはなにかと機能足らずで困ったちゃんですが、4でいくぶんか
>改善されていればいいのですが。
>
NT関係の話題なら、寺田さんの所の会議室が詳しいので、そちらで聞いてみては
いかがでしょうか?

# って、実は(あたしはROMに徹している)MLの方で話題が出てたので、
# 聞けばどなたか答えてくれると思います。(^^)


[RE] フォロー記事投稿 記事のキャンセル
From: TAKu <taku@mail.club.or.jp>
Subject: Re: ブラウザでアップロード
Date: 1998/04/27 06:15:46
Reference: mesh.program/00486

3月27日に、Hironobuさんは書きました。

そんなライブラリを知らずに、チマチマ解析してスクリプトを書いた頃が懐かしい・・・。
(cgi-lib.pl的なものの存在は知ってたのですが・・・。)
うまくいったと思って、(いつもはネスケなんですが)IE3の場合に
微妙に出力が違うようで、うまくいかなかったりして、やたらと面倒だった
記憶があります。

#うーむ。もうすぐトップのカウンタがあふれますね(^^)


[RE] フォロー記事投稿 記事のキャンセル
From: satoshi kusunoki <negi@cup.com>
Subject: Re: REMOTE_HOST について
Date: 1998/05/01 16:15:36
Reference: mesh.program/00210

随分昔に にあさんは書きました。
>Meshで使っているNetscape Commerceには、当然DNS逆引きの機能は備わっていますし、
>実際最初は逆引きを行なっていました。ところがある時点から逆引きをするのを止めています。
>これはセキュリティー上の配慮と言うよりネットワーク負荷が主な原因だと考えています。

さっき気がついたのですが、infowebのユーザーホームページでは
gethostbyaddr関数を使っても逆引きでないようになっている。

自分で関数を作る代りになるものはないでしょうか?


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: REMOTE_HOST について
Date: 1998/05/01 23:39:59
Reference: mesh.program/00490

5月1日に、satoshi kusunokiさんは書きました。

>さっき気がついたのですが、infowebのユーザーホームページでは
>gethostbyaddr関数を使っても逆引きでないようになっている。
>自分で関数を作る代りになるものはないでしょうか?
>
つまり、サーヴァのOS自体がDNSを引かない設定に変えられてしまった、と
言うことですか?

うーむ、そうまでしてDNSサーヴァの負荷を下げようとしている時に、自分で
DNSを引くような設定をしてしまって良いのかどうか? と言う問題はありますね。

また、実際問題としてDNSサーヴァとやり取りして名前解決を計るのは
面倒な作業ですから、出来合いのルーティン群を使うのが簡単ですが、
そう言うルーティン群はデフォルトではインストールされていないで
しょうから、自分でインストールしなくてはなりませんね。(^^;;

取りあえず、perl5を使っているのなら、Net::DNS(現行ヴァージョンは
Net-DNS-0.12.tar.gzですね)を使うのが簡単だと思います。

例えば、以下のようなテストスクリプトを書いて見ました。

#!/usr/local/bin/perl

use Net::DNS;

$address = '133.205.10.1'; # 試しにここのアドレスを入れてみましょうか。
$nameserver = '127.0.0.1'; # ここはもちろん実際にはDNSサーヴァのIPアドレスにします。

printf("%s -> %s\n", $address, &gethost($address));

exit(0);

sub gethost {
	my ($address) = @_;
	my $res = new Net::DNS::Resolver;
	$res->nameservers($nameserver);
	my $query = $res->search($address, 'PTR');
	if ($query) {
		foreach ($query->answer) {
			next if ($_->type ne 'PTR');
			return($_->rdatastr);
		}
	}
	return($address);
}

実行すると、

133.205.10.1 -> www2.biglobe.ne.jp.

と出力されました。(^^)

# perl -MCPAN -e 'shell' するようになってから、うちのサーヴァは
# Moduleてんこ盛りになっています。新しいのが出るとすぐ入れるし。(^^;;;


[RE] フォロー記事投稿 記事のキャンセル
From: satoshi kusunoki <negi@cup.com>
Subject: Re: REMOTE_HOST について
Date: 1998/05/02 01:33:33
Reference: mesh.program/00491

にあさん、ものすごくお久しぶりです。

5月1日に、にあさんは書きました。
>つまり、サーヴァのOS自体がDNSを引かない設定に変えられてしまった、と
>言うことですか?

perlで「gethostbyaddr(pack('C4',split(/\./,$host)),2)」式のことをや
ると""が返ります。shellを開放していないし、あそのこOSはSolarisだったと
思いますが手もとにそのコンパイラーもないので、それ以上は詮索していません。

>うーむ、そうまでしてDNSサーヴァの負荷を下げようとしている時に、自分で
>DNSを引くような設定をしてしまって良いのかどうか? と言う問題はありますね。

一人がやるとあっというまにひろまるでしょうね。そしてまた禁止事項が増える。

.htaccessにもIPアドレスを書くことになりますから、エライ面倒。最近逆引きし
ないプロバイダーが増えているそうですが、gethostbyaddrまで使えなくなってい
るところは珍しい?

>取りあえず、perl5を使っているのなら、Net::DNS(現行ヴァージョンは
>Net-DNS-0.12.tar.gzですね)を使うのが簡単だと思います。

スクリプトまでご教示いただいて恐縮ですが、shellを開放していない||同じOSが
手もとにない、のでインストールは無理ですね。あきらめましょう。


[NEW] フォロー記事投稿 記事のキャンセル
From: でんでん <ray@design.office.ne.jp>
Subject: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/15 00:59:02

CGIでメール送信する時のヘッダに関する質問です。

Cc:ヘッダなどで、複数の宛先を指定したい場合、どういうふうに
出力してやればいいのでしょうか?

質問はこれだけです(^^;

よろしくお願いします。m(_ _)m


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/15 04:23:28
Reference: mesh.program/00493

5月15日に、でんでんさんは書きました。

>Cc:ヘッダなどで、複数の宛先を指定したい場合、どういうふうに
>出力してやればいいのでしょうか?
>
カンマ(",")で区切って複数の宛先を書けば良いです。

...って、きっとそう言うことを聞きたいのじゃ無いですよね。(^^;


多分聞きたいことは...

Q. Cc: に沢山のアドレスを書くと行がとても長くなってしまうのですが?

A. 任意の空白の所で継続行の処理が出来ます。例えば、

Cc: user1@host1.domain1, user2@host2.domain2, user3@host3.domain3

は

Cc: user1@host1.domain1,
	user2@host2.domain2,
	user3@host3.domain3

の様にfoldする事が出来ます。

...とか

Q. To: や Cc: に書いたアドレスにメールが配送されないんですが?

A. sendmail を使っている場合、実際に配送されるアドレス(エンペローブに書かれる
宛先アドレス)とメール本文に書かれる宛先アドレスとは独立した処理になっています。

例えば、

/usr/lib/sendmail user1@host1.domain1 user2@host2.domain2 user3@host3.domain3

として実行すれば、本文中の To: や Cc: に関わり無く、3人に送られます。
本文中のTo: や Cc:、Bcc: を解釈してそこに送りたいなら、

/usr/lib/sendmail -n -t

としてコマンドラインでは宛先を付けずに呼び出します。
またCGI等で固定の宛先ではなく、変数で指定できる宛先に送る場合に、

/usr/lib/sendmail $email

等としてしまうと、重篤なセキュリティホールになってしまいますので、必ず、
本文中の宛先を解釈するモードを使って送り、任意文字列が sendmail の引数として
渡らないようにして下さい。
# 送り先を本文中に見せたくない場合には Bcc: を活用しましょう。

...とかでは無いでしょうか?


[RE] フォロー記事投稿 記事のキャンセル
From: でんでん <ray@design.office.ne.jp>
Subject: Re: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/15 11:50:44
Reference: mesh.program/00494

早速のレスありがとうございます。
(長いですが引用します)


5月15日に、にあさんは書きました。

>5月15日に、でんでんさんは書きました。
>
>>Cc:ヘッダなどで、複数の宛先を指定したい場合、どういうふうに
>>出力してやればいいのでしょうか?
>>
>カンマ(",")で区切って複数の宛先を書けば良いです。
>
>...って、きっとそう言うことを聞きたいのじゃ無いですよね。(^^;
>
>
>多分聞きたいことは...
>
>Q. Cc: に沢山のアドレスを書くと行がとても長くなってしまうのですが?
>
>A. 任意の空白の所で継続行の処理が出来ます。例えば、
>
>Cc: user1@host1.domain1, user2@host2.domain2, user3@host3.domain3
>
>は
>
>Cc: user1@host1.domain1,
>	user2@host2.domain2,
>	user3@host3.domain3
>
>の様にfoldする事が出来ます。
>
>...とか
>
>Q. To: や Cc: に書いたアドレスにメールが配送されないんですが?
>
>A. sendmail を使っている場合、実際に配送されるアドレス(エンペローブに書かれる
>宛先アドレス)とメール本文に書かれる宛先アドレスとは独立した処理になっています。
>
>例えば、
>
>/usr/lib/sendmail user1@host1.domain1 user2@host2.domain2 user3@host3.domain3
>
>として実行すれば、本文中の To: や Cc: に関わり無く、3人に送られます。
>本文中のTo: や Cc:、Bcc: を解釈してそこに送りたいなら、
>
>/usr/lib/sendmail -n -t
>
>としてコマンドラインでは宛先を付けずに呼び出します。
>またCGI等で固定の宛先ではなく、変数で指定できる宛先に送る場合に、
>
>/usr/lib/sendmail $email
>
>等としてしまうと、重篤なセキュリティホールになってしまいますので、必ず、
>本文中の宛先を解釈するモードを使って送り、任意文字列が sendmail の引数として
>渡らないようにして下さい。
># 送り先を本文中に見せたくない場合には Bcc: を活用しましょう。
>
>...とかでは無いでしょうか?


1番(宛先のセパレーター)と、3番(コマンド行部分とヘッダ部分の宛先)、
当たりです(^^; 質問よくなかったみたいで、ごめんなさい。

メールやCGI関連のサイト回ったんですが、宛先のセパレーターに触れ
てるサイトが見付からずに困ってたんです。
(でんでんが おバカなだけかな?(^^; なんか最近、こういうちょっとした
トコでよくつまずきます(TT))

あと、セキュリティーホールの件は、おっけーです。

えっと、上に書かれている記述から察するに、コマンド行部分では、「ス
ペース」で、ヘッダ部分では「カンマ」で良いのですよね?
もし間違ってたらレスください(^^;

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


[RE] フォロー記事投稿 記事のキャンセル
From: ^\^ Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/15 12:05:44
Reference: mesh.program/00495

5月15日に、でんでんさんは書きました。


>
>5月15日に、にあさんは書きました。
>
>>5月15日に、でんでんさんは書きました。
>>
>>>Cc:ヘッダなどで、複数の宛先を指定したい場合、どういうふうに
>>>出力してやればいいのでしょうか?
>>>
>>カンマ(",")で区切って複数の宛先を書けば良いです。
>>
>>...って、きっとそう言うことを聞きたいのじゃ無いですよね。(^^;
>>
>>
>>多分聞きたいことは...
>>
>>Q. Cc: に沢山のアドレスを書くと行がとても長くなってしまうのですが?
>>
>>A. 任意の空白の所で継続行の処理が出来ます。例えば、
>>
>>Cc: user1@host1.domain1, user2@host2.domain2, user3@host3.domain3
>>
>>は
>>
>>Cc: user1@host1.domain1,
>>	user2@host2.domain2,
>>	user3@host3.domain3
>>
>>の様にfoldする事が出来ます。
>>
>
>えっと、上に書かれている記述から察するに、コマンド行部分では、「ス
>ペース」で、ヘッダ部分では「カンマ」で良いのですよね?
>もし間違ってたらレスください(^^;
>

 一応 念のため(重箱の隅っこだけど)

 2行目以降は確か先頭にスペースが必須(だったハズ)
 先頭の空白文字でその前の行の続きである事を意味する。

 こうゆう事はRFCにかなり詳しく書いてあります
 MIMEヘッダーで検索すれば 沢山出てきます。
 私もRFCを参照してメール送信CGIを作成しました。


[RE] フォロー記事投稿 記事のキャンセル
From: でんでん <ray@design.office.ne.jp>
Subject: Re: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/15 17:18:54
Reference: mesh.program/00496

5月15日に、^\^ Shigeさんは書きました。

> 一応 念のため(重箱の隅っこだけど)
>
> 2行目以降は確か先頭にスペースが必須(だったハズ)
> 先頭の空白文字でその前の行の続きである事を意味する。
>
> こうゆう事はRFCにかなり詳しく書いてあります
> MIMEヘッダーで検索すれば 沢山出てきます。
> 私もRFCを参照してメール送信CGIを作成しました。


ありがとうございました。
検索かけてみますね。(^^;


[RE] フォロー記事投稿 記事のキャンセル
From: でんでん <ray@design.office.ne.jp>
Subject: Re: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/15 21:58:33
Reference: mesh.program/00497

あと、もうひとついいですか?(^^;

えっと、To:の場合は、宛先を複数指定できないんでしょうね?
とすると、宛先を1つづつ入れてメール1通丸ごとループさせる
しかないんでしょうか。

それと、Bcc:の場合は、Cc:と同じように指定すればいいんですか?
Bcc: foo@foo.foo, foo@foo.foo みたいな感じで・・・。

レスお願いしますm(_ _)m

英語が全くダメなもんで、日本語でsendmailとかの解説してる
所とかないもんでしょうか・・・(^^;


[RE] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/16 00:09:56
Reference: mesh.program/00498

5月15日に、でんでんさんは書きました。

>あと、もうひとついいですか?(^^;
>
>えっと、To:の場合は、宛先を複数指定できないんでしょうね?
>とすると、宛先を1つづつ入れてメール1通丸ごとループさせる
>しかないんでしょうか。
>

 できます 私はやりました

>それと、Bcc:の場合は、Cc:と同じように指定すればいいんですか?
>Bcc: foo@foo.foo, foo@foo.foo みたいな感じで・・・。
>

 同じです キット こっちはやってないですが
 普段使ってるメーラーの作成するヘッダー見れば一目瞭然(Toの方も)

>レスお願いしますm(_ _)m
>
>英語が全くダメなもんで、日本語でsendmailとかの解説してる
>所とかないもんでしょうか・・・(^^;

 日本語のmanがあればいいんでしょうけどねぇ(^_^;)

 私は中学生以下の英語レベルですが
 それでも何とかなりましたよ?

 取り敢えずは,にあさんのRes.されてるオプションでいけるハズですがね


[RE] フォロー記事投稿 記事のキャンセル
From: でんでん <ray@design.office.ne.jp>
Subject: Re: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/16 02:46:41
Reference: mesh.program/00499

レスありがとうございます。

5月16日に、Shigeさんは書きました。

>>えっと、To:の場合は、宛先を複数指定できないんでしょうね?
>>とすると、宛先を1つづつ入れてメール1通丸ごとループさせる
>>しかないんでしょうか。
>
> できます 私はやりました

できるんですか? Ccと同じ要領でですか?
届くメールのヘッダ部分は、単一の宛先しか表示されないんですか?


>>それと、Bcc:の場合は、Cc:と同じように指定すればいいんですか?
>>Bcc: foo@foo.foo, foo@foo.foo みたいな感じで・・・。
>>
>
> 同じです キット こっちはやってないですが
> 普段使ってるメーラーの作成するヘッダー見れば一目瞭然(Toの方も)

これも、ちゃんとブラインドされるんでしょうか?
(それがちょっと心配)

やってみればわかるんでしょうね(^^;
いろいろやってみます(^^;;


[RE] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/16 10:57:01
Reference: mesh.program/00500

5月16日に、でんでんさんは書きました。

>5月16日に、Shigeさんは書きました。
>
>>>えっと、To:の場合は、宛先を複数指定できないんでしょうね?
>>>とすると、宛先を1つづつ入れてメール1通丸ごとループさせる
>>>しかないんでしょうか。
>>
>> できます 私はやりました
>
>できるんですか? Ccと同じ要領でですか?
>届くメールのヘッダ部分は、単一の宛先しか表示されないんですか?
>
>
>>>それと、Bcc:の場合は、Cc:と同じように指定すればいいんですか?
>>>Bcc: foo@foo.foo, foo@foo.foo みたいな感じで・・・。
>>>
>>
>> 同じです キット こっちはやってないですが
>> 普段使ってるメーラーの作成するヘッダー見れば一目瞭然(Toの方も)
>
>これも、ちゃんとブラインドされるんでしょうか?
>(それがちょっと心配)
>

 ToもCcもBccも その意味がちょっと違うだけで基本的に同じように使います。
 Toで複数の宛て先を指定するとCcで複数指定した場合と同じように
 全部見えるはずです。(使用するメーラーによって見え方は違うでしょうけど)

 ブラインドは・・・うーんsendmailが切り落とすのかな?
 とすれば、よほどの事が無い限りブラインドされるはずです。
 前にも書いた通り、先頭に空白文字があればその前の行の続きを意味しますから

 それではRFCも示しておきましょう
 2045,2046,2047,2048,2049辺りでその中で古いドキュメントも
 示されていますから、そちらも参照して下さいね(手抜きだぁ)

 他には、上記の2045〜2049の中で拾ったキーワードを元に探せば色々と・・・
 私の手元にあるのは英語版ですが、日本語に訳しているグループがあるので
 日本語版もあるかもしれません(全部は約されていないです)

>やってみればわかるんでしょうね(^^;
>いろいろやってみます(^^;;

 手前味噌ですが 私が作ったメールCGIはここにあります。
 あんまりきれいなコードではありませんが、まぁ参考になれば・・・


[RE] フォロー記事投稿 記事のキャンセル
From: でんでん <ray@design.office.ne.jp>
Subject: Re: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/16 15:51:00
Reference: mesh.program/00501

5月16日に、Shigeさんは書きました。

> ToもCcもBccも その意味がちょっと違うだけで基本的に同じように使います。
> Toで複数の宛て先を指定するとCcで複数指定した場合と同じように
> 全部見えるはずです。(使用するメーラーによって見え方は違うでしょうけど)
>
> ブラインドは・・・うーんsendmailが切り落とすのかな?
> とすれば、よほどの事が無い限りブラインドされるはずです。
> 前にも書いた通り、先頭に空白文字があればその前の行の続きを意味しますから

なるほどなるほど。
いろいろと試してます。が、苦戦してます(^^;

もうすこしいぢってみます・・・。


> それではRFCも示しておきましょう
> 2045,2046,2047,2048,2049辺りでその中で古いドキュメントも
> 示されていますから、そちらも参照して下さいね(手抜きだぁ)
>
> 他には、上記の2045〜2049の中で拾ったキーワードを元に探せば色々と・・・
> 私の手元にあるのは英語版ですが、日本語に訳しているグループがあるので
> 日本語版もあるかもしれません(全部は約されていないです)
>
>>やってみればわかるんでしょうね(^^;
>>いろいろやってみます(^^;;
>
> 手前味噌ですが 私が作ったメールCGIはここにあります。
> あんまりきれいなコードではありませんが、まぁ参考になれば・・・

ありがとうございますー。
早速拝見します。


[RE] フォロー記事投稿 記事のキャンセル
From: でんでん <ray@design.office.ne.jp>
Subject: Re: CGIからメール送信・・・の、ヘッダに関する質問
Date: 1998/05/17 03:01:59
Reference: mesh.program/00502

あと、もういっこ・・・(^^;

sendmailのオプションで、-tってのは分かるんですが、
にあさんの書かれてた-nって何ですか?

他にもオプションあるんですか?(ありそうですが)
2日かけてinfoseekやらYahooやら探しまわったんですが、
オプションのこと書いてるサイトを見つけられませんでした(TT)

オプション一覧とか解説とかあるサイトありましたら教えて
ください m(_ _)m
(オプション教えて下さい・・・ってのはずうずうしいかな(^^;;)


[RE] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: CGIからメール送信>sendmailのオプション
Date: 1998/05/17 11:03:10
Reference: mesh.program/00504

5月17日に、でんでんさんは書きました。

>あと、もういっこ・・・(^^;
>
>sendmailのオプションで、-tってのは分かるんですが、
>にあさんの書かれてた-nって何ですか?
>
>他にもオプションあるんですか?(ありそうですが)
>2日かけてinfoseekやらYahooやら探しまわったんですが、
>オプションのこと書いてるサイトを見つけられませんでした(TT)
>

 コマンドオプションはmanコマンドで調べられます。
 telnetで実行できなければmanを実行するCGIを作れば取得できます。

>オプション一覧とか解説とかあるサイトありましたら教えて
>ください m(_ _)m
>(オプション教えて下さい・・・ってのはずうずうしいかな(^^;;)

 因みに

         -n   エイリアス処理を行いません。

 です。
 全部書くのはちょっと・・・(^_^;)かなり長いので気が引ける
 OSによって微妙に違うこともありますし


[RE] フォロー記事投稿 記事のキャンセル
From: でんでん <ray@design.office.ne.jp>
Subject: Re: CGIからメール送信>sendmailのオプション
Date: 1998/05/17 15:01:58
Reference: mesh.program/00505

5月17日に、Shigeさんは書きました。

> コマンドオプションはmanコマンドで調べられます。
> telnetで実行できなければmanを実行するCGIを作れば取得できます。

あ、manでOKなんですか・・・(^^; いやー、サイト探しばっかり
していて見落としていました。早速調べてみます。


> 因みに
>         -n   エイリアス処理を行いません。
>
> です。
> 全部書くのはちょっと・・・(^_^;)かなり長いので気が引ける
> OSによって微妙に違うこともありますし

なるほどなるほど。ありがとうございますー。m(_ _)m


[NEW] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: サーバーエラーって(ーー;
Date: 1998/05/17 01:53:00

Server Errorってなんか 処置できないんでしょうかねぇ?

自分のコードが悪いのかどうかも分からん(^_^;)
・・・Server Errorとする条件を調べればいいのか うーむ


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: サーバーエラーって(ーー;
Date: 1998/05/19 00:05:36
Reference: mesh.program/00503

5月17日に、Shigeさんは書きました。

>Server Errorってなんか 処置できないんでしょうかねぇ?
>
やっぱり、Yasu.FさんのsuEXECパッチを当ててもらうとか。(^^)
# チョットYasu.Fさんの移転先が安定してないようで、アレなんですが。

そういえば、S号機以外で既にSetUID CGIになったサーヴァでもerrors.txtの
サーヴィスをするようになったのでしょうか? > SetUIDサーヴァの皆様。


[RE] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: サーバーエラーって(ーー;
Date: 1998/05/19 00:33:07
Reference: mesh.program/00507

5月19日に、にあさんは書きました。

>5月17日に、Shigeさんは書きました。
>
>>Server Errorってなんか 処置できないんでしょうかねぇ?
>>
>やっぱり、Yasu.FさんのsuEXECパッチを当ててもらうとか。(^^)
># チョットYasu.Fさんの移転先が安定してないようで、アレなんですが。
>
>そういえば、S号機以外で既にSetUID CGIになったサーヴァでもerrors.txtの
>サーヴィスをするようになったのでしょうか? > SetUIDサーヴァの皆様。

 errors.txt使えてます www2h (^_^)v
 おかげさまで余所様で使っていただいてるスクリプトのトラブルシュートがかなり楽に・・・

# 仕事でも同じようなことしてる 私ってば一体(ーー;
# やっぱりPerlはお気楽&お手軽だなぁって感じる今日この頃(^_^;)


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: errors.txtがサポートされましたか。(^^)
Date: 1998/05/19 00:39:52
Reference: mesh.program/00508

5月19日に、Shigeさんは書きました。

>>そういえば、S号機以外で既にSetUID CGIになったサーヴァでもerrors.txtの
>>サーヴィスをするようになったのでしょうか? > SetUIDサーヴァの皆様。
>
> errors.txt使えてます www2h (^_^)v
>
なーるほど、errors.txtのサポートもされてますか。それは良かった。(^^)

# これで心置きなく、Mesh1号機専用ペーヂが閉鎖できる。(^^;
# エラーログのブラウズサーヴィスだけは無いと困る人も居そうだったので。


[RE] フォロー記事投稿 記事のキャンセル
From: TAKu <taku@mail.club.or.jp>
Subject: Re: サーバーエラーって(ーー;
Date: 1998/05/19 01:22:54
Reference: mesh.program/00508

5月19日に、Shigeさんは書きました。

> errors.txt使えてます www2h (^_^)v
> おかげさまで余所様で使っていただいてるスクリプトのトラブルシュートがかなり楽に・・・
>
># 仕事でも同じようなことしてる 私ってば一体(ーー;
># やっぱりPerlはお気楽&お手軽だなぁって感じる今日この頃(^_^;)

 うーん。errors.txtいつのまにか数十行書き込まれてました。
が、どのHTMLからCGI呼び出しのかが分からない・・・。(^^;
もうちょっと情報があると、便利なのになぁ。

ところで、socketまわりを触っているところで、
Connection refused at 〜
というのが何十行もあるのですが、これは、evalで囲めばなんとかなるのかな?

あと、こんなのもありました。これは一体・・・。
〜: Exec format error

ところで、STDERRをSTDOUTに回すようなスクリプトを通してCGIを走らせれば、
エラーメッセージってブラウザから読めますよね。あと、syntax error類は、
localにperlを用意して試した方が早いですよ〜。

#結局、やっかいなのは、たまに起こるServer Error。


[RE] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: errors.txtの利用
Date: 1998/05/19 13:06:49
Reference: mesh.program/00511

5月19日に、TAKuさんは書きました。

>5月19日に、Shigeさんは書きました。
>
>> errors.txt使えてます www2h (^_^)v
>> おかげさまで余所様で使っていただいてるスクリプトのトラブルシュートがかなり楽に・・・
>>
>
> うーん。errors.txtいつのまにか数十行書き込まれてました。
>が、どのHTMLからCGI呼び出しのかが分からない・・・。(^^;
>もうちょっと情報があると、便利なのになぁ。
>
>ところで、socketまわりを触っているところで、
>Connection refused at 〜
>というのが何十行もあるのですが、これは、evalで囲めばなんとかなるのかな?
>
>あと、こんなのもありました。これは一体・・・。
>〜: Exec format error
>
>ところで、STDERRをSTDOUTに回すようなスクリプトを通してCGIを走らせれば、
>エラーメッセージってブラウザから読めますよね。あと、syntax error類は、
>localにperlを用意して試した方が早いですよ〜。
>

 はい localで動くようにdebug用codeを加えて確かめてからUpしてますので
 Syntax Errorは滅多に・・・いや 偶にしか・・・ うーん 時々しか起こしません(^_^;)
 (修正して、その場ですぐUpすると よくやるのがdebug modeのままUpするミス)


 最近のやつは途中経過をSTDERRに出力してるんですが
 OKなのにその先のMsgが出てこないのです。
 (思いもよらないところに問題があるのでは? と考えてしまふ)

>#結局、やっかいなのは、たまに起こるServer Error。

# ですよねぇ(-_-;)


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: CGIのデバッグは...
Date: 1998/05/20 03:24:22
Reference: mesh.program/00513

5月19日に、Shigeさんは書きました。

>5月19日に、TAKuさんは書きました。
>
>>ところで、STDERRをSTDOUTに回すようなスクリプトを通してCGIを走らせれば、
>>エラーメッセージってブラウザから読めますよね。あと、syntax error類は、
>>localにperlを用意して試した方が早いですよ〜。
>
>はい localで動くようにdebug用codeを加えて確かめてからUpしてますので
>Syntax Errorは滅多に・・・いや 偶にしか・・・ うーん 時々しか起こしません(^_^;)
>
やはり、CGIデバッグはlocalにhttpのサーヴァを立てて実行してみるのが
一番楽なような気がします。もちろんターゲットサーヴァの構成に近い物を
手元に持てばより楽ですが、Win32のサーヴァでも有ると無しとじゃずいぶん
違うのではないかしら。今ならWin32でもApache動きますからね。

# 一応手元には、Unix、Win95、Mac上の各種サーヴァ(笑)を取りそろえて居るので、
# 機種間互換性チェックなどには威力を発揮します。

>>#結局、やっかいなのは、たまに起こるServer Error。
># ですよねぇ(-_-;)
>
結局はサーヴァのエラーログを参照しなければならない事態というのは有りますね、やはり。
ボタン、ポン! でエラーログの最後を読めるようにしておくと便利ですね。(^^)


[RE] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: CGIのデバッグは...
Date: 1998/05/20 10:30:55
Reference: mesh.program/00514

5月20日に、にあさんは書きました。

>やはり、CGIデバッグはlocalにhttpのサーヴァを立てて実行してみるのが
>一番楽なような気がします。もちろんターゲットサーヴァの構成に近い物を
>手元に持てばより楽ですが、Win32のサーヴァでも有ると無しとじゃずいぶん
>違うのではないかしら。今ならWin32でもApache動きますからね。
>

 この辺は慣れや考え方の違いでしょうかね?
 私の近所にもperlのdebuggerなんて使った事の無い人がいるし(^_^;)
 (彼はApacheユーザー)

 私はperlのdebugger使ったほうが問題を直視できるから
 簡単なように思えて・・・(頭の中で考えられない奴>私)

# debug用のコードも、環境変数の設定さえ出来れば取り敢えずはOKなので
# 一度作れば後は使い回しのようなもんだし
# 動作確認までできれば、ちょっとしたミスを除いて
# 概ね、一発で動くから なんかうれしい(*^.^*)


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: CGIのデバッグは...
Date: 1998/05/23 01:26:34
Reference: mesh.program/00517

5月20日に、Shigeさんは書きました。

>5月20日に、にあは書きました。
>
>>やはり、CGIデバッグはlocalにhttpのサーヴァを立てて実行してみるのが
>>一番楽なような気がします。もちろんターゲットサーヴァの構成に近い物を
>
>私はperlのdebugger使ったほうが問題を直視できるから
>簡単なように思えて・・・(頭の中で考えられない奴>私)
>
もちろん通常のプログラムとして見た時のデバッグはあらかた済ませた後、
CGIとしてデバッグをする時には、って言うことです。(^^)

# サーヴァが生成するヘッダ類などをいちいち環境変数とか標準入力とかに
# 設定してやるのが面倒なので。(^^;; あ、それとも、そう言うのも一渡り
# セットしてから実行する環境を作っているのかしら?

もっとも、あたしは滅多にデバッガって使わない(使えない)人なので...(^^;;;
# デバッガが必要になるほど大きなプログラムを書いたことが無いともいふ。


[RE] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: CGIのデバッグは...
Date: 1998/05/23 02:23:12
Reference: mesh.program/00519

5月23日に、にあさんは書きました。

>5月20日に、Shigeさんは書きました。
>
>>私はperlのdebugger使ったほうが問題を直視できるから
>>簡単なように思えて・・・(頭の中で考えられない奴>私)
>>
>もちろん通常のプログラムとして見た時のデバッグはあらかた済ませた後、
>CGIとしてデバッグをする時には、って言うことです。(^^)
>

 ですよね(^_^;)(それでもdebuggerいらない人ってすごいと思う)

># サーヴァが生成するヘッダ類などをいちいち環境変数とか標準入力とかに
># 設定してやるのが面倒なので。(^^;; あ、それとも、そう言うのも一渡り
># セットしてから実行する環境を作っているのかしら?
>

 環境変数の設定もdebug codeとしてソースの中に入れています。
 ただ,Postメソッドは面倒なのでGetでやっています。
 その昔は(と言っても数ヶ月ですが)Parseする所まで飛ばして直接変数に設定
 ・・・てな具合で評価してました。

>もっとも、あたしは滅多にデバッガって使わない(使えない)人なので...(^^;;;
># デバッガが必要になるほど大きなプログラムを書いたことが無いともいふ。

 流石にHTTPに関わる所はオフラインでは出来ませんね(^_^;)
 職場でNetworkモニターを使ってデバッグしてます。(仕事もしてます)
 TracePlus32ってのを最近Getしたんですが(まだ試用中)
 使い方が良くないのか,ネスケとかはNGなのかパケットが見えませんでした。
 もう少し使って見様とは思いますが・・・何か良いもの知ってますか?

# でも,結局はServer Errorには悩まされる(ーー;


[RE] フォロー記事投稿 記事のキャンセル
From: TAKu <taku@mail.club.or.jp>
Subject: Re: errors.txtの利用
Date: 1998/05/20 06:27:50
Reference: mesh.program/00513

5月19日に、Shigeさんは書きました。

>> うーん。errors.txtいつのまにか数十行書き込まれてました。
>>が、どのHTMLからCGI呼び出しのかが分からない・・・。(^^;
>>もうちょっと情報があると、便利なのになぁ。

 自分で書いたスクリプトなのですが、www2bではちゃんと動いているのに、
www2sだとServer Errorが頻出します。必ずではなく、かなりの確率で出る
という感じ。しかも、errors.txtには何も書かれていませんでした。
設定がまずいだけのことだけかもしれないのでなんとも言えませんけど、
全く同じ事をやっているのにうまく動くことがあるだけに、妙です。

>>ところで、STDERRをSTDOUTに回すようなスクリプトを通してCGIを走らせれば、
>>エラーメッセージってブラウザから読めますよね。あと、syntax error類は、
>>localにperlを用意して試した方が早いですよ〜。
>>
>
> はい localで動くようにdebug用codeを加えて確かめてからUpしてますので
> Syntax Errorは滅多に・・・いや 偶にしか・・・ うーん 時々しか起こしません(^_^;)
> (修正して、その場ですぐUpすると よくやるのがdebug modeのままUpするミス)
 local用のflagを手で書き換えるより、$ENV{'COMSPEC'}とか見る方が巧いかも。
確実な手ではないですが、自分でやる分には問題ないと思います。
#って、NTにはCOMSPECはあるのだろうか?

 私の場合は、localで動作テストまですることはほとんどないですね。
パターンマッチングが期待通りに動くかどうか試すくらいで。
perl -cw foo.cgiとやると、syntax errorのチェックができます。


[RE] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: サーバーエラーって(ーー;
Date: 1998/05/19 00:46:28
Reference: mesh.program/00507

5月19日に、にあさんは書きました。

>5月17日に、Shigeさんは書きました。
>
>>Server Errorってなんか 処置できないんでしょうかねぇ?
>>
>やっぱり、Yasu.FさんのsuEXECパッチを当ててもらうとか。(^^)
># チョットYasu.Fさんの移転先が安定してないようで、アレなんですが。
>

 ってリンク先を読まずに投稿してしまった(^_^ヾ

 私のページはwww2sにあります。 ですので最初っから恩恵を受けてました。
 が,errors.txtに出力が無いのにServer Errorになってしまうことが多々あるんです。
 これを一概にサーバーのせいにして良いのかどうか・・・

 errors.txtにはコンパイルエラー等の標準エラー出力が繋がってますが
 コンパイルまで通ると 後は要所で dieで殺すなりしてMsgを吐かせないと
 何も情報が得られないのです。
 ・・・流石にOut of memoryは見えます(^_^;)


[NEW] フォロー記事投稿 記事のキャンセル
From: Hironobu <i14hnakagawa@ec.usp.ac.jp>
Subject: 匿名proxyの判断
Date: 1998/05/19 05:18:58

perl cgiの習作を兼ねた、拙作の掲示板にも、最近荒らしが来るように
なりました。
「ああ、これで一人前の掲示板だね。うんうん。」
なんて、悠長なことも言ってられないので、とりあえず匿名proxyってのは
書き込み禁止にしようかと思っています。

webで調べたところ、
HTTP_PROXY
HTTP_X_FORWARDED_FOR
HTTP_FORWARDED
あたりの環境変数をチェックすれば良さそうですね。

HTTP_PROXYに串名が入って、HTTP_FORWARDEDが空なら匿名proxyと判断していいん
でしょうか。
あと、HTTP_X_FORWARDED_FORというのがよくわからないです。何が入るんでしょ
うか。

なにしろ実際に試せないので、確信がもてないんです。
荒らしが使うってことは、誰でもつかえるproxyサーバってのがあるんですかね。
それとも、多少なりともハックして使っているのでしょうか。

#やはり、この辺の知識ってのは必要だなあ・・・。
#あと、IISでちゃんとこの辺のヘッダがENVに入るのかも不安・・・


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: 匿名proxyの判断
Date: 1998/05/20 04:40:58
Reference: mesh.program/00512

5月19日に、Hironobuさんは書きました。

>perl cgiの習作を兼ねた、拙作の掲示板にも、最近荒らしが来るように
>なりました。
>
# そ言えば、此処には荒らし来たこと無いなぁ、単発的な書き捨てはあったけど。
# まだ、一人前の掲示板とは言えないということだな。(笑)

>webで調べたところ、
>HTTP_PROXY
>HTTP_X_FORWARDED_FOR
>HTTP_FORWARDED
>あたりの環境変数をチェックすれば良さそうですね。
>
どうなんでしょ? HTTP/1.1の規格に入っているのはViaのみですから、環境変数としては
HTTP_VIA
になりますが、proxyとしてよく使われているSquidが付けるヘッダが使われていると
言うことでしょうか。(HTTP_FORWARDEDはDeleGateも付けますね)
# 残念ながらあたしはSquidは使ってないので内容は詳しくは知らないです。

>あと、HTTP_X_FORWARDED_FORというのがよくわからないです。何が入るんでしょうか。
>
SquidのFAQによれば、元のクライアントのIPアドレスを保存した物のようですね。
ただし、FAQにも書かれている通り、HTTP_何たら と言うのはサーヴァに送られて来た
リクエストヘッダを渡しているだけですから、幾らでもfakeが可能であることを仮定して
処理を考えなくてはいけないところがいまいちですね。

# まあ荒らし避けと言うことなら、ヘッダチェックは万全では無いと言うことを
# 分かって使っている分にば構わないでしょうが。

>荒らしが使うってことは、誰でもつかえるproxyサーバってのがあるんですかね。
>
公開されているproxyサーヴァは多々あるようですね。

もちろんそれらの多くは広域cacheを行なうことでトラフィックの軽減を目的に
公開されているわけで、それを逆手にとってanonymizerとして使うというのは
abuseに当たるのでしょうけど、悪いことに使う連中が後を絶たないため、
公開cacheサーヴァの方でも色々対策はしているようです。

例えばringer.etl.go.jpの広域DeleGateは、掲示板の匿名書き込みを
防ぐためにPOSTメソッドを通さない設定になっています。
# "305 Use Another Proxy"が返ります。


[RE] フォロー記事投稿 記事のキャンセル
From: Hironobu <i14hnakagawa@ec.usp.ac.jp>
Subject: Re: 匿名proxyの判断
Date: 1998/05/20 20:43:06
Reference: mesh.program/00515

5月20日に、にあさんは書きました。

>>webで調べたところ、
>>HTTP_PROXY
>>HTTP_X_FORWARDED_FOR
>>HTTP_FORWARDED
>>あたりの環境変数をチェックすれば良さそうですね。
>どうなんでしょ? HTTP/1.1の規格に入っているのはViaのみですから、環境変数としては
>HTTP_VIA
>になりますが、proxyとしてよく使われているSquidが付けるヘッダが使われていると
>言うことでしょうか。(HTTP_FORWARDEDはDeleGateも付けますね)
># 残念ながらあたしはSquidは使ってないので内容は詳しくは知らないです。

たしかに、HTTP_PROXY,HTTP_X_FORWARDED_FOR,HTTP_FORWARDEDにはなにも値が入りませ
んでした。
というわけで、さらに放浪してみたところ、HTTP_PROXY_CONNECTION,HTTP_CACHE_INFO,
そして、HTTP_VIAを見るとよさそうですね。
HTTP1.1と書いてますが、サーバがHTTP1.1に対応していないとこれらの情報を受け取れ
無いということでしょうか。だとしたら、IIS3.0では無理ですねえ。

>ただし、FAQにも書かれている通り、HTTP_何たら と言うのはサーヴァに送られて来た
>リクエストヘッダを渡しているだけですから、幾らでもfakeが可能であることを仮定して
>処理を考えなくてはいけないところがいまいちですね。

らしいですね。不正なヘッダを送出できる、それ用のソフトも存在するようですね。
まあ、そこまでやるような人には最初からお手上げなのですが。
とりあえず、抑止効果が少しでも出ればなあ、って感じです。あ、逆に煽ったりして。

どうも、返答ありがとうございました。


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: 匿名proxyの判断
Date: 1998/05/23 01:45:50
Reference: mesh.program/00518

5月20日に、Hironobuさんは書きました。

>HTTP1.1と書いてますが、サーバがHTTP1.1に対応していないとこれらの情報を受け取れ
>無いということでしょうか。だとしたら、IIS3.0では無理ですねえ。
>
基本的には、サーヴァは自分の知らないリクエストヘッダを受け取ったら、
それを大文字にして HTTP_ を付けて環境変数にセットする、となっている
実装がほとんどでしょうから、サーヴァが知らない分には受けられると思います。

# サーヴァによっては、リクエストヘッダを選別する物もあるようですが。

チョットたちが悪いのは、サーヴァが知っているので処理するんだけど、
その処理が間違っている様なリクエストヘッダですね。

# 昔の Apache サーヴァでは Cookie に関するヘッダの処理が
# おかしかったですね。

IIS3.0がチャンと渡してくれるかどうかは良く知らないですが... (^^;;


[RE] フォロー記事投稿 記事のキャンセル
From: Hironobu <i14hnakagawa@ec.usp.ac.jp>
Subject: Re: 匿名proxyの判断:IIS3ではダメ・・・
Date: 1998/05/23 22:50:21
Reference: mesh.program/00520

5月23日に、にあさんは書きました。

>基本的には、サーヴァは自分の知らないリクエストヘッダを受け取ったら、
>それを大文字にして HTTP_ を付けて環境変数にセットする、となっている
>実装がほとんどでしょうから、サーヴァが知らない分には受けられると思います。
># サーヴァによっては、リクエストヘッダを選別する物もあるようですが。

HTTP_VIAは空でした・・・。うむむ、IISはダメだなあ・・・。
もしかしたら、PerlIS.dllのせいかもしれませんね。次はISAPIをやめて普通の
perl.exeでやってみます。

>IIS3.0がチャンと渡してくれるかどうかは良く知らないですが... (^^;;

うむむ。ダメっぽいです。


[RE] フォロー記事投稿 記事のキャンセル
From: Hironobu <i14hnakagawa@ec.usp.ac.jp>
Subject: 上は間違い。IIS3.0でもok
Date: 1998/05/24 23:14:16
Reference: mesh.program/00522

5月23日に、Hironobuさんは書きました。

>HTTP_VIAは空でした・・・。うむむ、IISはダメだなあ・・・。
>もしかしたら、PerlIS.dllのせいかもしれませんね。次はISAPIをやめて普通の
>perl.exeでやってみます。

HTTP_VIAですが、プロバイダからの書き込みでは入っていました。(Squid/1.1.20とありました)
いわいる荒らしさんの使用しているproxyではHTTP_VIAは入りませんが、HTTP_USER_AGENTに
via NetCache version 3.1.1d-Solaris  via proxy gateway  CERN-HTTPD/3.0 libwww/2.17
と入っていました。
ふむ。
というわけで、だからどうした?という感じですが、とりあえず、IIS3に濡れ衣を
着せたみたいなので、訂正させて頂きます。


[NEW] フォロー記事投稿 記事のキャンセル
From: 素人でGO! <inagaki.ken@nifty.ne.jp>
Subject: [Q] perl での 二つ以上のキーを用いたソート
Date: 1998/08/05 13:47:16

なんか作ってみようと昨日始めたのですが、いきなりつまりました(笑)

ソートについてです。
配列@DATAは複数のフィールドを持つとします。
例えばあるキーで3番目のフィールドをソートします。
ここまではいいのですが、この3番目のフィールドが同じ値を持ったときに
次のキーでソートしたいのです。
つまり複数のキーを用いたソート(優先順位はあります)です。

普通にやると個々のソートはうまくいくのですが、最初の結果に対して次のキーを
かけても最初の結果が反映されないのです。何か良い方法はないでしょうか?


これから本屋に行ってみます。
今まで参考にしている本はらくだ本だけです。

よろしくお願いします。


[RE] フォロー記事投稿 記事のキャンセル
From: いしどう <ishidou@po.iijnet.or.jp>
Subject: Re: [Q] perl での 二つ以上のキーを用いたソート
Date: 1998/08/06 00:55:14
Reference: mesh.program/00524

いしどう っす。

青本はお持ちですか? (^o^)

8月5日に、素人でGO!さんは書きました。
>ソートについてです。
>配列@DATAは複数のフィールドを持つとします。
>例えばあるキーで3番目のフィールドをソートします。
>ここまではいいのですが、この3番目のフィールドが同じ値を持ったときに
>次のキーでソートしたいのです。
>つまり複数のキーを用いたソート(優先順位はあります)です。
>
>普通にやると個々のソートはうまくいくのですが、最初の結果に対して次のキーを
>かけても最初の結果が反映されないのです。何か良い方法はないでしょうか?

「複数のフィールドを持つ配列」というのがよくわからないんですが…
# perlで多次元配列を使った事がないわたし (^^;;
sort の比較関数をうまく作ってやればよさそうな気がします。


[RE] フォロー記事投稿 記事のキャンセル
From: 素人でGO! <inagaki.ken@nifty.ne.jp>
Subject: Re: [Q] perl での 二つ以上のキーを用いたソート
Date: 1998/08/06 02:04:13
Reference: mesh.program/00525

8月6日に、いしどうさんは書きました。

>青本はお持ちですか? (^o^)

 いえ、持ってないです(^^;

>>ソートについてです。
>>配列@DATAは複数のフィールドを持つとします。
>>つまり複数のキーを用いたソート(優先順位はあります)です。
>「複数のフィールドを持つ配列」というのがよくわからないんですが…

 えーと、要するに多次元配列ってことでいいと思います。

>sort の比較関数をうまく作ってやればよさそうな気がします。

 sort { $hoge{$a} <=> $hoge{$b} }
 みたいな感じでしょうか…一つのキーだとうまくいくんですけどね(;_;)

 具体的な例を出します。

ある配列に
ファーストフードの名前、セットの名前、価格、おいしさ、お姉ちゃんのかわいさ
という内容が書かれているものがたくさんあるとします。

 まずおいしいものを食べたいので、おいしさ順にソートします。
 A〜Eの五段階だとします。
 それでも同じものがある場合は価格が安い方がいいですよね。
 というわけでさらに価格の安い順でソートします。
 それでも同じならかわいい子がいる店の方がいいだろう(笑)ということで
 さらにソートします。

 こんな感じで三段階(例えばですが)、ソートできるようにしたいわけですね。

で、第一段階のソートを @sorted とかに入れます。
それを第二段階のソートをかけると、第二段階のソート結果は出るのですが
第一段階の内容が反映されなくなっているのです。

 それをどうにかしたいなぁと思ったのですが、意味は伝わりましたでしょうか?(^^;

 二ヶ月ほど投稿がないので、誰も見ていないかもしれませんがどなたか教えて下さい。
 よろしくお願いします。


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: [Q] perl での 二つ以上のキーを用いたソート
Date: 1998/08/06 02:27:05
Reference: mesh.program/00526

8月6日に、素人でGO!さんは書きました。

>8月6日に、いしどうさんは書きました。
>
>>青本はお持ちですか? (^o^)
>
> いえ、持ってないです(^^;
>
おや、それは残念。いしどうさんが「青本はお持ちですか」と聞いたのは
青本(Programming Perlの新版)のsort()の項には、その物ズバリの
例が載っているからのです(よね?)

> まずおいしいものを食べたいので、おいしさ順にソートします。
> A〜Eの五段階だとします。
> それでも同じものがある場合は価格が安い方がいいですよね。
> というわけでさらに価格の安い順でソートします。
> それでも同じならかわいい子がいる店の方がいいだろう(笑)ということで
> さらにソートします。
>
この例で言えば、まず、

sub 良い店 {
  $おいしさ{$a} <=> $おいしさ{$b}
    or
  $安さ{$a} <=> $安さ{$b}
    or
  $かわいさ{$a} <=> $かわいさ{$b};
}

と言う関数を作っておくと、おいしさの違いで決まりならそれが関数の値として使われ、
同じおいしさなら安さの違いが、同じ安さならかわいさの違いが、関数の値として
使われるので、

@sorted_shop = sort 良い店 @shop;

とすれば、いきなりソート出来るわけです。

>二ヶ月ほど投稿がないので、誰も見ていないかもしれませんが
>
ぎくっ (^^;;


[RE] フォロー記事投稿 記事のキャンセル
From: 素人でGO! <inagaki.ken@nifty.ne.jp>
Subject: Re: [Q] perl での 二つ以上のキーを用いたソート
Date: 1998/08/06 22:35:51
Reference: mesh.program/00527

8月6日に、にあさんは書きました。

>青本(Programming Perlの新版)のsort()の項には、その物ズバリの
>例が載っているからのです(よね?)

 気になって立ち読み(汗)に行きました。

>sub 良い店 {
>  $おいしさ{$a} <=> $おいしさ{$b}
>    or
>  $安さ{$a} <=> $安さ{$b}
>    or
>  $かわいさ{$a} <=> $かわいさ{$b};
>}
>@sorted_shop = sort 良い店 @shop;
>とすれば、いきなりソート出来るわけです。

 確かにそんなことが書いてありました。
 そこで素人の質問になるわけですが…配列の中に名前を付けるにはどうすればいいのでしょうか?

 @店 の中に 5つ(見つけた日付、おいしさ、安さ、かわいさ、場所)項目があったとします。
 そんな場合にこういうソートをするとき、どのように指定すればいいんでしょうか。
 まだ始めたばかりなので基本ができてない!と叱られそうですが、よろしくお願いします。


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: [Q] perl での 二つ以上のキーを用いたソート
Date: 1998/08/07 07:50:32
Reference: mesh.program/00528

8月6日に、素人でGO!さんは書きました。

>確かにそんなことが書いてありました。
>そこで素人の質問になるわけですが…配列の中に名前を付けるにはどうすればいいのでしょうか?
>
えーと、先の例はperl4でも使えるように、多次元配列は使わずに、個々の比較項目を
別個に連想記憶に入れてからソートするものでしたので、例えば、

#!/usr/local/bin/perl4

while (<DATA>) {
        chop;
        ($date, $tasty, $cheap, $cute, $key) = split(/,\s*/);
        push(@shop, $key);
        $date{$key} = $date;
        $tasty{$key} = $tasty;
        $cheap{$key} = $cheap;
        $cute{$key} = $cute;
}

@sorted = sort good @shop;

foreach $key (@sorted) {
        printf("%s, (%s, %s, %s), %s\n",
                $date{$key}, $tasty{$key}, $cheap{$key}, $cute{$key}, $key);
}

exit(0);

sub good {
        $tasty{$a} cmp $tasty{$b}
                ||
        $cheap{$a} cmp $cheap{$b}
                ||
        $cute{$a} cmp $cute{$b}
                ||
        $a cmp $b;
}

__END__
1998/04/23, D, B, E, 三茶のA
1998/05/10, B, C, A, 広尾のB
1998/05/11, C, A, B, 表参道のA
1998/06/26, B, A, C, 用賀のC
1998/07/05, D, B, A, 外苑前のA

とかなっていると、出力は、

1998/06/26, (B, A, C), 用賀のC
1998/05/10, (B, C, A), 広尾のB
1998/05/11, (C, A, B), 表参道のA
1998/07/05, (D, B, A), 外苑前のA
1998/04/23, (D, B, E), 三茶のA

とかになるわけです。

>@店 の中に 5つ(見つけた日付、おいしさ、安さ、かわいさ、場所)項目があったとします。
>そんな場合にこういうソートをするとき、どのように指定すればいいんでしょうか。
> 
perl5での多次元配列(まがい)を使ってデータを入れてるとすると、配列の添字で指定した方が
やりやすいでしょうね。例えば、

#!/usr/local/bin/perl5

$tasty = 1;
$cheap = 2;
$cute  = 3;

while (<DATA>) {
        chop;
        push(@shop, [split(/,\s*/)]);
}

@sorted = sort good @shop;

foreach $shop (@sorted) {
        printf("%s, (%s, %s, %s), %s\n", @$shop);
}

exit(0);

sub good {
        
a[$tasty] cmp 
b[$tasty]
                ||
        
a[$cheap] cmp 
b[$cheap]
                ||
        
a[$cute] cmp 
b[$cute]
                ||
        $a cmp $b;
}

__END__
1998/04/23, D, B, E, 三茶のA
1998/05/10, B, C, A, 広尾のB
1998/05/11, C, A, B, 表参道のA
1998/06/26, B, A, C, 用賀のC
1998/07/05, D, B, A, 外苑前のA

でも同じ出力になりますね。
多次元配列では無くて、ハッシュの配列を使えば、

#!/usr/local/bin/perl5

while (<DATA>) {
        chop;
        ($date, $tasty, $cheap, $cute, $key) = split(/,\s*/);
        $shop = {date  => $date,
                 tasty => $tasty,
                 cheap => $cheap,
                 cute  => $cute,
                 key   => $key};
        push(@shop, $shop);
}

@sorted = sort good @shop;

foreach $shop (@sorted) {
        printf("%s, (%s, %s, %s), %s\n",
                $shop->{date}, $shop->{tasty}, $shop->{cheap}, $shop->{cute}, $shop->{key});
}

exit(0);

sub good {
        $a->{tasty} cmp $b->{tasty}
                ||
        $a->{cheap} cmp $b->{cheap}
                ||
        $a->{cute} cmp $b->{cute}
                ||
        $a->{key} cmp $b->{key};
}

__END__
1998/04/23, D, B, E, 三茶のA
1998/05/10, B, C, A, 広尾のB
1998/05/11, C, A, B, 表参道のA
1998/06/26, B, A, C, 用賀のC
1998/07/05, D, B, A, 外苑前のA

な感じになりますか。もちろん出力は同じです。


[RE] フォロー記事投稿 記事のキャンセル
From: 素人でGO! <inagaki.ken@nifty.ne.jp>
Subject: Re: [Q] perl での 二つ以上のキーを用いたソート
Date: 1998/08/08 02:17:06
Reference: mesh.program/00529

 丁寧な説明、本当にありがとうございます。
 perl4しかわかりませんでしたが、精進します。
 感動です〜(*^^*)


[RE] フォロー記事投稿 記事のキャンセル
From: BERO <bero@pisces.bekkoame.or.jp>
Subject: Re: GIF画像の合成
Date: 1998/08/19 05:43:27
Reference: mesh.program/00439

12月9日に、のりーさんは書きました。

>11月13日に、にあさんは書きました。
>
>>>複数のgifのヘッダを取って、部分画像が複数ある一つのgifに再構成すれば
>>>ヘッダ操作のみで(gifの圧縮/展開しなくても)軽いものができるような気がします。
>>>
>>>絶対誰か作ってるにちがいない。
>>>
>
>>あ、npc.cgiなら、最初の画像だけ全桁出力して、あとはアニメーションする桁だけ
>>出力する、と言うことが出来ますね。これだと、転送データ量が減ってうれしいかも。
>># 次の版でこのモードを導入してみよう。(^^) アイデアどうもです。>BEROさん
>
>はじめまして
>私もアクセスカウンタCGIを作っているんですが、GIF形式で採用されている
>LZW圧縮方式は確かUNISYSがパテントを持っているとかでライセンスを取
>らずに作られたソフトを配布する事は出来ない(たとえフリーソフトでも)と聞いた
>ことがあるんですが、そのあたりはどのように処理されているんでしょうか。教え
>て下さい♪

古い話題でアレなんですが、GIFで特許が取られている部分はLZW圧縮だけで、
ヘッダ形式等は問題無いので、(ライセンスを取ったグラフィックツール等で作成された)
数字のGIF画像のヘッダを合成して新しいGIFにすれば、特許に触れるLZW部分が無くても
カウンタが作れるのではないか? というのが当初の書き込みでした。


[NEW] フォロー記事投稿 記事のキャンセル
From: なおき <naoki@aichinet.or.jp>
Subject: password変更プログラム
Date: 1998/08/20 16:37:53

なおきです。
覚えてますか?1年ぶりくらいかなぁ。
久しぶりです。

ところで題名にも書きましたが
パスワードを変更するプログラムを考えているのですが
サーバーはLinuxサーバーです。
たとえば
テキストファイルに
userID Password
naoki  abcnao
naoko  cdenao

というようなデータを作って
パスワードを変更していくプログラムです。
たとえば
# passwd naoki
とやると会話型になってしまいますよね。
それを避ける方法みたいなのが知りたいんですが。
だれかわかる人いますかぁ?

なおき


[RE] フォロー記事投稿 記事のキャンセル
From: いしどう <ishidou@po.iijnet.or.jp>
Subject: Re: password変更プログラム
Date: 1998/08/20 23:39:06
Reference: mesh.program/00532

いしどう です。

8月20日に、なおきさんは書きました。

>ところで題名にも書きましたが
>パスワードを変更するプログラムを考えているのですが

[中略]

># passwd naoki
>とやると会話型になってしまいますよね。
>それを避ける方法みたいなのが知りたいんですが。
>だれかわかる人いますかぁ?

Linux だったら、passwd コマンドのソースを読めば
パスワードの生成方法が分かるとおもうんですが…

勉強になりますよ (^^)


[RE] フォロー記事投稿 記事のキャンセル
From: なおき <naoki@aichinet.or.jp>
Subject: Re: password変更プログラム
Date: 1998/08/21 08:32:12
Reference: mesh.program/00533

8月20日に、いしどうさんは書きました。

>
>># passwd naoki
>>とやると会話型になってしまいますよね。
>>それを避ける方法みたいなのが知りたいんですが。
>>だれかわかる人いますかぁ?
>
>Linux だったら、passwd コマンドのソースを読めば
>パスワードの生成方法が分かるとおもうんですが…
>
>勉強になりますよ (^^)

RESありがとうございます。
どこらへんにおいてあるんでしょうか?
/usr/src/linux
のあたりかなぁ。


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: password変更プログラム
Date: 1998/08/21 22:38:23
Reference: mesh.program/00533

8月20日に、いしどうさんは書きました。

>8月20日に、なおきさんは書きました。
>
>>ところで題名にも書きましたが
>>パスワードを変更するプログラムを考えているのですが
>
>Linux だったら、passwd コマンドのソースを読めば
>パスワードの生成方法が分かるとおもうんですが…
>
Programming perl(旧版)の6章の"Real Perl Programs"の所にも
passwd-Password Changing Programと言うのが有りますね。
これは直接パスワードファイルを書き換えるものです。

あと、既存のpasswdコマンドとの間でやり取りしてパスワードを書き換える
プログラムの例として、poppassd-1.4.tar.gzがありますね。
Eudoraの「パスワード変更」などで使っているパスワード変更サーヴァです。
# どこから持ってきたか忘れてしまった。archieでもかけて下さい。>なおきさん


[RE] フォロー記事投稿 記事のキャンセル
From: なおき <naoki@aichinet.or.jp>
Subject: Re: password変更プログラム
Date: 1998/08/22 13:25:09
Reference: mesh.program/00535

8月21日に、にあさんは書きました。

>8月20日に、いしどうさんは書きました。
>
>>8月20日に、なおきさんは書きました。
>>
>>>ところで題名にも書きましたが
>>>パスワードを変更するプログラムを考えているのですが
>>
>>Linux だったら、passwd コマンドのソースを読めば
>>パスワードの生成方法が分かるとおもうんですが…
>>
>Programming perl(旧版)の6章の"Real Perl Programs"の所にも
>passwd-Password Changing Programと言うのが有りますね。
>これは直接パスワードファイルを書き換えるものです。
>
>あと、既存のpasswdコマンドとの間でやり取りしてパスワードを書き換える
>プログラムの例として、poppassd-1.4.tar.gzがありますね。
>Eudoraの「パスワード変更」などで使っているパスワード変更サーヴァです。
># どこから持ってきたか忘れてしまった。archieでもかけて下さい。>なおきさん


にあさんありがとう早速やってみてます。
サンキュウ!


[NEW] フォロー記事投稿 記事のキャンセル
From: ぱーまぁ <hkoshio@lares.dti.ne.jp>
Subject: 検索フォームを一括にしたい
Date: 1998/10/06 19:33:30

皆さん、こんばんは。

早速質問なんですが、よくYahooやあちゃらNavi、Infoseek等でユーザーの
ホームページで検索を使えるようにサーチエンジンのフォームソースを
公開してますよね。
しかし、複数のフォームをいくつもベタベタ貼り付けると邪魔くさいので、
一まとめにしたいんです。
具体的にはフォームの下にラジオボタンを設置して、そこに該当する
サーチエンジンを全てリストにして、チェックされたサーチエンジンの
検索を使いたいと言う事です。
恐らくプログラム的には「○○がチェックされていたら○○の検索エンジン
にキーワードを渡す」と言う感じになると思うんですが、プログラム経験が
全く無いのでわかりません。
どなたか、詳しく教えて頂けませんでしょうかm(_ _)m

#コレって「作ってくれ」と言ってるのと同じですね(^^;


[RE] フォロー記事投稿 記事のキャンセル
From: ぱーまぁ <hkoshio@lares.dti.ne.jp>
Subject: Re: 参考までに
Date: 1998/10/06 19:39:11
Reference: mesh.program/00538

自己RESです。

>具体的にはフォームの下にラジオボタンを設置して、そこに該当する
>サーチエンジンを全てリストにして、チェックされたサーチエンジンの
>検索を使いたいと言う事です。
メッツと言うソフトメーカーのサイトで、まさに私がやりたい事をやっていました。
少し前にメールで質問したのですが、教えてもらえませんでした(T_T)
上記ページを見て、何となくわかった方は、是非ご教授お願いします。


[RE] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: 検索フォームを一括にしたい
Date: 1998/10/23 16:49:30
Reference: mesh.program/00538

10月6日に、ぱーまぁさんは書きました。

 はじめまして ぱーまぁさん

>皆さん、こんばんは。
>
>早速質問なんですが、よくYahooやあちゃらNavi、Infoseek等でユーザーの
>ホームページで検索を使えるようにサーチエンジンのフォームソースを
>公開してますよね。
>しかし、複数のフォームをいくつもベタベタ貼り付けると邪魔くさいので、
>一まとめにしたいんです。
>具体的にはフォームの下にラジオボタンを設置して、そこに該当する
>サーチエンジンを全てリストにして、チェックされたサーチエンジンの
>検索を使いたいと言う事です。
>恐らくプログラム的には「○○がチェックされていたら○○の検索エンジン
>にキーワードを渡す」と言う感じになると思うんですが、プログラム経験が
>全く無いのでわかりません。
>どなたか、詳しく教えて頂けませんでしょうかm(_ _)m
>
>#コレって「作ってくれ」と言ってるのと同じですね(^^;

 求めているものは大体分かりました。
 しかし、一体 何から教えていいのやら さっぱり分かりません

 と言うことで
 まず、何でもいいから”ぱーまぁさんのプログラム経験”を
 作ってみて下さい

#因みに私は作ってあげません(^_^;)
#だって 検索エンジンなんてそこら辺にゴロゴロしてるんだもの
#見つけたお気に入りのやつにリンクを張ればそれで十分ではないのかな?
#Webってそういうもんだと私は解しておりますが・・・


[NEW] フォロー記事投稿 記事のキャンセル
From: emi <emi@higashiono.com>
Subject: NTでのクッキー
Date: 1998/10/19 16:17:39

はじめまして。会社でNTをいじっているモノです。
(にあさんのnpc.cgiを使わせていただいてます)
今度、レスキューさんのperlスクリプトをNT+IISに移植しようと
しているのですが、クッキーでつまづいています。

移植しようとしているのはレスキューさんのショッピングカートです。
とりあえずcgiは動くのですが、
クッキーが発行されないために、正しく動作しません。
(最初の画面で注文しても(個数1と入れても)、
 次画面で「何も注文されていません」になってしまう)

NT4.0+IIS3.0で、Perl5.003 ビルド306です。
過去の記事で、北澤@えぶあねっとさんが、れすきゅーさんの
minibbsのクッキーに成功した、とありましたが、
どのように手を加えられたのでしょうか。

それとも、perlをビルド310以上にすれば
cookie関連については手を加えなくても
動作するのでしょうか?

よろしくお願いします。


[RE] フォロー記事投稿 記事のキャンセル
From: 北澤@えぶぁねっと <badboy@eve.ne.jp>
Subject: Re: NTでのクッキー
Date: 1998/10/23 08:29:15
Reference: mesh.program/00540

10月19日に、emiさんは書きました。

>NT4.0+IIS3.0で、Perl5.003 ビルド306です。
>過去の記事で、北澤@えぶあねっとさんが、れすきゅーさんの
>minibbsのクッキーに成功した、とありましたが、
>どのように手を加えられたのでしょうか。

呼ばれたようなので・・・ (^^;
本題ですが、すっかり忘却の彼方へ旅立ってしまいました ごめん。
ただ、クッキーの記述がいろいろ有るようで、にあさんのクッキーは
何の変更もなく使えるのですが、一部の方が提供されているスクリプトでは
使えない物もありました。 perlの勉強をすれば理解できるのかも知れない
のですが、私には難解でした (^^;

スクリプトを読めないのならば、別物を探した方が幸せになれます (^^)v
で、我が家のサーバーはNTを捨てて UNIXに全面移行中です。
最初は敷居が高いと敬遠していたのですが、ちゃんと設定すれば素直に動く
UNIXが気に入っています。 高い・分からない・融通が利かないNTくんとは
これでお別れです。 ウェブサーバーだけでもUNIXには移行できないですか?
NTが動かないスペックの機器でも十分に使えますよ。


[RE] フォロー記事投稿 記事のキャンセル
From: emi <emi@higashiono.com>
Subject: Re: NTでのクッキー
Date: 1998/10/23 11:16:27
Reference: mesh.program/00541

10月23日に、北澤@えぶぁねっとさんは書きました。

>本題ですが、すっかり忘却の彼方へ旅立ってしまいました ごめん。

そうですか・・・。古い話題を持ち出してこちらこそすみませんでした。

>ただ、クッキーの記述がいろいろ有るようで、にあさんのクッキーは
>何の変更もなく使えるのですが、一部の方が提供されているスクリプトでは
>使えない物もありました。 perlの勉強をすれば理解できるのかも知れない
>のですが、私には難解でした (^^;

同じくです。ラクダ本とか言うのを買ってはみたものの、
使いこなすに至っていません。
今のところにあさんやれすきゅーさんの提供してくださるものを
移植するのが精一杯です。

>ウェブサーバーだけでもUNIXには移行できないですか?
>NTが動かないスペックの機器でも十分に使えますよ。

替えたいのはやまやまですが、会社のは所管が別なもので
簡単にはいかず。。。
自宅のだけでもLINUXなどにしてみたいと思っています。
こちらのようにインターネット上で無償で提供される
サンプルやノウハウなどの情報量は明らかにUNIX系のほうが
質・量ともに豊富で、勉強もしやすいと思うし
そのように訴えたりしてたんですが、
なぜか会社が購入するときはNTを買われてしまうんです。

何はともあれ、
コメントありがとうございました。


[NEW] フォロー記事投稿 記事のキャンセル
From: cobuta <cobuta@ba.mbn.or.jp>
Subject: URLまたはIPの情報取得の仕方は?
Date: 1998/10/28 18:04:42

サーバー側でブラウザで入力したURLまたはIPを取得する方法があれば教えて下さい。
CGIかpearlで取得可能?


[RE] フォロー記事投稿 記事のキャンセル
From: TAD <hotani@mxt.mesh.ne.jp>
Subject: Re: URLまたはIPの情報取得の仕方は?
Date: 1998/10/28 20:35:21
Reference: mesh.program/00544

10月28日に、cobutaさんは書きました。

>サーバー側でブラウザで入力したURLまたはIPを取得する方法があれば教えて下さい。
>CGIかpearlで取得可能?

#perlですね。(^^;;

何がやりたいのか、明確には分かりませんが、
とりあえず、サーバ側で実行されたCGIではブラウザから渡されたいろいろな情報を
環境変数という形で参照できます。

試しに私の所においてある環境変数表示用CGI(中身はいたって単純なperlのスクリプトです。(^^;;)
を実行してみて下さい。
CGI側で参照できる環境変数の名前とその値が表示されます。

ブラウザによって、CGIに渡してくれる情報は異なるようですので、
参照できる環境変数も違ってくるということを覚えておいて下さい。
とはいっても、REMOTE_ADDR、HTTP_REFERER、HTTP_USER_AGENTなどよく利用されている
ものはだいたいのブラウザは渡してくれるでしょう。

具体的な参照方法ですが、perlなんかだと以下の様に参照できます。

 %ENV{'環境変数名'} ( 例:%ENV{'REMOTE_ADDR'} )


[RE] フォロー記事投稿 記事のキャンセル
From: TAD <hotani@mxt.mesh.ne.jp>
Subject: ちょっと間違えてました(^^;;
Date: 1998/10/29 13:56:45
Reference: mesh.program/00545

10月28日に、TADは書きました。

>具体的な参照方法ですが、perlなんかだと以下の様に参照できます。
>
> %ENV{'環境変数名'} ( 例:%ENV{'REMOTE_ADDR'} )

上記は '%'でなく、'$' でした。( 初歩的な間違いで、すみません。m(_ _)m )
正しくは以下の通り。

$ENV{'環境変数名'} ( 例:$ENV{'REMOTE_ADDR'} )


[NEW] フォロー記事投稿 記事のキャンセル
From: でんでん <ray@design.office.ne.jp>
Subject: Sendmailで不達の際に差出人にエラー返信させるには?
Date: 1998/11/04 02:20:43

こんにちは。

題名のとおりなんですが、Perlでフォームの内容をメール送信する
CGIで、宛先と差出人を違うアドレスにしたとき、宛先がアドレス間違い
などで届かなかった場合、そのままFromにはエラーが返って来ない
ので、メールクライアントから送信した場合みたくエラーがFromに送信
されるようにしたいのです。

Webで調べてみましたがさっぱり見あたらなくて質問させていただき
ました。

どなたかよろしくお願いいたしますm(_ _)m


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mvg.biglobe.ne.jp>
Subject: Re: Sendmailで不達の際に差出人にエラー返信させるには?
Date: 1998/11/06 21:44:28
Reference: mesh.program/00547

11月4日に、でんでんさんは書きました。

>題名のとおりなんですが、Perlでフォームの内容をメール送信する
>CGIで、宛先と差出人を違うアドレスにしたとき、宛先がアドレス間違い
>などで届かなかった場合、そのままFromにはエラーが返って来ない
>ので、メールクライアントから送信した場合みたくエラーがFromに送信
>されるようにしたいのです。
>
メール配送においてヘッダに書かれた宛先とか差出人とかと情報はあまり
大きな意味を持ちません。配送時に重要なのは「エンベロープ」と呼ばれる
MTA(メール配送を行なっているプログラム)に渡される実際の配送元/先の
アドレスです。エラーが起こった時には、このエンベロープに書かれた
配送元アドレスに戻ってくるので、此処に正しいアドレスを設定しなくては
なりません。

そのCGIの内容が分からないと詳細は分かりませんが、例えば sendmail を
メールの送信に利用している場合、エンベロープの送信元アドレスは、
sendmail を起動したユーザになります。ですから、サーヴァが全て同じ
wwwの様なユーザ権限で動いている場合、エラーメールがwww宛に戻って
来ることになります。

これだとチョット不便なので、sendmailに -f オプションを付ける事で
エンベロープの差出人アドレスを変えることが出来ます。

つまり、

sendmail -fUSER

として、起動すると、サーヴァ権限で動いている sendmail でも、エンベロープの
差出人を USER に出来ます。ただし、sendmail ヴァージョンが R5 などでは
sendmail.cf で -f を利用できるユーザを設定しなくてはなりません。
現在普通に使われているような sendmail 8.7 以降のヴァージョンでは
sendmail.cf に記載が無くとも -f が使えますが、その代わり、

X-Authentication-Warning:

ヘッダでアドレスを差し替えていることが記載されます。

その他にも、昔は Errors-To: と言うヘッダがエラーが起きた時の戻りアドレスとして
使われていたことがありましたが、RFC822 と言うメール基本を定めている文書に
記載が無いため、現在は廃れつつあります。特に最近の sendmail.cf の設定では
省略時の設定が Errors-To: を解釈しないモードになっていることが多いので、
実質的に無意味になりつつあります。

# ちなみに、ヘッダ情報からエンベロープの宛先を決定するオプションは
# sendmail -t です。

詳しくは、sendmail のマニュアルや CF 付属の文書などを参照すると良いでしょう。


[RE] フォロー記事投稿 記事のキャンセル
From: でんでん <ray@design.office.ne.jp>
Subject: Re: Sendmailで不達の際に差出人にエラー返信させるには?
Date: 1998/11/07 02:19:58
Reference: mesh.program/00550

レスありがとうございます。たいへんよく分かりました。

一応、Sendmailのmanは見てみて、-fあたりかなと思ってたの
ですが、なにぶん英語ができないので詳しいことが分からない
でいました。

分かりやすい説明ありがとうございました。

とりあえず試してみます。

m(_ _)m


[NEW] フォロー記事投稿 記事のキャンセル
From: GGG <mailggg@anet.ne.jp>
Subject: CGIをHTMLに埋め込むには
Date: 1998/11/05 23:46:42

 おひさしぶりです。
 アクセスログを取ることにしようと簡単なSSIを書いて、HTMLファイルに



と書きこみ、UNIXのコマンドでCGIを呼び出そうとしたのですが、どうやらコ
マンド使用が許可されていないらしくログが生成されません。CGI自体は直接
実行すればログを生成しますので動いているようです。HTMLからCGIを直接呼
び出すには他にどんな方法があるのでしょうか?


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mvg.biglobe.ne.jp>
Subject: Re: CGIをHTMLに埋め込むには
Date: 1998/11/06 21:48:28
Reference: mesh.program/00548

11月5日に、GGGさんは書きました。

> アクセスログを取ることにしようと簡単なSSIを書いて、HTMLファイルに
>
><!-- #exec cgi="test.cgi" -->
>
>と書きこみ、UNIXのコマンドでCGIを呼び出そうとしたのですが、どうやらコ
>マンド使用が許可されていないらしくログが生成されません。
>
書いた行はそのままですか?

SSI構文は <!-- #exec の様に "--" と "#" の間にスペースを入れてしまうと
解釈されません。正しく <!--#exec と続けて書いて下さい。

# 続けて書いても解釈されないのなら、SSI が使えないのでしょうけど。


[RE] フォロー記事投稿 記事のキャンセル
From: GGG <mailggg@anet.ne.jp>
Subject: Re: CGIをHTMLに埋め込むには
Date: 1998/11/07 01:11:39
Reference: mesh.program/00551

11月6日に、にあさんは書きました。

>> アクセスログを取ることにしようと簡単なSSIを書いて、HTMLファイルに
>>
>><!-- #exec cgi="test.cgi" -->
>>
>>と書きこみ、UNIXのコマンドでCGIを呼び出そうとしたのですが、どうやらコ
>>マンド使用が許可されていないらしくログが生成されません。
>>
>書いた行はそのままですか?
>
>SSI構文は <!-- #exec の様に "--" と "#" の間にスペースを入れてしまうと
>解釈されません。正しく <!--#exec と続けて書いて下さい。

 そうだったのですか。ありがとうございます。
 あ、「HTMLを解釈しない」といっても、半角不等号は消えてしまうんですね…

># 続けて書いても解釈されないのなら、SSI が使えないのでしょうけど。

 続けていろいろやってみたのですが、やはり呼び出されないようです。
 SSIは許可されていないけれどもログが取りたい、という場合、どうすればよいのでしょ
うか?参考になる書籍などでもよいのですが。
 それから、うちのサーバーはにあさんのカウンタを置くことはできるのですが、これは
「SSI/CGIが使える」のとは関係しないのでしょうか?でもカウンタファイルはコンパイル
してあるし…


[NEW] フォロー記事投稿 記事のキャンセル
From: TAKu <taku@mail.club.or.jp>
Subject: Perlで標準入力をecho backさせずに・・・
Date: 1998/11/06 20:37:44

お久しぶり〜、TAKuです。

Perlでちょっとしたプログラムを書いてるのですが、
パスワードの入力を促す際に、どうやっても入力がecho backされて
画面上に出てしまいます。Cで書いたプログラムでも呼べばOKなのでしょうが
Perlのスクリプト単体でパスワードのプロンプトを作る事はできないでしょうか?


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mvg.biglobe.ne.jp>
Subject: Re: Perlで標準入力をecho backさせずに・・・
Date: 1998/11/06 22:02:30
Reference: mesh.program/00549

11月6日に、TAKuさんは書きました。

>Perlでちょっとしたプログラムを書いてるのですが、
>パスワードの入力を促す際に、どうやっても入力がecho backされて
>画面上に出てしまいます。Cで書いたプログラムでも呼べばOKなのでしょうが
>Perlのスクリプト単体でパスワードのプロンプトを作る事はできないでしょうか?
>
perl単体でデスか? うーんどうかな? そう言う機能は無い様な気がします。(^^;

ではperlではパスワードの入力のようにエコーバックしない入力をする場合
どうするかと言うと、

system('stty', '-echo');
エコーバックしない処理...
system('stty', 'echo');

の様に、sttyを呼び出して制御するのが一般的では無いかしら?

あと、perl5 なら、ほぼ標準的に使われている Term::ReadKey と言うモデュールで
端末制御をすると、stty の様なプラットホーム依存な方法を使わなくて済みます。


[RE] フォロー記事投稿 記事のキャンセル
From: TAKu <taku@mail.club.or.jp>
Subject: Re: Perlで標準入力をecho backさせずに・・・
Date: 1998/11/07 21:08:35
Reference: mesh.program/00552

11月6日に、にあさんは書きました。

>11月6日に、TAKuさんは書きました。
>
>>Perlでちょっとしたプログラムを書いてるのですが、
>>パスワードの入力を促す際に、どうやっても入力がecho backされて
>>画面上に出てしまいます。Cで書いたプログラムでも呼べばOKなのでしょうが
>>Perlのスクリプト単体でパスワードのプロンプトを作る事はできないでしょうか?
>>
>perl単体でデスか? うーんどうかな? そう言う機能は無い様な気がします。(^^;
>
>ではperlではパスワードの入力のようにエコーバックしない入力をする場合
>どうするかと言うと、
>
>system('stty', '-echo');
>エコーバックしない処理...
>system('stty', 'echo');
>
>の様に、sttyを呼び出して制御するのが一般的では無いかしら?
>
>あと、perl5 なら、ほぼ標準的に使われている Term::ReadKey と言うモデュールで
>端末制御をすると、stty の様なプラットホーム依存な方法を使わなくて済みます。

sttyとTerm::ReadKeyですか。試してみます。

#Lynxでフォローアップを書くのは難しい・・・(^^;


[NEW] フォロー記事投稿 記事のキャンセル
From: 三葉工房 <nature-create@amy.hi-ho.ne.jp>
Subject: 私1人の力では,perl習得はとても困難です。どうかお力をお貸し下さい。
Date: 1998/11/23 11:54:17

発言者:三葉工房
タイトル:perl言語の最適の学習法
日時:98/11/19 13:54 


       こないだの,三葉工房です。今回は,もう1つのテスト構文も添えてサポート
    依頼させていただきます。
       私なりに,NIA様のおっしゃられた通り,一通りマニュアルを読みながら勉強
    しています。しかしながら今日にいたり相変わらずperl習得と道は,足踏み
    のままです。1週間近く前に,名前の(JCODE無し)の表示が出来ましたが,
    それから先は,1人の場合だと相当苦労して出来るか出来ないかの気がしてな
    りません。いつまでも足踏みが続きとても悔しい気持ちです。
       perl言語の勉強は,1人で勉強するのは,かなり厳しい感じがします。
       学校でインストラクターと共に学ばなければマスターは難しい物なのでしょうか。
       やはり,perl言語をマスターするのに孤独の環境は,かなりに困難な感じがします。
    
       それでも私としては,どうしてもperlをマスターしたいです。一体どの様に学習すれば
       確実にperl言語を覚えCGIプログラムに応用出来るのでしょうか。
       そして,今回,訂正を加えても同じ結果のJCODEのソース文にもう1つ選択枝の応用して
    未だ未成功のソース文の私の作成しました2種類のテストスクリプトも下記に記述いた
    します。出来れば,どうか改めてアドバイスよろしくお願いします。
       後,パスワード等で使用するパスワード情報のファイルのpassword.txtは,どのように
       記述作成するのでしょうか。それは,マニュアルには,書いてありませんでした。どうか
       お教え願います。
       どうかよろしくお願い申し上げます。
  
   

       スクリプト1
       クライアントhtml=noer.html
       http://www.amy.hi-ho.ne.jp/nature-create/search/noer.html
       ================
       <html><head><title>CGI Test</title></head><body bgcolor="pink"><form method="post"
       action="/cgi-bin/user/nature-create/noeroorhp.cgi"><font color="red" size=4>番号 登録者:<input type=text
       size=15 maxlength=90 name="nese"><p>

       <center>

       <input type=submit value="送信"> <input type=reset value="取り消し">

       </center><p>



       </form></body></html>
       *****************************************************
     cgiファイルnoeroorhp.cgi( NIA様のおっしゃられた通り構文の順序立てを私なり
に行いましたが,相変わらずjcode.plの存在は無視され漢字文字が16進数コードで出てし
まいます。)
       ================
       #!/usr/local/bin/perl

       require './jcode.pl';
       $|=1;
       read (STDIN,$in,$ENV{'CONTENT_LENGTH'});
       ($parameter,$name)=split(/=/,$in);
     $value=($parameter,$name);
       &jcode'h2z_sjis(*value);
       &jcode'convert(*name,'sjis');
       &jcode'convert(*value,'sjis');
     

       print "Content-type: text/html\n"; 
       print "\n";
       print "<html>\n";
       print "<head>\n";
       print "<title>届きました</title>\n";
       print "</head>\n";
       print "<body bgcolor='#9acd32' text='#000000'>\n";
       print "<font color='maroon' size='5'>こんにちは$nameさん</font>\n";
       print "</body>\n";
       print "</html>\n";
       __END__

       ********************
       スクリプト2
       クライアントhtml=test.html
       http://www.amy.hi-ho.ne.jp/nature-create/search/test.html
       ==============================
       <html><head><title>CGI Test</title></head><body bgcolor="pink"><form method="post"
       action="/cgi-bin/user/nature-create/noeroorhp.cgi"><font color="red" size=4>番号 登録者:<input type=text
       size=15 maxlength=90 name="nese"><p>

       <center>

       <input type=submit value="送信"> <input type=reset value="取り消し">

       </center><p>

       </form></body></html>
       ******************************************************
       cgiファイルtest.cgi(色々文章を変えてみたが結局最後までサーバーエラー500でした。)
       ================================================
       #!/usr/local/bin/perl
       use lib './yourdir';
       require './cgi-lib.pl';
       $|=1;
       &ReadParse(*in_data);
       $nese=$in_data{'nese'};

       print
       "Content-type:
       text/html\n";
       print "\n";
       print "<html>\n";
       print "<head>\n";
       if ($nese < 100){
       print "<title>100以上!</title>\n";
       print "</head>\n";
       print "<body bgcolor="yellow">\n";
       print "<font color="red"size=5>100以下!</font>\n";
       }
       else {
       print "<head>\n";
       print "<title>100以下!</title>\n";
       print "</head>\n";
       print "<body bgcolor="yellow">\n";
       print "<font color="red"size=5>100以下!</font>\n";
       }
       print "</body>\n";
       print "</html>\n";
       __END__



       ===========
       以上です。どうかよろしくお願いします。



























       関連URL:http://www.amy.hi-ho.ne.jp/nature-create/search/index.html



この発言にコメントをつける場合は、下記に記入のうえ投稿してください。
(半角カタカナは使用しないで下さい)


発言者名       :

E−Mailアドレス:(ここは省略可)

タイトル      :

コメント      :


関連URLアドレス:(ここは省略可)


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mvg.biglobe.ne.jp>
Subject: perlの学習
Date: 1998/11/25 20:58:09
Reference: mesh.program/00556

11月23日に、三葉工房さんは書きました。

>perl言語の勉強は,1人で勉強するのは,かなり厳しい感じがします。
>学校でインストラクターと共に学ばなければマスターは難しい物なのでしょうか。
>
うーん、今までに他の言語を知っている人がperlを憶えるのは、楽なんですが、
最初に憶える言語がperlだと、それなりに苦労するかも知れません。

やはり、初心者向けの本を見ながらでも、焦らず一歩づつやって行くしか無いんじゃ
ないかしら。あたしはperlの入門書は読んだこと無いので、たしかではないのですが、
人の話では「初めてのperl (ISBN 4-900900-81-8)」が良い、と言うのは
よく聞きますね。

>そして,今回,訂正を加えても同じ結果のJCODEのソース文にもう1つ選択枝の応用して
>未だ未成功のソース文の私の作成しました2種類のテストスクリプトも下記に記述いた
>します。出来れば,どうか改めてアドバイスよろしくお願いします。
>
チョット見てみましたが、うーん、忌憚の無い所を言うと、残念ながら三葉工房さんは
サーヴァ上でCGIスクリプトの試験をするには、まだ力不足だと思います。

WWWサーヴァは多数の人と共有するリソースですから、一人の簡単なミスでもその結果は
非常に多数の人に迷惑をかけます。まずは自分のパソコンなどの上で十分動作試験を行ない、
完璧だと自信が持てた所で、やっとサーヴァ上での実行が可能になります。
# それでも、サーヴァ固有の問題にあたってデバッグが必要になるものですが。

取りあえず、ご自分のパソコン上でperlの実行を行なう環境を整備することが
先決ではないでしょうか? 三葉工房さんのパソコンは何ですか? Windows
マシンなら ActivePerl 辺りをインストールするのが良いかな?
それとも、雑誌の付録にでも付いてるかしら?

# パソコン雑誌と言うのも、ここ数年買ってないので良く分からないのですが...
## 役立たずだな。(^^;;;


[RE] フォロー記事投稿 記事のキャンセル
From: いしどう <ishidou@po.iijnet.or.jp>
Subject: Re: perlの学習
Date: 1998/11/25 23:02:29
Reference: mesh.program/00557

いしどう@パソコン屋 (^^;; です。

11月25日に、にあさんは書きました。
>やはり、初心者向けの本を見ながらでも、焦らず一歩づつやって行くしか無いんじゃ
>ないかしら。あたしはperlの入門書は読んだこと無いので、たしかではないのですが、
>人の話では「初めてのperl (ISBN 4-900900-81-8)」が良い、と言うのは
>よく聞きますね。

そこらへんからはじめるのがいいと、わたしも思います。
あと、PerlとCGIの入門書っつーのも2・3冊出てますので、
大き目の本屋さんで探してみるといいと思いますよ>三葉工房さん

>取りあえず、ご自分のパソコン上でperlの実行を行なう環境を整備することが
>先決ではないでしょうか? 三葉工房さんのパソコンは何ですか? Windows
>マシンなら ActivePerl 辺りをインストールするのが良いかな?

賛成です。とりあえず、手元に Perl で CGI を動かす環境を
構築してから、その上で本を読みながらいろいろ試してみる
のが一番近道だと思います。

Windows用の Perl は、にあさんが紹介している ActiveState
の Active Perl を入手すればいいですし、Web Server は、
AnHTTPd がフリーでWindows95/98/NT上で動くのでいいと
思います(説明も日本語だし)

Macだと、どうなるんだろう…わかんない

と、えらそーなことをいってるわたしとて、最初はインターネット
上のドキュメント(英語)を読みながら、わけもわからず CGI
を書きちらかして(perlは知ってたけど)、動かなくって1ヶ月以上
無駄に過ごしてしまった経験がある(しかも仕事で (^^;;)ので、
ちゃんと本を読んで勉強する事を、強くお勧めいたします。


[RE] フォロー記事投稿 記事のキャンセル
From: NK <beatbase@mxb.meshnet.or.jp>
Subject: Re: perlの学習
Date: 1998/11/27 00:32:38
Reference: mesh.program/00558

こんにちは、NKです。

>Macだと、どうなるんだろう…わかんない

Macでは、MacPerlとMacHTTPの組み合わせで実現できます。
最近はこれでCGIのテストをしています。

では!


[RE] フォロー記事投稿 記事のキャンセル
From: Shige <t_shigetome@muf.biglobe.ne.jp>
Subject: Re: perlの学習
Date: 1998/11/27 13:03:08
Reference: mesh.program/00557

11月25日に、にあさんは書きました。

>11月23日に、三葉工房さんは書きました。
>
>>perl言語の勉強は,1人で勉強するのは,かなり厳しい感じがします。
>>学校でインストラクターと共に学ばなければマスターは難しい物なのでしょうか。
>>
>うーん、今までに他の言語を知っている人がperlを憶えるのは、楽なんですが、
>最初に憶える言語がperlだと、それなりに苦労するかも知れません。
>
>やはり、初心者向けの本を見ながらでも、焦らず一歩づつやって行くしか無いんじゃ
>ないかしら。あたしはperlの入門書は読んだこと無いので、たしかではないのですが、
>人の話では「初めてのperl (ISBN 4-900900-81-8)」が良い、と言うのは
>よく聞きますね。
>

 「初めてのperl (ISBN 4-900900-81-8)」でも
 プログラム経験が無い方には難しいようです。

 とはいえ、この辺の本を参考にしながら経験を積むしかないように思えます。
 身近な人で教えてくれる人を捕まえるとかなり楽になるのでは?

 Perlではありませんが、例えばCマガの後ろの方に初心者向けのコラムがあります。
#入門講座ではない 一見するとただの読み物のようにも見える
 その辺をCでなくPerlでやってみるのもいいかもしれませんね

 また、Perlでなくてもプログラミングと言うものを知りさえすれば
 なんでもいいように思えます。Perlならば


[NEW] フォロー記事投稿 記事のキャンセル
From: perl習得の才能が問われる三葉工房の管理者 <nature-create@amy.hi-ho.ne.jp>
Subject: 改めてサポート依頼します
Date: 1998/12/03 17:53:50

又,三葉工房です。
 すみません,perlの習得はとても難しい物で。

質問する前にperlの習得は私はこう思います。

独学の場合

例えば10人がホームページを作成するとします。
もちろん,初歩的なhtmlページを作成し,
すこし複雑なフォームまで作成します。
この段階までは,全員出来ます。
そして,高レベルのページを作成する為にcgiのページ
を作成する為にperlの勉強をします。
cgiのページが満足に出来るのは,全員は難しく,マスター
した人は,10人の中の3人位と言う気がします。
すみませんか,これは,あくまでも私の想像です。

やはり,にあ様のおっしゃられた通りperlの独学は,よほど
の苦労が必要と思います。
1.C等のプログラムが出来る
2.推察力
3.面接形式でperlを伝授してくれる人やインストラクターが存在する
がある事が私なりの多分perl習得の出来る条件なのでしょうか。

後,これは,とても痛い事なのですが私のマシーンはMACなので
使用できるperlコンパイラもMacPerlと限られます。そして,
MachttpとMacPerlを関連利用して,自分のマシーン内にて,
perlのテストをする(プラウザに反応させる事が出来ない。)事すら
出来ませんるだからテストは,確かに力不足なのですがネット上の
サーバーで実行せざるを得ません。

そして,どうすれば,perlを習得できるのかを自分なりに考え,マニュアル本に
記述してある(今回は,ゲストブック)cgiスクリプトを丸写ししながら,変数や
関数の意味を1つ1つ調べ手書きで書き上げ,Kncov.pmをダウンロードしてcgi-
binのサーバー上のフォルダーに入れてサーバーでテストをしてもあいかわらずサ
ーバーエラー500のままです。また,そのソースー文を下に又記述させていただきます。
どうかサポート宜しくお願いします。どうしてもプロの方に頼らないとperlの習得
は究めて困難です。cgiが作動してperlの習得が成立すると私は思います。
perlの教則本が生かせないというのは,本当に悔しいと思います。
でもあきらめてはいけませんが,自分は,perlを習得するのに向いているのかを
考えなければならない気もします。
愚痴まで記述してすみません。これから何度もサポート依頼すると思いますが
どうか宜しく御願いします。私は,本当にperlプログラミングのプロになって見たいです。

クライアント用html
gestbook.html
http://www.amy.hi-ho.ne.jp/nature-create/search/gestbook.html

<html><head><title>Please input to the yourself.</title></head><body bgcolor="orange">
<form action="/cgi-bin/user/nature-create/gestbook.cgi" method="post">
<p><table bgcolor="#ffcc99" border=5><tr><th><font color="navy"size=4><b>Your name</b></font></th></tr></table><p><input name="name" size=45>
<p><table bgcolor="#ffcc99" border=5><tr><th><font color="navy"size=4><b>Your mail adress</b></font></th></tr></table><p><input name="mail" size=45>
<p><table bgcolor="#ffcc99" border=5><tr><th><font color="navy"size=4><b>Your comment</b></font></th></tr></table><p><textarea name="coment"rows=4 cols=60 wrap="hard"></textarea><p><center><input type="submit"value="Submit"><p><input type="reset"value="Reset"></center></form></body></html>


gestbook.cgi

#!/usr/local/bin/perl
$|=1;
use lib 'yourlib_dir';
require './cgi-lib.pl';
use './Kconv.pm';
$date=localtime();
$file="/nature-create/search/file/gestfile.html";
$url="/nature-create/search/gest/gestfile.html";
$entry_url="/nature-create/search/gestbook.html";

&ReadParse(*in);
$coment=$in{'coment'};
$name=$in{'name'};
$mail=$in{'mail'};

if (not $name) {
&CgiError("No writed to yourname!",
"Please go back around inputpage!");
 exit;
}
elsif (not $body) {
&CgiError("No writed to sentence!",
"Please go back around inputpage!");
exit;
}

$body=~ s/\r\n/<br>/g;
$body=~ s/\r/<br>/g;
$body=~ s/\n/<br>/g;
&tosjis($body);
&tosjis($name);

open GUESTBOOK, ">>$file"
  or &Cgidie("This page can't Writtig!",
"Please try to sumit in more time again!");
print GUESTBOOK <<"HERE";
<hr>
<b>Dear $name</b><a href=\"mailto:$mail\">
$name</a> Writtng time:$date<p>
$body
HERE

close GUESTBOOK;

print <<"HEADER";
Content-type: text/html

<html><head><title>Under stand writed the GUESTBOOK</title></head>
<body bgcolor="yellow">
Thank you! writting to the GUESTBOOK!
Your contents is ascertained in <a href=\"$url\">Entry input page</a>.
Retarnnig to input page.
<a href=\"$entry-url\">Input page</a>
</body></html>
HEADER
exit 1;
--END--

use kconv;



 


[RE] フォロー記事投稿 記事のキャンセル
From: TAD <hotani@mua.biglobe.ne.jp>
Subject: perl習得
Date: 1998/12/03 20:33:59
Reference: mesh.program/00561

12月3日に、perl習得の才能が問われる三葉工房の管理者さんは書きました。

>例えば10人がホームページを作成するとします。
>もちろん,初歩的なhtmlページを作成し,
>すこし複雑なフォームまで作成します。
>この段階までは,全員出来ます。

HTMLは少しくらい文法が間違っていても
ブラウザがいいように解釈してくれてそれなりに表示してくれますから、
「HTMLなんて簡単さ」などと思ってしまいがちですが、(私もそうでした...(#^_^#))
ほんとに正しいHTMLが書けているかはあやしいものです。(私もまだまだですが...)

>そして,高レベルのページを作成する為にcgiのページ
>を作成する為にperlの勉強をします。
>cgiのページが満足に出来るのは,全員は難しく,マスター
>した人は,10人の中の3人位と言う気がします。

perlは別にWEBページを作るためのものではないです。
あくまでもプログラミング言語です。
そこは正しく認識しておいた方がいいです。HTMLとは全く異質なものです。

プログラミング言語であるからには、
文法が間違っていたら絶対に動きませんし、(コンパイルなんかは通らない)
プログラミングしたらその通りにしか動いてくれません。
(コンパイラが適当に補完したり、拡大解釈したりしたら、逆に怖い。)

だから、プログラミング言語は正確に理解する必要があります。

>1.C等のプログラムが出来る

何らかのプログラミング経験(学習経験)はあった方がいいとは思いますが、
あとは

2.やる気 だけだと思います。

>どうかサポート宜しくお願いします。どうしてもプロの方に頼らないとperlの習得

三葉工房さんは、「サポート」を期待しているようですが、
誰もお金をもらっているわけではないですし、
暇を持て余しているわけでもありませんから、
何から何まで教えてもらえると思わない方がよいと思います。
プロによるサポートを期待するのでしたら、
しかるべきところでお金を払ってサポートしてもらって下さい。

先ずはどこかでプログラミングの勉強をした方がよいと思いますけど。


[RE] フォロー記事投稿 記事のキャンセル
From: にあ <nir@mvg.biglobe.ne.jp>
Subject: perlの習得
Date: 1998/12/06 21:10:57
Reference: mesh.program/00561

12月3日に、三葉工房さんは書きました。

>後,これは,とても痛い事なのですが私のマシーンはMACなので
>使用できるperlコンパイラもMacPerlと限られます。
>
Macの場合、当然MacPerlを使うことになるんですが、MacPerlと言うのは
一寸癖があって、「ふつーの」perlのテキストを読みながらだと、戸惑うことが
あるかも知れませんね。

MacPerl自身やそれをCGIで使う場合に、UnixやWindowsのperlに対して、
どの辺が違っていて、どこに気を付けたらいいのか、と言うような事に付いては、
よしもとさんがまとめた「MacPerl Differences in CGI Programming」と言う
文書に詳しいですから、MacPerlを使う方は一度目を通してみるとよいと思います。

# まあ、この辺に書いてあることが、すらすらわかるのは、大分perlに慣れてから
# だとは思いますが。

この文書に限らず、よしもと氏のMacPerl IslandはMacPerlに関するTipsが
いっぱいですから、非常に参考になると思います。もちろん、自分のマシンで
MacPerlのCGIスクリプトを動かす方法等も載っていますよ。

>そして,どうすれば,perlを習得できるのかを自分なりに考え,マニュアル本に
>記述してある(今回は,ゲストブック)cgiスクリプトを丸写ししながら,
>
まず、perlによるCGIスクリプトはあくまでもperlのプログラムであることに
留意して下さい。perlによるプログラムが書けなければperlによるCGIは
かけません。CGIは単なるプログラムに比べて考慮すべき点も多いですから、
一足飛びにCGIを作ることなく、まずは手元のperl環境でプログラムする事を
憶えて下さい。

まずはperlと言う言語自体を憶える事が先決ですね。自分の望む動作を
自在にperlで書けるようになったなら、実はCGIと言うのは全然難しい
ものでは無い事にも気が付くでしょう。

それから、自分のMac上にサーヴァを立ててCGIの実験をする場合には、
福井県立大の田中先生のEasyBBSによる会議室「Web Scripter's Meeting」が
非常に参考になると思います。Mac上でNetworkサーヴァを立てている人が
集まっていますから、Mac固有の問題に付いても解決できるでしょう。


[NEW] フォロー記事投稿 記事のキャンセル
From: 三葉工房の管理者 <nature-create@amy.hi-ho.ne.jp>
Subject: 条件指定がサブルーチンに敗れました!
Date: 1999/01/11 18:24:59

明けましておめでとうございます。
三葉工房です。
少しは,実行が出来るようになっています。
実は,条件指定がサブルーチンtoppage2に負けてしまって,
スクリプト上部に近い方へ記述にされています条件指定文
if ($in{'inemit'} ge $pope) {
&check;
&input;
&toppage;

}
else {&toppage2;}
が$popeに"登録"がプロンプトから代入(サブミットボタンを押すこと)されれば,
真となり,上記のif文が成立するはずですが,サブミットボタンを押して$pope
に登録が代入されても何故か,偽になり,同じ&toppage2のhtml"
ページタイトル(否定一体化掲示板(簡潔スクリプト))が繰り返しリロードされるだけで
他の3つのサブルーチン(&check;&input;&toppage;)に実行権が渡りません。
そして,サブミットボタンも別スクリプトでテストした所,$in変数に変換可能な事が
確かめられています。
 ところで,if文が99%成立してもいいのに関わらず,elseにされてしまうのは,
何故でしょうか。問題のスクリプトも下部にコピーいたします。どうかアドバイス宜しくお願いします。
 
(注)ちなみに,&toppageと&toppage2のhtmlページは,見た目は,同じですが,上記の
if文の真と偽に関しての検証目的で,タイトル名とサブミット名を書き替えて,&toppage
のコピーした&toppage2を同一スクリプト内に作成した訳で
タイトルが
&toppageは,一体化掲示板(簡潔スクリプト)
&toppage2は,否定一体化掲示板(簡潔スクリプト)
とやや異なるところと,サブミットボタン名が
&toppageはsubmit
&toppage2はinemitと違い
。その他は,全く同じです。
=================
問題スクリプト=elpence.cgi
http://www.amy.hi-ho.ne.jp/cgi-bin/user/nature-create/elpence.cgi
========================
#!/usr/local/bin/perl
$|=1;
require './cgi-lib.pl';
read (STDIN,$in,$ENV{'CONTENT_LENGTH'});
($sec,$min,$hour,$day,$mon,$year,$wday)=localtime(time);
$mon++;
$seirei=($year+1900);
$wareki=($year-88);
$BaseDir = "$ENV{'HOME'}/html/search";
$NEWURL="http://www.amy.hi-ho.ne.jp/cgi-bin/user/nature-create/entlertg.cgi";


&ReadParse(*in);
$coment=$in{'coment'};
$name=$in{'name'};
$mail=$in{'mail'};
$gurl=$in{'gurl'};
$hpagename=$in{'hpagename'};
$dre='grss.dat';

@week=("日","月","火","水","木","金","土");
$yobi=$week[$wday];
$date=sprintf ("%4d年(平成%2d年)%2d月%2d日  $yobi曜日%3d時%2d分%2d秒"
,$seirei,$wareki,$mon,$day,$hour,$min,$sec);
&ReadParse(*in);
$coment=$in{'coment'};
$name=$in{'name'};
$mail=$in{'mail'};
$gurl=$in{'gurl'};
$hpagename=$in{'hpagename'};
$maxcment="100";
$remaxcment="50";
$wordcnt=length($in{'coment'});
$wordbit=($wordcnt/2-1);
$overtop=($wordbit-$maxcment);
$overdown=($remaxcment-$wordbit);
$pope="登録";

if ($in{'inemit'} ge $pope) {
&check;
&input;
&toppage;

}
else {&toppage2;}




sub toppage{
open (SSTBOOK, "$BaseDir/$dre") || &CgiDie("This page can't Writtig!",
"Please try to sumit in more time again!");
@Data=<SSTBOOK>;
close SSTBOOK;



print "Content-type: text/html\n\n";

print "<html>\n";
print "<head>\n";
print "<title>一体化掲示板(簡潔スクリプト)</title>\n";
print "</head>\n";
print "<body bgcolor=\"orange\">\n";
print "<p>\n";
print "<table bgcolor=\"black\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"orange\"size=5>\n";
print "<b>一体化掲示板</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "<tr>\n";
print "<td>\n";
print "<font color=\"yellow\"size=4>(注意!)此の試験実行掲示板のコメント文字数は,50文字以上100文字以内の範囲に制限されていますので,その範囲内の文字数で御記入願います。</font>\n";
print "</td>\n";
print "</tr>\n";
print "<tr>\n";
print "<th>\n";
print "<center>\n";
print "<a href=\"/nature-create/search/index.html\">\n";
print "<font color=\"yellow\"size=4>MISTUBA SEARCHPAGE</font>\n";
print "</a>\n";
print "</center>\n";
print "</th>\n";
print "</tr>\n";
print "</center>\n";
print "</table>\n";
print "<p>\n";
print "<form method=POST action=\"elpence.cgi\" >\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>登録者名</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"name\" size=45>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>Eメールアドレス</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"mail\" size=45>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>登録者のホームページ名</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"hpagename\" size=60>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>ホームページのURL</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"gurl\" value=\"http://\" size=60>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>コメント</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<textarea name=\"coment\" rows=4 cols=60 wrap=\"hard\"></textarea>\n";
print "<p>\n";
print "<center>\n";
print "<input type=submit name=\"submit\" value=\"登録\">\n";
print "<p>\n";
print "<input type=reset value=\"リセット\">\n";
print "</center>\n";
print "</form>\n";
print "<hr size=5>\n";
print "<center>\n";
print "<font color=\"#330066\" size=5>\n";
print "<b>此れ迄の書き込み</b>\n";
print "</font>\n";
print "</center>\n";
print "<hr size=5>\n";

foreach $match(@Data){
@catchin=split(/&&/,$match);
print "<a href=\"mailto:$catchin[0]\">\n";
print "<font color=\"#006600\" size=4>$catchin[1]</font>\n";
print "</a>\n";
print "<font color=\"#000066\" size=3>:$catchin[2]</font><br>\n";
print "<a href=\"$catchin[3]\" target=\"new\">\n";
print "<font color=\"#990066\" size=3>$catchin[4]</font>\n";
print "</a>\n";
print "<font color=\"#330000\" size=3>$catchin[5]</font>\n";
print "<hr size=5>\n";
}
print "</body>\n";
print "</html>\n";
}

sub toppage2{
open (SSTBOOK, "$BaseDir/$dre") || &CgiDie("This page can't Writtig!",
"Please try to sumit in more time again!");
@Data=<SSTBOOK>;
close SSTBOOK;



print "Content-type: text/html\n\n";

print "<html>\n";
print "<head>\n";
print "<title>否定一体化掲示板(簡潔スクリプト)</title>\n";
print "</head>\n";
print "<body bgcolor=\"orange\">\n";
print "<p>\n";
print "<table bgcolor=\"black\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"orange\"size=5>\n";
print "<b>一体化掲示板</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "<tr>\n";
print "<td>\n";
print "<font color=\"yellow\"size=4>(注意!)此の試験実行掲示板のコメント文字数は,50文字以上100文字以内の範囲に制限されていますので,その範囲内の文字数で御記入願います。</font>\n";
print "</td>\n";
print "</tr>\n";
print "<tr>\n";
print "<th>\n";
print "<center>\n";
print "<a href=\"/nature-create/search/index.html\">\n";
print "<font color=\"yellow\"size=4>MISTUBA SEARCHPAGE</font>\n";
print "</a>\n";
print "</center>\n";
print "</th>\n";
print "</tr>\n";
print "</center>\n";
print "</table>\n";
print "<p>\n";
print "<form method=POST action=\"elpence.cgi\" >\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>登録者名</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"name\" size=45>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>Eメールアドレス</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"mail\" size=45>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>登録者のホームページ名</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"hpagename\" size=60>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>ホームページのURL</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"gurl\" value=\"http://\" size=60>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>コメント</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<textarea name=\"coment\" rows=4 cols=60 wrap=\"hard\"></textarea>\n";
print "<p>\n";
print "<center>\n";
print "<input type=submit name=\"inemit\" value=\"登録\">\n";
print "<p>\n";
print "<input type=reset value=\"リセット\">\n";
print "</center>\n";
print "</form>\n";
print "<hr size=5>\n";
print "<center>\n";
print "<font color=\"#330066\" size=5>\n";
print "<b>此れ迄の書き込み</b>\n";
print "</font>\n";
print "</center>\n";
print "<hr size=5>\n";

foreach $match(@Data){
@catchin=split(/&&/,$match);
print "<a href=\"mailto:$catchin[0]\">\n";
print "<font color=\"#006600\" size=4>$catchin[1]</font>\n";
print "</a>\n";
print "<font color=\"#000066\" size=3>:$catchin[2]</font><br>\n";
print "<a href=\"$catchin[3]\" target=\"new\">\n";
print "<font color=\"#990066\" size=3>$catchin[4]</font>\n";
print "</a>\n";
print "<font color=\"#330000\" size=3>$catchin[5]</font>\n";
print "<hr size=5>\n";
}
print "</body>\n";
print "</html>\n";
}
sub check{
if (! $name) {
&CgiError("No writed to yourname!",
"Please go back around inputpage!");
 exit;
}

if($wordbit>130){print <<"MOROVER";
Content-type: text/html

<html><head><title>かなりコメント数が$overtop個もオーバーしました!</title></head>
<body bgcolor=\"\#cc0000\">
<font color=\"\#ffff66\" size=5><b>彼方の記入されたコメント数は $wordbit個で,当フォームは,コメント数が30も多い場合に時に当ページが出力されてしまいます。</b>
</font><p>
<font color=\"\#ccffcc\" size=5>そのコメント数は基準の50個に$overtop個ものかなりのオーバーです。 </font>
</body></html>
MOROVER
exit;}
if($wordbit>$maxcment){ print <<"OVER";
Content-type: text/html

<html><head><title>コメント数が$overtop個越えています!</title></head>
<body bgcolor=\"\#003399\">
<font color=\"\#ffff66\" size=5><b>彼方の記入されたコメント数は $wordbit個です。</b>
</font><p>
<font color=\"\#ccffcc\" size=5>そのコメント数は基準の100個より$overtop個オーバーしています。</font>
</body></html>
OVER
}

if($wordbit>1){if($wordbit<25){print <<"MORDOWN";
Content-type: text/html

<html><head><title>かなりコメント数が$overdown個も足りません!</title></head>
<body bgcolor=\"\#110000\">
<font color=\"\#ffff66\" size=5><b>彼方の記入されたコメント数は $wordbit個で,当フォームは,コメント数が25も少ない時に当ページが出力されてしまいます。</b>
</font><p>
<font color=\"\#ccffcc\" size=5>そのコメント数は基準の50個に$overdown個ものかなりの不足です。 </font>
</body></html>
MORDOWN
exit;}

if($wordbit<$remaxcment){print <<"DOWN";
Content-type: text/html

<html><head><title>コメント数が$overdown個足りません!</title></head>
<body bgcolor=\"\#660000\">
<font color=\"\#ffff66\" size=5><b>彼方の記入されたコメント数は $wordbit個です。</b>
</font><p>
<font color=\"\#ccffcc\" size=5>そのコメント数は基準の50個に$overdown個不足しています。 </font>
</body></html>
DOWN
exit;}}

elsif($wordbit==0){&CgiError("No writed to comment!",
"Please go back around inputpage!");
exit;}

$coment=~ s/\r\n/<br>/g;
$coment=~ s/\r/<br>/g;
$coment=~ s/\n/<br>/g;
&namabbs;
sub namabbs{


print <<"REPLAY";
Content-type: text/html

<html><head><title>$in{'name'}さん:書き込みを御受け致しました。</title><meta http-equiv="refresh" content="5; url=$NEWURL "></head>
<body bgcolor=\"\#cc66ff\">
<font color=\"\#660000\" size=5><b>$in{'name'}さん,彼方の記入なされたコメント数は,$wordbit個でコメント数規定に合致しました。</b></font><br><font color=\"\#ffff66\" size=5><b>それに伴い書き込みを御受け致しました。どうもありがとうございました。</b>
</font><p>
<font color=\"\#ccffcc\" size=5>御帰りのページは<a href=\"$NEWURL \">こちら</a>でございます。</font>
</body></html>
REPLAY
exit 1;}
exit;}
sub input{
open (SSTBOOK, ">>$BaseDir/$dre") || &CgiDie("ファイルが開きません!",
"何処かの構文が間違っています!");
print SSTBOOK "$mail&&$name&&$date&&$gurl&&$hpagename&&$coment\n";
close SSTBOOK;
}


__END__


以上78記事(キャンセル分を含む)


・ ホームペーヂに戻る
nir@mvg.biglobe.ne.jp
Last Update: 8 March 1998