5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【Perl 】初心者コーナーPart8

1 :名無しさん@お腹いっぱい。:01/10/24 14:11 ID:???
いらっしゃーい、perlのコーディングで困ってる人のスレです。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://ebi.2ch.net/test/read.cgi/php/988809842/l50
CGIの質問はこちら【CGIだけど、なんか質問ある?part4】
http://ebi.2ch.net/test/read.cgi/php/1000804655/l50

過去ログ、その他の役立ち情報は>>2-10を見よう。

2 :名無しさん@お腹いっぱい。:01/10/24 14:12 ID:???
[過去ログ]
Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
Part5 http://corn.2ch.net/test/read.cgi?bbs=php&key=988728069
Part6 http://corn.2ch.net/test/read.cgi?bbs=php&key=996075607
Part7 http://ebi.2ch.net/test/read.cgi/php/1000267444/

[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html

3 :名無しさん@お腹いっぱい。:01/10/24 14:13 ID:???
[総合]
 ・Perl Com: http://www.perl.com/pub/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/
[お薦め]
 ・Perl Recipes: http://www.effectiveperl.com/recipes/
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
[Document&Tutorial]
 ・Perl News: http://www.news.perl.org/
 ・Perl Monks: http://www.perlmonks.org/
 ・PerlMonth - Online Perl Magazine - : http://www.perlmonth.com/index.html
 ・use Perl All The Perl: http://use.perl.org/
 ・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
 ・Perldoc.com: http://www.perldoc.com/
 ・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
 ・Rex Swain's Home Page: http://www.rexswain.com/
 ・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
 ・Perl Tuts: http://savage.net.au/Perl-tutorials.html
 ・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
 ・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
 ・Perl for Newbie: http://www.harukaze.net/~mishima/perl/index.html
 ・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
 ・Perlfect Solutions: http://perlfect.com/
 ・The Perl Archive : http://www.perlarchive.com/

4 :いい所あったら10までに貼ってちょ:01/10/24 14:14 ID:???
[Module]
 ・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module/
 ・PPMPackages: http://www.activestate.com/PPMPackages/
 ・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm
[Security]
 ・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
 ・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
 ・CGI and Security http://www.japu.org/cgi/security/
 ・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
 ・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
 ・How to Write Secure Code:http://www.shmoo.com/securecode/
 ・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt
[OS]
 ・Linux日本語マニュアル:http://www.linux.or.jp/JM/
 ・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/

5 :名無しさん@お腹いっぱい。:01/10/24 14:18 ID:???
>>2
過去ログが全部見れたのは俺だけでしょうか?

> Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能 # 見れました。
> Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能 # 見れました。
> Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能 # 見れました。
> Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能 # 見れました。

6 :5:01/10/24 14:20 ID:???
ていうか、これを最初に言うべきでした…。

「お疲れさまです。」

7 :名無しさん@お腹いっぱい。 :01/10/24 14:22 ID:???
えウソ?、datは有るけどhtmlは見れます?
http://tako.2ch.net/perl/dat/957208980.dat ←これは有る
http://tako.2ch.net/perl/kako/957208980.html←これは無い
read.cgiは止まってるですよね・・・

8 :名無しさん@お腹いっぱい。:01/10/24 14:31 ID:???
そーか、>>5 了解っす
Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
tako鯖はdatが生きてるんで、かちゅーしゃだと見れるです

9 :名無しさん@お腹いっぱい。:01/10/24 15:52 ID:VLOxIr/R
前スレで CGI.pm の使い方について
%FORM = $cgi->Vars;
の替わりに
%FORM = map{ $_, $cgi->param($_) } $cgi->param();
を教えていただきました。

同じ nameが複数あった場合、前者では

@items = split( "\0", $FORM{item} );

で取り出せましたが、後者ではうまくいきません。
$FORM{item}->[0]
のようにしてもダメでした。どのように格納されているのでしょう?

$cgi->param_fetch('item');
しかないのでしょうか?

10 :9:01/10/24 15:56 ID:???
>>9
自己レス
%FORM = map{ $_, join("\0",$cgi->param($_)) } $cgi->param();
とすることで解決しました。

11 :9:01/10/24 16:49 ID:VLOxIr/R
またまた CGI.pm絡みで質問です。
ファイルアップローダを作るとき 2.47以降の CGI.pmなら

$handle = $cgi->upload('file');
while( <$handle> )

とできますが、プロバイダの CGI.pm が古いため

while( <$cg->param('file')> )

という方法になってしまいます。
しかしこれだと「c:\hoehoe.txt」のようなハンドル名になって
受け付けてくれません。

なにか対処方法はないものでしょうか?

12 :名無しさん@お腹いっぱい。 :01/10/24 18:11 ID:???
前スレ963(http://ebi.2ch.net/test/read.cgi/php/1000267444/963)さん
おっしゃる通りです!、例え話も良く解りました (^ ^ )

;他に嵌るパターンて言うと、ループ、再帰、mod_perl環境、undumpした
最後の2つが勉強不足で分からないですが、この辺は他の言語と同じですね

;**もし**宣言の事言ってるんだったら、こっちはちゃんとしよう。
了解しました、strictプラグマを常用してます。
でも、宣言さえしなくても動いてしまうのは凄いですね。
少しのステップで色々出来ちゃうんで、戸惑ってたんです (^ ^ )
何気にソケットを叩けたりと色々楽しそうです。
今からログを漁ろうと思います。

13 :名無しさん@お腹いっぱい。:01/10/24 19:24 ID:???
その代わりPerlで一行コード満載コーディングしてると
Cに帰った時酷く冗長に見えて鬱になるぞ っと
# 頭の切り替えなんだよなあ

14 :野獣 牛兵衛 ◆n.Nd.2Co :01/10/24 22:45 ID:i9QZ5F40
こんにちは
オフ板に perlオフの企画スレ立てました
よろしければ 来てください
http://natto.2ch.net/test/read.cgi?bbs=off&key=1003929930

15 :名無しさん@ほっとぞぬ:01/10/24 23:48 ID:???
自己レス

>@fff[0..1][2]
>のようなスライスをすることは出来ますか?
>(スライスとは言わないのかも)

一応下記のような方法を考えてみました

@kkk = map { @$_[2] } @fff[0..1];

16 :名無しさん@お腹いっぱい。:01/10/25 01:50 ID:k4ugLZV+
perlcc.batが使えません。
一応、vc++6.0 sp5は入れてあるんですが、出来上がったexeが実行できません。
どこかにいいドキュメントは無いでしょうか?
#!D:\perl\bin\perl.exe
print "Hello perlcc\n";

たったのこれだけをコンパイルしたいんですが。。

17 :名無しさん@お腹いっぱい。:01/10/25 02:36 ID:???
my $name = 'tinko pinpin';
1)
if($name eq 'tinko pinpin') {
 cnt++;
}
--------と
2)
cnt++ if($name eq 'tinko pinpin');

をループさせて速度を測ったら
1)21 wallclock secs (20.95 usr + 0.01 sys = 20.96 CPU)
2)10 wallclock secs (10.23 usr + 0.00 sys = 10.23 CPU)
くらい違いますが、内部ではどのような処理の違いがあるんですか?
教えてください!!!!!!!!!!!!!!!1

18 :名無しさん@お腹いっぱい。:01/10/25 02:39 ID:???
>17
なぜにマルチしますか?
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=991994996&st=520&nofirst=true

19 :名無しさん@お腹いっぱい。:01/10/25 02:49 ID:???
答えられないなら初めからそう言ってください(ぷぷぷ

20 :名無しさん@お腹いっぱい。:01/10/25 04:17 ID:???
>>17
気になるならソース嫁。
http://www.perl.com/CPAN/src/stable.tar.gz

perl-5.6.1/perly.y の sideff と cond を見て、それぞれの構文のコストを見積もれ。
内部命令の実装は perl-5.6.1/op.c にある。

21 :_gunzip:01/10/25 04:37 ID:???
後者が遅くなるのは、{}ブロック内のmy変数padlistを作成したり、
脱出時のlocal変数のsavestackからのrestoreなどを処理する
クリーンアップコードが必要になるからです。

...とは言え、気にする程のオーバーへッドではありません。

22 :_gunzip:01/10/25 04:39 ID:???
後者->前者

23 :名無しさん@お腹いっぱい。:01/10/25 06:43 ID:???
ぱ、ぱ、ぱ、ぱーるの大爆笑
こりゃこりゃこりゃこりゃこりゃこりゃ

24 :前スレの911:01/10/25 09:25 ID:MgH0xJgH
passはそういう渡しかた。
urlもdiary.cgiのままです。

25 :名無しさん@お腹いっぱい。:01/10/25 09:47 ID:???
おまえさ、その聞き方じゃ前スレ読み返さなきゃ訳わかんねぇよ。

せめて前スレの該当記事のトコのURL書いとけよ。

エラー処理のトコで入力されたパスワードと正確なパスワードを表示するようにして
ちゃんと同じパスワードが渡ってるか確認しろ。

てゆーか
http://ebi.2ch.net/test/read.cgi/php/1000267444/937

で既に指摘されてるだろ?

結果はどうなったんだよ。

26 :25:01/10/25 09:48 ID:???
25は>>24宛て

27 :今日からPerlさん:01/10/25 10:50 ID:GGoket9P
超初心者のファイル移動に関する質問です

----------
$Old_Dir = './old';
$New_Dir = './new';
$File_Name = 'sample.html';

$Old_File = $Old_Dir + $File_Name;
$New_File = $New_Dir + $File_Name;

rename($Old_File,$New_File);
----------

これでは./old/sample.htmlが./new/sample.htmlに移動してくれません
どうしたらよいのでしょうか

28 :名無しさん@お腹いっぱい。:01/10/25 11:07 ID:???
> $Old_File = $Old_Dir + $File_Name;
まず、+ では文字列の連結は出来ないよ。
文字列の連結はピリオドなので、やるなら
$Old_File = $Old_Dir . $File_Name;
でも、これじゃ出来ない。
$Old_File がどういう値になるか考えてみて。

29 :名無しさん@お腹いっぱい。:01/10/25 11:09 ID:???
ヤダねったら、ヤダね。

30 :名無しさん@お腹いっぱい。:01/10/25 11:17 ID:???
rename($Old_File,$New_File) or die "$Old_File:$New_File:$!";

31 :名無しさん@お腹いっぱい。:01/10/25 11:40 ID:???
>27
あと、その場合 $Old_Dir と $New_Dir がそれぞれ
'./old/' './new/' でなくてはなりませんね。
そのままでは './oldsample.html' みたいになってしまいます。

32 :28:01/10/25 11:49 ID:o7msDzki
>>31 萎え。
言わずにちょっとだけ考える余地を残しておいたのに・・・

33 :31:01/10/25 12:22 ID:???
>>32
そりゃ失礼。
っていうかそのスタイルいいですね。今後はそういう風にします。

34 :>>17 こちらのほうが…:01/10/25 13:02 ID:???
http://piza2.2ch.net/test/read.cgi/tech/991994996/522
$name eq 'tinko pinpin' and ++$cnt

35 :煽ってるわけじゃないですが:01/10/25 14:26 ID:???
コンパイラによる最適化とかって、無いんですか?

36 :名無しさん@お腹いっぱい。:01/10/25 15:09 ID:???
最適化のオバヘッドのが無駄じゃんかよ
漢ならそんな事気にすんなよ な!
コンパイラ如きで最適化されてるうちは素人って事よ
がはははは!!!!    はぁ....

37 :名無しさん@お腹いっぱい。:01/10/25 16:32 ID:???
>>35
何を指して言っているのかわからん。

38 :名無しさん@お腹いっぱい。:01/10/25 17:00 ID:???
op.cのpeep()を見ろ、と昔誰かが書いてた。

39 :名無しさん@お腹いっぱい。:01/10/25 17:35 ID:???
( ´∀`)<おまえもぬー

40 :名無しさん@お腹いっぱい。:01/10/25 18:32 ID:o6v/hYdr
DBMの質問です。

DBMってレコードの数が多いと、オープンしたときにそれなりのメモリを消費するのでしょうか?

41 :名無しさん@お腹いっぱい。:01/10/25 18:56 ID:???
DBMの場合はハッシュに全てデータを入れてるように見えるけど、
実際はデータが全てメモリに展開されることは無かったかと。

使い方によってはメモリ食うだろうし、データが多くなればなるほど
重くなるのはどんなシステムでも同じですが。

42 :今日からPerlさん:01/10/25 19:50 ID:YIAkhk5x
結局わかんないので正解ください

43 :名無しさん@お腹いっぱい。:01/10/25 19:58 ID:???
>>42
答え出てます。
>>28>>31

44 :JAPU ◆JAPUTeX. :01/10/25 20:08 ID:???
>>42
何が分からないの?
単に正解だけを求めるのは良くないよ。

----
ちなみに、http://www.japu.org/cgi/security/ は既に移転しています。
(ジャンプするようにしてあるけど。)

45 :名無しさん@お腹いっぱい。:01/10/25 20:39 ID:???
(^∀^) オマエニハ ムイテナイカラヤメトケ  マウスデコピーシロ
アハハハh アホカ

46 :名無しさん@お腹いっぱい。:01/10/25 21:06 ID:???
45 = japu

47 :名無しさん@お腹いっぱい。:01/10/25 21:18 ID:???
45=46

48 :27の母:01/10/25 21:23 ID:???
初心者を指導して気持ちよくなるのは自慰行為
本当に27=42だか知らんが、オナニスト先生は正解も書いてちょんまげ〜

49 :40:01/10/25 21:36 ID:o6v/hYdr
>>41
ハッシュに入れてるのでメモリを食ってるのかと思ってました。
ありがとうございました。

50 :27:01/10/26 00:07 ID:???
>>48 当然。
ボランティアで質問に答えるのが自慰行為以外の何者であるか。

51 :名無しさん@お腹いっぱい。:01/10/26 05:34 ID:yrZd+AXW
掲示板を作ろうとしています。
.htmlファイルにあるフォームに内容を書いて投稿すると.cgiファイルに渡して
処理をし、表示させるというものはどうにか作ることが出来ました。
しかし色々な方が作っている掲示板の中には投稿フォームの表示から書き込まれ
た内容の処理、それらの表示までを.cgiファイルだけでほとんど全ての処理を行
うものがあります。次はこういうスクリプトを作りたいのですが、どうしてもう
まく行きません。

既にログファイルに書き込まれている内容を投稿フォームの下に表示することと
投稿した内容をログファイルに書き込むことはできるのですが、書き込み→処理
→表示ができません。つまり、投稿した内容はリロードしないと読むことが出来
ないのです。

ただ上の動作をさせたいためだけに作ろうとしたスクリプトとはいえ、仕上って
みるとやたらに『</body></html>』の多いものになってしまいました。今までは
どんなに頑張ってもできなかったのに、ここに載せるために書いたものが偶然そ
ういうものになったという棚ボタスクリプトのため、効率も何もあったものでは
なく・・・。

ここに載せるにはあまりにも長いため、別サイトに置くことにしました。
http://www.geocities.co.jp/Outdoors-River/5665/sample.txt

よろしくお願いします。

52 : :01/10/26 07:00 ID:???
http://www.kent-web.com/
ここにある簡単なBBSのスクリプトをダウンロードしてから処理の流れ見て
みましょう。
デバッグの方法がわからないなら、
sub debug_print {
print "Content-Type: text/plain\n\n";
foreach (@_) { print "$_," }
exit;
}
でも使って1行ずつわからない変数があれば目で見て調べましょう

53 :名無しさん@お腹いっぱい。 :01/10/26 07:36 ID:???
>>51
そのソースのまま順番を変えたら表示出来たよ。
$ENV{"CONTENT_LENGTH"}空なら書き込み処理はいらないよね。

54 :名無しさん@お腹いっぱい。:01/10/26 13:12 ID:???
⊤ # 投稿フォームを表示して
&log_viewer; # ログ展開して記事表示
&get_time; # 日時取得して
&decord; # フォームデコードして
&data_write; # ログに書き込み。

>>52さんの言うように
他の配布スクリプトの処理の流れを見て、
BBSがどういう処理をすれば動くのか考えてみるといいかも。

&decord; # フォームデコードして
&get_time; # 日時取得して
&data_write; # ログに書き込み。
⊤ # 投稿フォームを表示して
&log_viewer; # ログ展開して記事表示

55 :名無しさん@お腹いっぱい。:01/10/26 15:10 ID:LxO4xBRI
cronを制御するプログラムを書こうと思っています。
Schedule::Cronを使おうかと考えていますが、実行プログラムをエントリーすることは
できても削除することはできません。
(全部削除することはできる)

cronを自由自在に操るライブラリもしくはcron likeなプログラムってありませんか?

56 :名無しさん@お腹いっぱい。:01/10/26 18:06 ID:YTmtLQJf
はじめまして。
PerlでCGIを書いてるプログラミング初心者です。
いきなりですが、
ローカルで動いたCGIがアップすると動かない場合、
どんなミスが考えられるでしょうか。
パスはあってます。
パーミッションもあってます。
これ意外でなにか思い当たることがあれば教えていただけませんか?
よろしくお願いします。

57 :名無しさん@お腹いっぱい。:01/10/26 18:14 ID:???
>>56
エラーになる原因はいくらでもあります・・
httpdのエラーログ見ましょう。

58 :56:01/10/26 19:14 ID:YTmtLQJf
>>57
すみません、httpdって何ですか?

59 :名無しさん@お腹いっぱい。:01/10/26 19:23 ID:???
(^∀^)すみません、アナタバカデスカ?

60 :名無しさん@お腹いっぱい。:01/10/26 19:58 ID:DV5PQduC
>>59
貴様が馬鹿だ。

61 :56:01/10/26 20:22 ID:YTmtLQJf
>>59
馬鹿かどうかはともかく、知識がないことは認めます。

質問の仕方が悪かったようなのでまとめます。。

自分用に日記スクリプトを組んで、
ローカルでは正常に動きました。
環境はMacJPerlとWEB共有でした。
MacJPerlでの構文チェックはOKが出ました。

このあと、借りているサーバにアップして
パーミッション設定をして動かしてみました

そしたら、一部の機能は動いたんですが
サーバがエラーを返す時もありました

なぜかわからないので、
もしかしたら・・と思うところがあったら
教えていただけませんか?

62 :名無しさん@お腹いっぱい。:01/10/26 20:26 ID:???
詳しくないけどシステムに依存したコマンドがあるんじゃないの?

63 :名無しさん@お腹いっぱい。:01/10/26 20:40 ID:???
ふむ、初めからそう書けば良いのに、httpdは検索してくれ、サーバの事
で、残念だけど、自分で書いたコードならその「エラーを返す時」がどんな
コードなのかを書かないと答えられない
これを使ってエラーを捕捉してみてくれ
http://www.kawa.net/works/perl/catch/news.html

Unixlike<=>Mac<=>WIN、環境で結構引っ掛かるので俺が知ってるのは
ディレクトリ区切り子 \とか/とか:とか
ディレクトリ相対パスの問題 IIS3とか
スクリプト起動時のカレントディレクトリの問題
OSに依存したシステムコール
OSに依存した関数の使用

多分まだまだネタはあるはず

64 :名無しさん@お腹いっぱい。:01/10/26 22:16 ID:e913wNIn
find関数(File::Find)ではファイルがアルファベット順に
出てくるようなのですが、これをタイムスタンプ順にすることは
可能でしょうか?

65 :51:01/10/27 00:19 ID:CaJiAhlr
>>52
>>53
>>54
ありがとうございます。
確かに・・・。
流れを読んだ上で組み合わせれば何と言うことのないことでした。

>>52さんが紹介してくれたサイトのスクリプトをじっくり眺めてみることにします。

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

66 :名無しさん@お腹いっぱい。:01/10/27 01:54 ID:LY0Lfwsp
>>64
ディレクトリ単位でソートするなら可能だよ。

find( {wanted => \&wanted, preprocess => \&preprocess }, $dir );

sub preprocess {
@_に入ってくるファイル名をタイムスタンプでソートした結果を返す
}

67 :名無しさん@お腹いっぱい。:01/10/27 08:38 ID:C540eYR0
>>66 わぁ。ありがとうございます。
ディレクトリ単位で良いです。っていうかディレクトリ単位が良いです。
助かりました!

68 :名無しさん@お腹いっぱい。:01/10/27 15:49 ID:???
俺ってまだよく理解できてないからフローチャートとか書いて
から組んでるんだけど知り合いとかはさくさく組んじゃうんだよね。
フローチャート作ってる俺って厨房ですか?

69 :名無しさん@お腹いっぱい。:01/10/27 16:12 ID:???
なんでもそうだろけど使い方による。
グチャグチャと絡まった概念を解く事が出来るから漏れは良く書いてる
(覚え書き程度のもんだが・・・)
Keyboardばっかり叩いてると、紙に書いた事は結構クッキリと頭に残ったりとかね

*死ぬ程忙しい時は、するべき事を紙に書いてみよう、意外と大事な用は一つだったりして

70 :名無しさん@お腹いっぱい。:01/10/27 18:37 ID:???
ageageage

71 :名無しさん@お腹いっぱい。:01/10/27 20:09 ID:???
$var /= 32;
$var >>= 5;

ではどっちが速いですか??

72 :Perl上級者:01/10/27 20:32 ID:???
くだらん。そんなことを気にするぐらいならPerlで書くな。

73 :名無しさん@お腹いっぱい。:01/10/27 20:33 ID:???
>>71
自分でベンチマークとれ。

74 :71:01/10/27 20:34 ID:???
ベンチマークってどう取ればいいのですか? それがわからないのか(^^;;;>俺

75 :名無しさん@お腹いっぱい。:01/10/27 20:40 ID:???
Perl上級者は真性、相手すると感嘆符使いまくってウザイので完全無視でお願いします 

76 :名無しさん@お腹いっぱい。:01/10/27 20:42 ID:???
>>74
perldoc -u Benchmark
これで大体分からないかな、要はかっこでくくるだけだよ

77 :名無しさん@お腹いっぱい。:01/10/27 20:45 ID:???
>>71
後者は小数点以下切り捨ててないかい?

78 :名無しさん:01/10/27 20:50 ID:???
Perl上級者=高卒 プ

79 :名無しさん@お腹いっぱい。:01/10/27 20:53 ID:???
Perl上級者=jaプ

80 :名無しさん@お腹いっぱい。:01/10/27 21:13 ID:???
>>78-79
煽り止めれ。Perl上級者と同レベル。

81 :Perl上級車:01/10/27 21:16 ID:???
この板で一番レベルの高いスレッドはどこだ?
こんな程度の低いところは嫌だからな。

82 :名無しさん@お腹いっぱい。:01/10/27 21:18 ID:???
車だってさ(w

83 :名無しさん@お腹いっぱい。 :01/10/27 21:21 ID:???
>>81 eq ターミネータ

84 :名無しさん@お腹いっぱい。:01/10/27 21:24 ID:???
>車
過疎地うろついてないでマ板いきなよ
Perlスレもぽこぽこ建ってるし

85 :名無しさん@お腹いっぱい。:01/10/27 22:52 ID:???
ログ移転前に書いてみる。

86 :名無しさん@お腹いっぱい。:01/10/27 22:56 ID:???
移転上げ

87 :名無しさん@お腹いっぱい。:01/10/28 21:53 ID:???
age

88 :名無しさん@お腹いっぱい。:01/10/29 03:25 ID:pi9OrPjF
(aa..zz,aA..zz,Aa..zz,AA..zz)
みたいなアルファベット大・小文字全部並べるスライスの,簡単な書き方ってありますか?

関数に文字数指定して,文字列として書かせたのを,evalして使ってるんですが
無駄なことしてるかもと思ったので。

89 :名無しさん@お腹いっぱい。:01/10/29 03:30 ID:???
もっと具体的に説明きぼん

90 :88:01/10/29 03:50 ID:pi9OrPjF
>>89
普通に手で書くと,文字数増えるごとに書くのもどんどん増えていっちゃうので,
(aa..ZZ)とか(\w{3})みたいな書き方はできないかなぁと。

88の関数はこんなのです。
@arry = eval getArry(1);
sub getArry {
 my $nest = shift;
 my $word = shift || '';
 my $i = 0;
 my $ret = '';
 foreach (a,A) {
  my $word = $word.$_;
  if ($nest>0) {
   $ret .= getArry($nest-1, $word);
  } else {
   $i++;
   $ret .= "$word..";
   $ret .= 'z'x length $word;
   $ret .= ',';
  }
 }
 return $ret;
}

91 :名無しさん@お腹いっぱい。:01/10/29 07:15 ID:???
それ異常の書き方は無いと思うなあ。
つーかむしろ(a..z)だけにして、文字列長投げるような関数に
した方が良いんじゃないの?
呼び出しのコストを嫌ってるのか・・・・
漏れはデカイ配列の方が嫌いだけどなあ

92 :名無しさん@お腹いっぱい。:01/10/29 07:19 ID:???
あ、すまん、そうしてるんだね。
再帰しなくても良さそうだな、、
帰ったら書くわ

93 :名無しさん@お腹いっぱい。:01/10/29 17:18 ID:???
>>91
>漏れはデカイ配列の方が嫌いだけどなあ
俺もおなじくです。2文字(aa〜ZZ)ぐらいならいいんですが、
4文字(aaaa〜ZZZZ)なんかはちょっと配列に入れるのがつらい。

用途にもよるけど、呼び出すごとに「次の文字列」を返す関数を
作って、STLのnext_permutationみたいな使い方をするのが
いいと思う。

94 :名無しさん@お腹いっぱい。:01/10/29 20:26 ID:gd3uwUNc
あるファイルの行数を調べたいのですが、
一番メモリを使わずに調べる方法は何ですか?

95 :名無しさん@お腹いっぱい。:01/10/29 21:04 ID:???
my宣言した変数は出来るだけ早くundefした方が良いのでしょうか?

96 :名無しさん@お腹いっぱい。:01/10/29 21:14 ID:???
>>94
nバイトずつreadして"\n"の個数を数える。

97 :名無しさん@お腹いっぱい。:01/10/29 21:15 ID:???
>>94
my ($lineNum,$fileName,$buf);
open (FH,"fileName");
while (1){
read(FH,$buf,1);
last if $buf eq '';
$lineNum++ if $buf eq "\n";
}
print "行数は$lineNumです\n";

98 :名無しさん@お腹いっぱい。:01/10/29 21:45 ID:???
>>94
open(FH, $file) or die "Can't open $file";
my $count;
$count = $. while (<FH>);
close(FH);

99 :名無しさん@お腹いっぱい。:01/10/29 21:54 ID:???
>>95
大量のデータを長期間無駄に保持するのは避けたいけど、
ほとんどの場合、あえて明示的にundefするまでもないと思う。
まあ具体的なコードを見ないと判断つかないっすね。

100 :始めて数日なんですが:01/10/29 22:08 ID:???
検索したり本を見ても、書いてなかったり、さっぱり意味不明だったりと自分ではなかなか判断がつかないとき、「内では〜となっているので〜とした方がいい」って明解に断言してくれる人がいると役に立つんだけど、みなさんはどうしてるんですか?

101 :Perl上級車:01/10/29 22:11 ID:???
>>100
首吊って氏ね。

102 :名無しさん@お腹いっぱい。:01/10/29 22:14 ID:???
>>100
> 始めて数日なんですが
日本語を?

103 :名無しさん@お腹いっぱい。:01/10/29 22:21 ID:WYkKLjrw
>>100
perldocの該当個所を4〜5回読み直し、それでも理解できなければ
いまは知る必要がないのだとあきらめて後回しにした。
すくなくとも他人の言葉には頼らなかった。

104 :名無しさん@お腹いっぱい。:01/10/29 22:21 ID:???
>>100
とにかく、首をくくるのがいいと思われ

105 :マジレス:01/10/29 22:23 ID:???
>>100
始めて数日の人がそんな壁にぶつかる訳がありません。
Googleで検索したりリンク辿ったりすれば、参考になるものが
見つかるはずです。
少なくとも初心者の内は検索などで十分です。
(分不相応な事をしなければ)

そして初心者を抜ければ殆ど自分で判断できるようになる筈です。

106 :Perl上級者:01/10/29 22:27 ID:???
とにかく邪魔だから二度と出てこなくていいよ。

107 :名無しさん@お腹いっぱい。:01/10/29 22:28 ID:???
>>106
お前も一々煽るな。邪魔臭い。

108 :Perl上級者:01/10/29 22:29 ID:???
ハァ?ココは気持ち悪い馴れ合いスレですか(わら

109 :名無しさん@お腹いっぱい。:01/10/29 22:32 ID:???
>>108
馴れ合いの逆は煽りかよ。馬鹿丸出し。
いいからとっとと失せろ。

110 : :01/10/29 22:34 ID:???
Perl上級者は無視の方向で。

111 :名無しさん@お腹いっぱい。:01/10/29 22:37 ID:???
CGI.pmってどうなの?

112 :名無しさん@お腹いっぱい。:01/10/29 22:43 ID:???
>>111
「どうなの?」って聞かれても何と答えれば良いのやら。

113 :名無しさん@お腹いっぱい。 ::01/10/29 22:59 ID:???
つーかPerlの上級者って、、、なんかショボイなあ (゚ε゚)

114 :Perl上級者:01/10/29 23:09 ID:???
・・・と、初心者以下の素人が言いました、とさ(大爆笑)

115 :Perl上級者 :01/10/29 23:12 ID:???
これこの板の名無しにどうよ?
あとtinkopinpinとか  ゲラゲラ〜

116 :名無しさん@お腹いっぱい。 :01/10/29 23:18 ID:???
shigeより馬鹿っぽい所が悲しいよな、(大爆笑)だって・・・・
この板の哀愁が漂ってくるね
もっと勉強しよ・・・

117 :名無しさん@お腹いっぱい。:01/10/30 01:03 ID:???
未熟ながら、初心者スレッドと言う事でお許しください。

あるログインCGIを作っていて
ログイン(ID/Pass)→ メニューとメイン画面をフレームで表示
と言う処理を行っています。
このときメニューとメイン画面もログイン用のファイルと一緒にしているのですが、
別々の物に分けたほうが良いのでしょうか?

//サンプル
if{
 &ログインパスチェック
}elsif{
 &左フレーム(メニュー)表示
}else{
 &右フレーム(メイン画面)表示
}
#それぞれ引数を変更してやって判定

sub ログインパスチェック{
if(パスチェックが成功したら){
print <<EOM;
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=01 NAME="menu">
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=02 NAME="main">
EOM
}else{
print <<EOM;
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=01 NAME="menu">
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=03 NAME="main">
EOM
}

瞬間的に3度同じファイルを実行する事になり、そのたびにデータを読み出しているので心配です。
また、他のファイルに分けて処理した方が動作がスムーズになる、とも聞きました。
どうでしょうか。
足りない部分があれば随時補足させて頂きます。
根本的にこんなロジックにした方が良い、と言う意見もあれば是非お聞かせください。

118 :名無しさん@お腹いっぱい。:01/10/30 01:27 ID:mgB2/g2W
>>117
この場合、認証をすべてlogin.cgiでまかなうのも、
login.cgi、frame.cgi、main.cgi、menu.cgi等に分割するのも、
さして変わりはないと思う。
どちらにしても認証後に3つのCGIがほぼ同時に起動するわけだし。

なにか改善策があるとすれば、
>根本的にこんなロジックにした方が良い、と言う意見
ここだろうけど、おれには考えつかない。
CGIで認証する限り、「1ページ表示するごとにパスワードファイルの読み書きが必要」と
いう問題は避けられないのでは。

119 :名無しさん@お腹いっぱい。:01/10/30 03:48 ID:???
>>118
なるほど、貴重なご意見有難うございます。
やはり逐一パスワードファイルにアクセスしないといけないのは
宿命ですかね。

120 :名無しさん@お腹いっぱい。:01/10/30 09:32 ID:???
>>117&119
どっちかってーとCGIだけどなんか質問ある?向きだけど・・・
とりあえず「セッション」とかって言葉を調べると幸せになれるかもしれません。。。えいめん。

121 ::01/10/30 14:05 ID:KnXoAd8A
cron でフルパス起動されるコマンドなんだけど
ライブラリの場所は 相対で ../lib にあります。
エレガントな指定方法を教えてください。
今は
{
my $base;
BEGIN{
$libPath = $0;
$libPath =~ s|/[^/]+$|/lib|;
}
use lib ($libPath);
}

122 :名無しさん@お腹いっぱい。:01/10/30 14:12 ID:???
素直にフルパスで書くのが一番だと思うが。

123 :名無しさん@お腹いっぱい。:01/10/30 16:33 ID:???
>>121
フルパス指定がいやならFindBinモジュールを利用。

124 :121:01/10/30 17:03 ID:???
>>123
ありがと(^−^)
まだまだ知らないモジュールがいっぱい...
精進せねば...

125 :名無しさん@お腹いっぱい。:01/10/30 17:04 ID:HjkR1Pfb
>>121
cronで起動するときにchdirする方法を愛用してます。
スクリプトのほうで小細工する必要なし!

126 :121:01/10/30 17:12 ID:???
>>125
あと /etc/aliases から "| /foo/bar/hogehoge" でも起動されるやつも
あるんで FindBin でいくことにします

はっ /etc/aliases のやつも "| (cd /foo/bar ; ./hogehoge)" すると
いけるのかな?

127 :名無しさん@お腹いっぱい。:01/10/31 11:19 ID:odi0QzL3
すいません、perl全くの初心者なんですが
Mac OS 9.02から、Mac OS 10.1にして勉強を始めようと思っています
しかし、Mac OS 10.1に入ってるperlは日本語関連でかなり問題がある、
というのを聞いて驚きました。
ビギナーではMac OS 10.1はやめておいた方がいいのでしょうか?
参考書みてもそもそも正常に動作しなかったら挫折しやすい、というか。
どのような問題があるかはgoogleなどで引っかけても上手くかからなかったので
わからないんですが、よろしければアドバイスお願いします。

128 :名無しさん@お腹いっぱい。:01/10/31 11:30 ID:???
ここはマック使う人少ないみたいだよ。
マックのことはマック使ってる人に聞くのがよろし。

マックでプログラムやるなら
http://pc.2ch.net/test/read.cgi/mac/1003548817/
MACの開発ソフト
http://pc.2ch.net/test/read.cgi/tech/978844038/

129 :名無しさん@お腹いっぱい。:01/10/31 11:41 ID:bNMt3mta
あの=。jcode.plとcgi-lib.plって再配布して
いいんですか?

130 :名無しさん@お腹いっぱい。:01/10/31 12:04 ID:???
>>128
あ、ありがとうございます

131 :あげてみる:01/11/02 13:01 ID:yAhXsts1
seekの説明にある、「行番号をバイトオフセットに変更するインデックス」を作成してくれるモジュールないっすかねえ

132 :名無しさん@お腹いっぱい。:01/11/02 19:40 ID:+bAAQDJN
質問なんですが
ハッシュをサブルーティンに渡して、サブルーティンの中でも同じように
ハッシュとして参照したいのですが、どうもうまくいきません。
下のように書いたのですが、値が表示できません。
どのようにすればうまくいくか教えていただけないでしょうか?

my %jjj ;
$jjj{'aaa'} = "111";
$jjj{'bbb'} = "222";
$jjj{'ccc'} = "333";
&test( %jjj ) ;

sub test {
my $jjj_ref = @_ ;
print("#### $jjj_ref->{'aaa'}") ;
}

133 :Ks:01/11/02 20:11 ID:???
掲示内容が不適格であったらごめんなさい。
httpヘッダで困っています。

・httpの拡張ヘッダって編集できるものなの?
・どうやって編集するの?
・拡張ヘッダの設定内容を見て処理をするって可能なの?どうやって
 するの?

誰か教えて頂けませんか?
もしくはわかるサイトを教えて頂けませんか?宜しくお願いします。

134 :名無しさん@お腹いっぱい。 :01/11/02 20:17 ID:???
&test( \%jjj ) ;
sub test {
my $jjj_ref = $_[0] ;
print("#### "."$jjj_ref->{'aaa'}") ;
}
ハッシュの前に引数の受け取り方を調べよう :-)

135 :名無しさん@お腹いっぱい。:01/11/02 20:18 ID:???
どうやってするのか分からないけど全て可能です。
詳しくはここ
http://www.w3.org/Protocols/rfc2616/rfc2616.html

136 :名無しさん@お腹いっぱい。:01/11/02 20:34 ID:???
冷たいんだね

137 :名無しさん@お腹いっぱい。:01/11/02 20:37 ID:???
プロトタイプって手もある
sub test(\%);

test(%jjj);

sub test(\%){
my $href = shift;
print $href->{aaa};
}

138 :名無しさん@お腹いっぱい。:01/11/02 20:41 ID:ofsCZTnG
変数に例えば
$hoge ='aa,bbb,cc,ddd,nn,nn,yy,zzz';
のように格納されていた場合後ろから2つ目の「,」
の位置を調べたいのですがどうすれば良いのでしょうか?
お願いします。

139 :名無しさん@お腹いっぱい。:01/11/02 21:38 ID:???
(length join ',,',(split /,/,reverse $test)[0,1])

140 :名無しさん@お腹いっぱい。:01/11/02 21:43 ID:29kqQmn/
>139
レスありがとうございます。
早速使わせていただきます。
どうもでしたm(_ _)m

141 :名無しさん@お腹いっぱい。:01/11/02 21:46 ID:???
rindexを2回使うという手も。

142 :名無しさん@お腹いっぱい。:01/11/02 21:49 ID:29kqQmn/
>141
それはどういうものでしょうか?
POSを使うのですか?

143 :141:01/11/02 22:01 ID:/ySb/MGF
>142
文字を後ろ向きに検索して,見つかった位置を返す。
perldoc -f rindexあたりで説明見られると思う。

144 :名無しさん@お腹いっぱい。:01/11/02 22:03 ID:29kqQmn/
試してみます。
親切にどうもありがとうございますです。

145 :132:01/11/02 23:28 ID:+bAAQDJN
>>134
>>137
ありがとうございます。勉強し直します。

&test( \%jjj ) ;こう書いてました。
根本的に勉強不足だったようです。

146 :cgiビギナー:01/11/03 01:03 ID:???
掲示板を作っています。ベテランには痛い質問かもしれませんが
今ealisという掲示板で奮闘しています。
関連サイト→http://kano.vis.ne.jp/erial/
そこの設置開設のところでparlパスを書き込むのですが
最初の行に#!/usr/local/bin/perlと書き込めばよろしいのでしょうか?
まだ質問がありますがひとまずお願いいたします。

147 :名無しさん@お腹いっぱい。:01/11/03 01:16 ID:???
>>146
何を言いたいのか全く解りません。
普通、CGIを設置する上で"Perlのパス"といった場合は
#!/usr/local/bin/perl
などの1行を指す場合は多いです。
この1行はサーバ上のPerlというプログラムの位置
(WinでいうならC:\Program Files\perl\perl.exeという感じ)
を表します。
そのため、サーバによってインストールされた場所も異なり、
サーバごとに記述するべき内容異なります。

そもそも、ここに書き込む前にしかるべきサイトで
CGIについて勉強してくるべきだと思われます。

148 :名無しさん@お腹いっぱい。:01/11/03 01:16 ID:???
>146
KENT氏のページへ行かれたほうがよろしいかと思います。
http://www.kent-web.com/

氏のサイトは,初心者にも優しいと定評があります。

149 :148:01/11/03 01:19 ID:???
誤字
優しい->易しい

150 :cgiビギナー:01/11/03 01:18 ID:???
>>147
ご忠告感謝いたします。>>148氏が書き込まれたサイトにて学んできます。

151 :名無しさん@お腹いっぱい。:01/11/03 02:42 ID:cMX/dhh7
他のサイトからのアクセスを制限したいのですが、
(チャットのよそからの発言を禁止するような感じです。)
referer調べる以外で良い方法は無いものでしょうか?

152 :名無しさん@お腹いっぱい。:01/11/03 02:55 ID:???
>>151
IDを発行するとか。

153 :名無しさん@お腹いっぱい。 :01/11/03 13:58 ID:???
再帰の深さってどれ位まで許されてるんでしょうか?
処理系依存ですかね
スタック食い尽くす前にヲーニングくれたりしないかな・・・

154 :名無しさん@お腹いっぱい。:01/11/03 15:58 ID:cu67OhWQ
$_
ってなんですか?
厨房でスイマセン…。

155 :名無しさん@お腹いっぱい。:01/11/03 16:04 ID:???
@_ = ($_[0], $_[1], $_[2]);

156 :名無しさん@お腹いっぱい。 :01/11/03 16:14 ID:???
ハァ(゜Д゜)?

157 :cgiビギナー=146:01/11/03 16:31 ID:???
何とか掲示板が設置いたしましたがその掲示板で書き込みをしたとき
あとページエラーが出てしまいます。
原因は$INI{'locate'} = 'http://www.hogefoo.ne.jp/~bar/cgi-bin/ealis/';
という所で「eliasをインストールするDIRのhttpパスを書く」という単語の意味がわからず
間違っている書き込みをしていると思います。
お手数なのですが改善できる術は無いでしょうか?
関連サイト→http://kano.vis.ne.jp/erial/ealis/setup.html
そのealisを置いている場所は
ttp;//トップ/cgi-bin/test
のテスト言うディレクトリに入れてあります。よろしくお願いいたします。

158 :名無しさん@お腹いっぱい。 :01/11/03 16:53 ID:???
eliasをインストールするDIRのhttpパスを書く
  ↓
eliasをインストールするディレクトリのアドレスを書く
  ↓
分からない単語は検索しろ
ディレクトリ、アドレス、パス、http://www.google.com/

159 :cgiビギナー=146:01/11/03 17:02 ID:???
>>158
ありがとうございます。

160 :名無しさん@お腹いっぱい。:01/11/03 17:37 ID:vwyWsLPj
$_ は省略時に暗黙の内に使われる変数。
たとえば、
while(<>) { print }

while($_ = <>) { print $_ }
と等価。
length の引数を省略したときは length $_ を返す、とかいろいろあるので、「プログラミングPerl改訂版」を読みましょう。
(perldoc でもよいが)

161 :名無しさん@お腹いっぱい。:01/11/03 18:59 ID:???
$_を介すると、ほんのちょっとだけ処理が早くなる傾向がある(ようだ)。
常時、積極的に使用するほどメリットがあるとは思わないが、
何万回といったループの中で使うと結構でかい差になるかもしれない。

162 :名無しさん@お腹いっぱい。:01/11/03 19:12 ID:???
>>157 初心者は使うなって書いてあるやん・・・

163 :_gunzip@鬱だ詩嚢:01/11/03 20:33 ID:???
>>153
my()で確保しているpadlist内の変数の数/大きさにも依りますから
一概に何回、とは言いきれません。

ただ、-w オプションを付ける、ないしwarningsプラグマで
"recursion"カテゴリの警告を行うよう設定していれば、
サブルーチンの100回以上の再帰呼び出しがなされた時点で警告が出ます。
(中止するわけではないので、あまり意味はありませんが)

各CVは、おのおの自分自身の再帰呼び出し回数をxcv_depth
メンバに保持していますから、内部APIのCvDEPTHマクロを利用して、
規定回数以上になれば強制的にreturnさせるコードを挿入する
ぐらいしか対策がないような気がします。

I32 get_depth(SV *sv)
{
    if(SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV)
        return CvDEPTH(SvRV(sv));
    else
        return -1;
}

164 :_gunzip@鬱だ詩嚢:01/11/03 20:43 ID:???
っていうか、数えた方が早いね。

165 :名無しさん@お腹いっぱい。 :01/11/03 23:48 ID:???
>>159 cgiビギナー=146
ここは1に書いてあるように「perlのコーディングで困ってる人のスレ」
だから、こっちで聞く方が良いと思いますよ。

CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/l50

166 :名無しさん@お腹いっぱい。:01/11/04 00:00 ID:oP9d6xQM
>>151
手続きなど無しで制限したいのですがやはり無理でしょうか?
お願いします。

167 :名無しさん@お腹いっぱい。:01/11/04 00:06 ID:???
>151 自鯖なら .htaccess。

168 :名無しさん@お腹いっぱい。:01/11/04 00:22 ID:oP9d6xQM
>167
.haccessで制限できますか?
↑関連スレで質問した方が良いかな?

169 :名無しさん@お腹いっぱい。:01/11/04 01:34 ID:???
>>168
167は.htaccessでユーザ認証しなさいってことじゃないすか。
いちおう.htaccessのRewriteRule/RewriteCondを使うと
リファラを見て外部からのアクセスを拒絶することはできるけど、
151でリファラ以外の方法って書いてあるしね。

170 :名無しさん@お腹いっぱい。:01/11/04 03:26 ID:h2smYChV
バイナリコードを含む文字列を特定の長さに切りたいのですが
どうすれば良いでしょうか?

$str='a壱弐参四五'; # length:11
$str=~s/^(.{10}).*/$1/;

例えばこんな感じで長さを10にする事はできるのですが、
バイナリデータをぶった切ってしまってバイナリの片割れが出てきてしまいます。
切る所がバイナリデータだった場合は回避して、この場合は長さ9にしたいです。
バイナリデータの判別方がわかれば何とかできると思いますがわかりません。
どうすれば実現できるでしょうか?

171 :cgiビギナー=146:01/11/04 03:44 ID:???
>>165
無事に掲示板を設置することが出来ました。
どうやらDIR=ディレクトリのことらしいでここら辺がわからなかったのですよ。
色々お手数をおかけしました。今度β版と言う難しいのに挑戦しようと思っているので
そちらの方に質問をさせていただくかもしれません。
とりあえず今はトホホのサイトにて勉強しながらやっていきます。

172 :名無しさん@お腹いっぱい。:01/11/04 04:04 ID:cP9onYMm
>>170
いろいろあると思うが、おれはこうしてる。
(1)最初に10バイトで切る。
(2)先頭から「正しいバイナリ」が続く部分だけ残して、その後ろを削除。

たとえば「Shift_JISまたはASCII」を切り出す場合は、
$str = substr($str, 0, 10);
$str =~ s/^((?:[\x81-\x9F\xE0-\xEC][\x40-\x7E\x80-\xFC]|[\xA1-\xDF]|[\x20-\x7E])*).*/$1/;

173 :名無しさん@お腹いっぱい。:01/11/04 04:18 ID:h2smYChV
>>172
正しいバイナリというのがそう言う感じで記述できるんですね。
扱おうとしてるのはSjisだし、なんなら文字コード変換もできるので、
そのまま使えそうです。
漠然とわかったので、自分の中でちょっと煮詰めてみます。
ありがとうございましたー。

174 :名無しさん@お腹いっぱい。:01/11/04 04:37 ID:???
>>173
>正しいバイナリというのがそう言う感じで記述できるんですね。
いや「Shift_JISまたはASCII」というのは、
正規表現であらわせる素直なデータだからね。

「正しいバイナリ」の定義によっては、1バイトずつ切り出して
逐一判定しなければならない場合もたぶんあるでしょう。
いつでも正規表現が使えるとは思わないほうがいい。

175 :173:01/11/04 14:35 ID:???
>>174
メタキャラを含んだ文字列の正規表現でエラーというのは
既に実感を伴って経験済みです。

ともあれ、無事に実現できました。ありがとうございます。
しばらく様子を見てみて、エラーが生じたりするようならまた考えてみます。

176 :153 :01/11/04 17:36 ID:???
_gunzipたんアリガトー(・∀・)&& お久しぶり
ちょっと聞き方がタコでしたね、perlマンセーな処理が有ったんですけど
家では問題無かったのに、会社のプアマシーンだとあぼーんしたんで
少し気になったんです、流石にそこまでは面倒見てくれないですか。。。
取り合えず50回位潜ったら、一旦全部抜けて、
続きからやり直し、って言う風にしてみましたです。

177 :名無しさん@お腹いっぱい。:01/11/04 17:57 ID:vlyHsBRz
ちょっとお聞きしたいのですが
いま、ちょっとはまってしまっています。
状態は、500文字から1000文字くらいの文字列をいくつか作って
print文で表示させたいのですが、文字列を3個作って、3カ所print文を
文字列作成後に表示させようとすると、最後のprint文の途中まで表示して
そのまま待ち状態に、一回プログラム止めて今度は5個作って表示させると
さっき止まった3個目はきちんと表示されて、今度は5個目の途中で表示が
止まってしまいます。何回か実行させてみても同じところで表示が止まって
しまいます。どうも長い文字列のprint文(いくつかある時の)最後のprint
文で起こるようなのですが
出力先はブラウザです。print文の後には文字列を使う処理がありますが
そこまで進めません。print文で止まってしまって
どなたか同じような状態になったことある方いらっしゃられませんか?
どのようにしたら正常に表示できるのでしょうか?
わかりにくい説明ですみませんが、どうぞよろしくお願いします

178 :名無しさん@お腹いっぱい。:01/11/04 18:05 ID:???
$| = 1;

179 ::01/11/04 18:49 ID:iWvZka32
>>170
Jcode.pm に jfold ってのがあるよ

180 :177:01/11/04 20:39 ID:vlyHsBRz
もう一つお聞きしたいのですが
perlで、C言語とかでいうデバッガみたいなものは、ないのでしょうか?
上で書いたような状態でもう2,3日苦しんでいる状態で
できれば、1行ずつとかで、実行して原因がわかればと考えたのですが
わかる方、どうかご回答よろしくお願いします

181 :名無しさん@お腹いっぱい。:01/11/04 20:51 ID:6q0Jo2MQ
当方,C言語のプログラマです.
ある特定の定義を一気にコメント化したりするのに,
sed等のコマンドを使って,シェルスクリプトを書いてました.
こんどperl を使ってこういう処理を使用と思ってるのですが,
あなたの使っているいいソースありませんか?(笑)

182 :名無しさん@お腹いっぱい。:01/11/04 21:59 ID:RPCUxOjp
>>181
s2p とか a2p を使うと吉かと。

183 :177:01/11/04 22:19 ID:vlyHsBRz
書き忘れたのですが
いくつかのcgiを経由して、情報を集めて処理するcgiで現象が起きています
引き継いでいるデータがかなりあるので、困っています
一個のモジュールでのデバックはやったことあるのですが、
画面表示(html)->入力データ処理・検索・画面表示(cgi)->入力データ処理・画面表示(cgi)->
のような感じで、最終的に現象の起こっているcgiに行く頃にはかなりの情報があります
こういう場合コマンドラインでのデバックって可能なのでしょうか?
htmlもそのまま表示されてボタンとか押せないですよね
何かいい方法ありませんでしょうか?
よろしくお願いします

184 :名無しさん@お腹いっぱい。:01/11/04 22:46 ID:PfX5esry
CGIほとんど書いたことないんで詳しいことは他の方に譲りますが
#っていうか間違ってるかも知れない
180>
perl -d script_name

183>
use CGI::Carp;
HTMLのコメント文としてデバッグ情報を出力
perl -d -MModule -e '1;' してmoduleをテスト
スクリプトそのものを少し書き換えてコマンドラインで動くようにする
とかいうのを思い付きます。

185 :177:01/11/04 22:57 ID:vlyHsBRz
>>184さん
ありがとうございます。
調べて試してみます

186 :151:01/11/05 01:45 ID:J/g4IyEG
>>169
やはりrefererを使ってはじくしか無いのですね。
レスありがとうございました。

187 :名無しさん@お腹いっぱい。:01/11/05 16:44 ID:???
>>181
ある特定の定義って何よ?
そこんとこ、もう少し聞かせてくれない? C言語だよね?

188 :名無しさん@お腹いっぱい。:01/11/05 18:02 ID:???
http://natto.2ch.net/test/read.cgi?bbs=off&key=1003929930
これ逝く人いないの?

189 :名無しさん@お腹いっぱい。:01/11/05 18:04 ID:???
sub func() {
#...
}

sub func()
{
#...
}

みなさんはどっちが好みですか?

190 :名無しさん@お腹いっぱい。:01/11/05 18:41 ID:5Lr/KNWp
>>189
前者。

191 :名無しさん@お腹いっぱい。:01/11/05 18:57 ID:???
>>181
同じく、関数定義の事言ってるのか、だったら呼んでる所も
一緒に殺すって事? どうもperl万歳っぽい気はするが意味が解らん w
俺は関数改造した時とか一気に名前入れ替えるのに使ってる

192 :名無しさん@お腹いっぱい。:01/11/05 21:48 ID:???
関数の処理の負荷に関するスレ立てるのってどう?
同じ処理でもこっちの方が良いとか。
あと前誰かだしてたけど、処理の負荷に関するページの紹介とか。
同じ変数使いまわすなら最初に変数の領域を確保しといた方が
良いとかそんなの。

193 :名無しさん@お腹いっぱい。:01/11/05 22:30 ID:???
こっちではどうでしゃっろ
http://pc.2ch.net/test/read.cgi/php/991313362/

194 :192:01/11/05 22:35 ID:???
スレ立てるまでも無いですね。
というかスレ立ててもすぐ下がっちゃうか…。
どこかこんなページあれば教えて欲しいです。

195 :名無しさん@お腹いっぱい。:01/11/05 23:18 ID:???
>>181
ちゅうかsedもCも知ってるならそん位1日で出来る様になるよ!
perldocの、「sedの洗練されたPGが〜〜」「Cに洗脳されたPGが〜〜」
辺り読めばバッチシ、正規表現なんかは後方互換性有るから結構そのまま使えるしね
その手のはビックリする位サクサク出来ちゃうぞっと♪
そしてダメな人間になって行くのじゃ  ふふふ

196 :名無しさん@お腹いっぱい。:01/11/06 03:08 ID:???
>>195
そそ。で、Perlないと仕事する気にもならないと。(w
実際、Unix -> Winに移ってきて、シェルやコマンド群の貧弱さには
閉口したけど、Perlが使えるんで何とか工夫してやってる。
ただ、Winで真っ黒な背景のDOS窓開いて、パイプやリダイレクト組み合わせて
コマンド打ち込んでいると、確実に異端視される。
素人にはお勧めできない。(縛

197 :名無しさん@お腹いっぱい。:01/11/06 04:54 ID:???
Macperlの初心者なのですが、もしご存じの方がいらっしゃいましたら
教えてください。webページのフォームからpostメソッドでファイルを
cgiにアップロードしようとしているのですが、32KB以上のデータって
macperlだと受けとれないんでしょうか。32KB以下のサイズのファイル
だとうまくいっているのですが・・・。

198 :名無しさん@お腹いっぱい。:01/11/06 16:49 ID:???
>>197 サーバは何使ってるの?
少なくともMacperlにはそんな機能は無いしバグも上がっていない(筈)

199 :名無しさん@お腹いっぱい。:01/11/06 17:01 ID:???
>197
cgi-lib.plを利用していますか?
>$cgi_lib'maxdata = *****; # maximum bytes to accept via POST - 2^17
この行を確認してみてください。

200 :名無しさん@お腹いっぱい。:01/11/06 17:11 ID:TnuiR6XG
自分のいえの鯖にcgiファイル置いてみてみようと思ったんだけど
「Internal Server Error」が出ます。
パーミッションもあってると思うし原因が不明です。
Apacheでcgiの許可のあるディレクトリに置いてます。
test1.cgiって言うファイルです。

perlの場所も確かめました。

201 :名無しさん@お腹いっぱい。:01/11/06 17:19 ID:???
>>200
それだけの情報でどうしろと?

202 :名無しさん@お腹いっぱい。:01/11/06 17:19 ID:???
>>200
エラーログを見よう、-> $HOME/logs/error_log 辺りに有る
メッセージと適当にGoogleに放り込めばわらわら対策がヒットする

203 :名無しさん@お腹いっぱい。:01/11/06 17:25 ID:???
2^17 って128kbじゃん・・・

204 :200:01/11/06 17:38 ID:TnuiR6XG
Premature end of script headers
改行コードの問題らしいです。

malformed header from script.
もう一個はこれです。

205 :むぎ茶:01/11/06 17:40 ID:Zd0wUikG
改行コードを CRLFからLFに変換しよう
Meadowとか秀丸で変換しよう
Malformed はCGIが途中で終わったんでヘッダが変だよって httpd からのメッセージ

206 :名無しさん@お腹いっぱい。 :01/11/06 17:46 ID:???
素で叩けば動いてんだろ?
だったら改行コードは関係ねーよ、
Premature end of script headers
これは適当なHTTPヘッダを吐く前にプログラムが終わったって事
`HTTP``ヘッダ``CGI``Content` 辺りで検索せい

207 :200:01/11/06 17:56 ID:TnuiR6XG
普通にマシン上で動かせばprintは表示され動いてくれます。
Contentが抜けてました。

208 :名無しさん@お腹いっぱい。:01/11/06 18:39 ID:???
>>200
これ以上はCGIスレね。
ContentっつーかContent-Type。

209 :名無しさん@お腹いっぱい。:01/11/07 04:16 ID:w4jQYe5D
package main; use vars qw[$var];
$var = 'MAIN';
print "$var\n";

package sub1; use vars qw[$var];
print "$var\n"; # (1)
$var = 'SUB1';

package sub2; use vars qw[$var];
print "$var\n"; # (2)
$var = 'SUB2';
__END__
(1)でMAINを(2)でSUB1を表示させたいのですが,$varがグローバルに使えません。
どうすればできますか?
Perl5.6ではなく,Perl5のやりかたでお願いします。

210 :名無しさん@お腹いっぱい。:01/11/07 04:21 ID:???
$main::var
$sub1::var

211 :名無しさん@お腹いっぱい。 :01/11/07 06:18 ID:???
突然Perlを使う事になって困っています、普段はCを使っています。
Perlの@はCの2次元配列のようなものと考えて良いんでしょうか?
例えば、、、
@ary = ('H','e','l','l','o');
printf ("%s",@ary);
だと H しか印字されないのです。。
それと、シングルクウォートとダブルクウォートの使い分けが
今一つ分からないのです。

212 :名無しさん@お腹いっぱい。:01/11/07 06:30 ID:???
Perlには2次元配列は無し。
リファレンスを使えばそれらしきことも可能。

print @ary;

Single -> 変数展開無し
Double -> 変数展開有り
my $str = 'hoge';
print "$str";
print '$str';

213 :名無しさん@お腹いっぱい。:01/11/07 07:50 ID:???
2次元配列有るよ、詳しくはPerlLOL辺りで

取り合えずCは忘れれ (・∀・) その書き方見てると辛そうだけど・・
全部の型と**文字列**が、int型に収まるとでも思ってくれ、atoiとか忘れれ
そう言う意味で前半の考えはイイ感じ
で、コンテキストで@aryの評価がコロコロ変わるんだけど、それは解るしかない
配列@aryの要素は@ary[0]じゃ無くて$ary[0]、慣れれ
クオートは、取り合えず全部 " にしる、2バイト文字使わなきゃこれで良い
printf ("今%s時です\n",$time); これは全然OK!

214 :212:01/11/07 09:47 ID:???
>>213
それは配列リファレンス使って、でしょ。
正確な意味では無いって解釈じゃいかんかな。
上2行はそんな感じだったんだが。

いや、別にどうでもいいんだが。

215 :名無しさん@お腹いっぱい。:01/11/07 14:16 ID:???
>>209
package main;
use vars qw[$var];
*sub1::var = \$var;
*sub2::var = \$var;
以下209と同じ

216 :名無しさん@お腹いっぱい。:01/11/07 16:11 ID:HKXTSnRB
みなさんファイルの有無ってどうやって調べてます?

217 :名無しさん@お腹いっぱい。:01/11/07 16:15 ID:???
-e

218 :216>217:01/11/07 16:19 ID:HKXTSnRB
すんまそん。

219 :名無しさん@お腹いっぱい。:01/11/07 19:11 ID:???
たしかMacPerlってAppleEventの古い32KB制限の因習を引きずってて、
cgiとしてPOSTデータを受け取るときにもその制限があるんじゃなかったっけか?
MacPerlでcgiとして保存したスクリプトを呼び出すと、AppleEventで
MacPerl本体にデータが受け渡されてると思うので、32KB以上のデータは
あつかえないのかも・・・。AppleEvent自体はとっくにこの制限なくなってる
はずなんだけどね。解決策知ってる人いる?

220 :名無しさん@お腹いっぱい。:01/11/07 20:02 ID:???
PerlFactoryってどうですか?

221 :名無しさん@お腹いっぱい。:01/11/07 20:27 ID:???
高杉、つーか使おうと思ってたらライセンス切れた w
タブブラウザみたいなもんじゃ無いの、秀丸多窓、デバッグ用plで
やってるのと変わらん。
ステップ実行直接出来るのは便利かな

222 :始めて数日。。。分不相応かなー:01/11/07 21:00 ID:EjFu+goO
Netモジュールかなんかを使って他のウェブページをゲットし、
perlで処理(文字列置換とか)したいと思っています。

変数名=Net::関数名(URL)

みたいな書き方をすれば、ページを1枚まるごとゲットして変数に格納できるような気はするのですが、
具体的にどう書いたらよいかわかりません。
どうしたらよいでしょう??

223 : :01/11/07 21:18 ID:NBKJ0dYI
LWPモジュールを使いましょう

224 :名無しさん@お腹いっぱい。:01/11/07 21:57 ID:???
use LWP::Simple;
getprint(URI);
print get(URI);

225 :209:01/11/07 23:30 ID:???
>>210 >>215
グロブってこういう時に使うんですね。
ありがとう,勉強になりました。

226 :198 だけど:01/11/08 02:50 ID:???
思いっきりアホだった。
俺はActive perlのつもりでMacperlって書いてた。 今見てビックリした(死
何ていうか、197の書き込み見た瞬間 Macperl -> Active perlに脳内置換しちゃってたみたい
適当な事言ってゴメソ

227 :初心者:01/11/08 16:17 ID:???
すいません。教えて下さい。
@file_list = ($file1,$file2,$file3,$file4,$file5,$file6,$file7,$file8,$file9,$file10);
$name_length = @file_list;
ってあるんですけど、このままだと$name_lengthは10にしかなりません。
$file1〜10が、あるぶんだけの結果が欲しいんですけど、どうすればいい
でしょうか。

228 :名無しさん@お腹いっぱい。:01/11/08 16:24 ID:???
あるぶん、って言うのは何?
$file1に入ってる文字列の長さか
$name_length = length $file1;

229 :名無し~3.EXE:01/11/08 17:38 ID:OCo2EZxt
211 です、亀レスですが、212さん213さんありがとう御座います。
アレから3日ほど触ってなかったから、又C頭に戻ってしまいました・・・(^ ^;
頑張ります。

230 :名無しさん@お腹いっぱい。:01/11/08 17:44 ID:???
>>227
仮に「存在するファイルだけ」ということならファイルテスト演算子使え。
-e $file

231 :初心者:01/11/08 18:26 ID:07jIFch6
返事おくれてすいません。
例えば、もし$file1の変数に値があれば1を返し、なければ0を
返して、1を合計すれば$file$1〜10で、値が入っているものの
数をカウントできる、とおもうのですが、いかがでしょうか。

232 :初心者:01/11/08 18:28 ID:???
$file$1〜10→$file1〜10でした。すいません。

233 :名無しさん@お腹いっぱい。:01/11/08 18:37 ID:yS1X4SA3
>>232
これで、あってる?
my @vars = (1,undef,3 ,5, 0);
my $count = 0;
foreach(@vars){ defined $_ and $count++ }
print $count;

234 :初心者:01/11/08 19:36 ID:07jIFch6
>>233
さすがです!!ばっちりうまくいきました!!
天才!!ありがとうございます!!

235 :名無しさん@お腹いっぱい。:01/11/08 20:50 ID:???
my @vars = (1,undef,3 ,5, 0);
my $count = grep{ defined $_ } @vars;
print $count;

ま、大差ないが。

236 :名無しさん@お腹いっぱい。:01/11/10 17:29 ID:a3KNiGz4
メールなんかのヘッダーフィールドについてくる、Date: のフィールドの時刻表示には、
かなりバリエーションがあるのですが、あれを意味のある数値(例えばperlのtime関数が返す値)
に変換するにはどうするのが定石なんでしょうか?

おそらく決まりきったやり方があるんだと思うんですが。。。

237 :名無しさん@お腹いっぱい。:01/11/10 18:38 ID:???
>>236 rfc2822 でも読め!

238 :名無しさん@お腹いっぱい。:01/11/10 21:44 ID:???
>>236
Date::Parseかな。

239 :名無しさん@お腹いっぱい。:01/11/11 05:28 ID:???
jcode.plやcgi-lib.plは同梱して配布してもいいのでしょうか?

240 :名無しさん@お腹いっぱい。:01/11/11 05:53 ID:???
jcode.plはソース中に配布条件が書いてある。
cgi-lib.plは知らない。

241 :名無しさん@お腹いっぱい。:01/11/11 06:37 ID:6WcbjBVU
ハッシュの配列をクッキーに保存したり読み出したりしたいのでが、

my %cookie = fetch CGI::Cookie;
my @values;
if($cookie{'testcookie'}){@values=$cookie{'testcookie'}->value}
push @values,{key1=>value1,key2=>value2};
my $cookie = new CGI::Cookie(-name => "testcookie",-value => @values,);

このようにすると、一回目はうまくいくのですが、二回目以降
うまくいきません。

なってほしい配列。
$values[0]=HASH(*****)
$values[1]=HASH(*****)
・・・・・
なってしまう配列。
$values[0]=key1
$values[1]=value1
$values[2]=key2
$values[3]=value2
$values[4]=HASH(*****)

どのようにしたらいいのでしょうか?

242 :名無しさん@お腹いっぱい。:01/11/11 09:28 ID:???
・CGI::Cookie使ったことないが,
 リファレンスだけしか保存しなかったら復元できんのでわ。
・value1とvalue2は何返す関数?

私なら設計見直す。
どうしても必要なら多分割対応のモジュール使うか,
セパレータ使う。

243 :名無しさん@お腹いっぱい。:01/11/11 11:22 ID:???
Data::Serializer(だったかな)を使うとか。

244 :名無しさん@お腹いっぱい。:01/11/11 17:44 ID:???
アスカネットのTinyBBSを改造してるんですが、
書き込み用にデータファイルをオープンした直後の
$SIG{TERM} = $SIG{PIPE} = $SIG{KILL} = $SIG{HUP} = $SIG{USR1} = "IGNORE";
ってコレ何ですか?
%SIGの意味はわかったけど、↑があるのとないのとでどう違うのかわかりません。

245 :名無しさん@お腹いっぱい。:01/11/11 17:44 ID:dTfyRXHQ
sageちゃった…。age。

246 :名無しさん@お腹いっぱい。:01/11/11 18:42 ID:???
IGNORE -> 無視する
上に並べたシグナルハンドラを全部無視するって事、httpdによっては
KILLとかがいきなり飛んでくる(らしい)
各シグナルについては省略 (w
'シグナル''プロセス'とかで検索してちょ

247 :縞栗鼠(シマリス)の親方:01/11/11 20:36 ID:PguAPO/0
吉祥寺にある大検・大学受験予備校の中央高等学院
ここは、完全に狂ってる。
授業料は一年分一括前払いなので、
金が入れば、生徒は要らない
金を振り込んだら、何とかその生徒を辞めさせようと
講師どもが、あの手、この手でイヤガラセをしてきますね。
セクハラはもちろん、脈絡の無い罵倒は日常茶飯だね。
酒臭い講師もいるし・・・ 人生の最果て中央高等学院

http://chs-f.com/index.html 福岡校
学歴詐称 経歴詐称 デタラメ授業
http://www.chuo-school.ac/ 東京本校

248 :名無しさん@お腹いっぱい。:01/11/11 20:43 ID:dTfyRXHQ
>>246
わかりました。後はGoogleと格闘してきます。

もう一つ質問なんですが、
テンプレートを用意して記号を変数で書き換えたいんです。
で、こんなのを書いて見ました(Thanks to 某スレの20さん)。

----------------------------------
$post{hoge} = 'Succeed!'; # 変換するデータのハッシュ(実際にはもっと増やす)

printTemplate('./test.txt', %post);

sub printTemplate{
my($filename, %form) = @_;

open(FILE, "< $filename");
my @lines = <FILE>;
close(FILE);

foreach (@lines) {
s/\${(.*?)}/$form{\1}/g; # ${abc}という書式が見つかったら$form{abc}に変換
print;
}
}
(test.txtの内容は、テストなので「${hoge}」の一行のみ。)
----------------------------------

が、上手く変換できません。
$form{\1} の所を $form{hoge} と直接書くと通ります。何故??
$from{\1} を \$from{\1} と書いて見て、
ちゃんと$form{hoge}と出力されてるのは確認したんですが…。

249 :名無しさん@お腹いっぱい。:01/11/11 20:57 ID:???
>248
s/\${(.*?)}/$form{$1}/g;
こうでは?

250 :名無しさん@お腹いっぱい。 :01/11/11 21:00 ID:???
通るってどう言う意味?、\1、は$1なのでは??、良く解らんな・・・
$form{baz} = 'foo';
@lines = qw(${baz}\n);
s/\${(.+)}/$form{$1}/g for @lines;
print for @lines;

251 :名無しさん@お腹いっぱい。:01/11/11 21:01 ID:???
>>248
http://forest.ne.jp/cgi-ml/#archives
41200あたりのテンプレート関連を見るとよいかも。

252 :名無しさん@お腹いっぱい。:01/11/11 23:02 ID:???
>>249>>250
あっさり成功しました…。
\1と$1をごちゃごちゃにしてました。
\1ってのもありますよね?どう違うんだろう。

>>251
見てみます。ありがとうございました。

253 :名無しさん@お腹いっぱい。:01/11/11 23:05 ID:???
\1は検索で使う。
$1は置き換えやその後違うところで使う。

254 :名無しさん@お腹いっぱい。:01/11/12 02:49 ID:???
URLリストを比較して、重なっているURLを一方のファイルから
削除するスクリプトでポイントになるのはどのような点なのでしょうか。
全く検討がつかなくて、検索をはずしまくっています。
参考になるページを教えてもらえないでしょうか。

255 :名無しさん@お腹いっぱい。:01/11/12 03:33 ID:yjAJ+kh7
>>254
>全く検討がつかなくて、検索をはずしまくっています。
検索キーワードは「集合演算」「差集合」あたりでしょう。

256 :名無しさん@お腹いっぱい。:01/11/12 03:42 ID:???
>>255
次のページで解決できそうです。ありがとうございました。

http://www.google.com/search?q=cache:ap2Un9yjbio:tokyo.cool.ne.jp/hharuki/perl/hairetu2.html+%8FW%8D%87%89%89%8EZ+perl+%8D%B7%8FW%8D%87&hl=ja&lr=lang_ja
(Googleキャッシュにしか残っていませんでした)

257 :名無しさん@お腹いっぱい。:01/11/13 00:34 ID:4DKwnz9F
複数ある送信ボタンのうち、選択したものによって実行内容が変わるスクリプト
を作っています。

<input type="submit" value="送信01" name="soushin">
<input type="submit" value="送信02" name="soushin">

送信ボタンには上の二つがありますが、valueを『01』だけにする(divergenceの
部分も併せて変える)とうまくいくのに、日本語が入るとどうもうまくいきませ
ん。

何か良い方法はないですか?

スクリプトは次に載せます。

258 :257:01/11/13 00:47 ID:4DKwnz9F
改行が多くて載せられないと言われてしまったので、以下に置きます・・・。

http://www.geocities.co.jp/Outdoors-River/5665/sample.txt

宜しくお願いします。

259 :名無しさん@お腹いっぱい。:01/11/13 02:14 ID:iAaKn9Wv
>>257
sub div {

if ($soushin =~ /01/) { &soushin01; exit; }
elsif ($soushin =~ /02/) {&soushin02; exit; }

}

パターンマッチ演算子にしてるけどさ、普通に eq '送信01'とかじゃダメなの?
コードがEUCだけど、"charset=iso-2022-jp" で出力してるから、ボタンの
文字もiso-2022-jpで拾われちゃうし。

確実にJcode使っていけば、そんな問題は起きないと思うけどな。

260 :名無しさん@お腹いっぱい。:01/11/13 18:15 ID:CkfqNGb7
検索のCGI作ってるのですが、複数のファイルから検索する場合は
どうすればいいのでしょうか?

例えばファイルが1つだとこのように読み込みますね。

open(IN,"data1.txt");
eval{flock(IN,1)};
@username=split(/\,/,scalar(<IN>));
close(IN);

これをdata1.txtだけでなくdata2.txt、data3.txtからも
読み込んで検索したいのです。

261 :名無しさん@お腹いっぱい。 :01/11/13 18:29 ID:???
opendir DIR,"./poyo";
@files = readdir DIR;
foreach (@files){
 open IN,"$_" if(-T "$_");
   。
   。
}

262 :名無しさん@お腹いっぱい。 :01/11/13 19:07 ID:???
PERLで構造体みたいなのはあまり使わないんでしょうか?
データ型に無いのかな、、、

263 :名無しさん@お腹いっぱい。:01/11/13 19:35 ID:???
>>262 ハッシュでいくらでも実現できる。

264 :名無しさん@お腹いっぱい。:01/11/13 19:51 ID:???
%struct1 = qw{
  name hoge
  year 20
  next
};
$struct1{next} = \%struct2;
%struct2 = qw{
  name foo 
};
print "$struct1{name}\n";
print "$struct1{year}\n";
print "${$struct1{next}}{name}\n";

こんな感じ w

265 :名無しさん@お腹いっぱい。:01/11/13 20:08 ID:g8ogkECZ
 CGIの暴走・・・ってよく聞きますが、実際にどういう
ことなんでしょうか?

 自分の中では「無限ループに陥ってしまうこと」と解釈し
てるんですが・・・。

 他にも「CGIの暴走というなら、こういうのもそうだ」
というのがあったら教えて欲しいッス。

266 :名無しさん@お腹いっぱい。:01/11/13 20:13 ID:oVBsXhBR
最近やってもうた無限ループ&aaa() のスペルミスで無限ループ。
しかも原因がなかなか分からなく、苦戦。

sub aaa{
&aaa($hoge) if($hoge eq "foo");
処理,,,
}

267 :名無しさん@お腹いっぱい。:01/11/13 21:35 ID:???
>>265
突然わけのわからん処理を延々続けるとか。
掲示板のログ整理でログ全消しのうえ周辺ファイルまで消したり。

>266 ループと違ってstack overflowやout of memory! にならんか。

268 :名無しさん@お腹いっぱい。:01/11/13 21:50 ID:???
>>267
それもまた暴走と言える気がしなくもないが。

269 :260:01/11/13 22:22 ID:yD0vdlkp
>>261が回答なんでしょうか?
すいません、厨房にもわかるよう誰か教えて下さい。

270 :名無しさん@お腹いっぱい。:01/11/13 22:28 ID:???
>269
>261さんじゃないですけど。
opendir DIR,"./poyo"; #ログのあるディレクトリを開く
@files = readdir DIR; #ディレクトリ内のファイルを配列に入れる
foreach (@files){ #配列の中身全てに対して
 open IN,"./poyo/$_" if(-T "./poyo/$_"); #そのファイルがテキストファイルならファイルを開いて
   。 #処理をする
   。 #処理をする
}

ただ、ここまで教えてもらったら、自分でも調べてみた方がいいですよ?

271 :名無しさん@お腹いっぱい。:01/11/13 23:21 ID:???
>269
>これをdata1.txtだけでなくdata2.txt、data3.txtからも
>読み込んで検索したいのです
なら単純に3回コピペを繰り返せばいい。それでも動くし全然問題無い
その聞き方じゃ、その分繰り返せとしか答えられないだろ?

多分配列操作が出来ないと仮定して書く
for $datafile (("data1.txt","data2.txt","data3.txt")){
print $datafile,"\n";
}

272 :名無しさん@お腹いっぱい。:01/11/14 00:38 ID:???
ファイルの一番最後の行だけ読み出すことは出来ませんか?
やはり先頭から順に読んでいかなければなりませんかね。

273 :名無しさん@お腹いっぱい。:01/11/14 00:49 ID:???
$ tail -1
ってそういう意味じゃない?

274 :名無しさん@お腹いっぱい。:01/11/14 00:56 ID:???
>272
readで取って,\n以後を取る。
\r出てくるまで取り続ける。

http://pc.2ch.net/test/read.cgi/php/1000804655/394-443
で422氏がtailもどきというのを作ってたので参考にするといいかも。

275 :274:01/11/14 00:58 ID:???
環境で\nやら他の字やらになるか。

276 :名無しさん@お腹いっぱい。:01/11/14 01:09 ID:???
素直にDB_RECNO使っとけ。

277 :名無しさん@お腹いっぱい。:01/11/14 01:11 ID:???
>>273
「$tail」というのは、Perlの標準の関数なんですか?
今まで存在すら知りませんでした。

>>274
ありがとうございます。そのスレ読んでみます。

278 :273:01/11/14 01:17 ID:???
違う違う、シェルです(^^;; > $

279 :名無しさん@お腹いっぱい。:01/11/14 01:17 ID:???
すみません、オートリンクで
http://www.****.com/redirection.cgi?target=http://www.yahoo.co.jp
の様に、cgiを一回咬ませたいのですが、どの様にしたらいいでしょうか?
本当に初心者の質問ですみません・・・

280 :名無しさん@お腹いっぱい。:01/11/14 01:21 ID:???
s#($uri)#<A href="$1">$1</A>#g;
みたいのを
s#($uri)#<A href="$cgi?$1">$1</A>#g;
とかやるだけと思うが。

281 :279:01/11/14 01:51 ID:???
>>280
お答え有り難う御座います。
ですが、何だか巧く行かなかったので、もうチョイ詳しく書いてみようと思います。
ーーーーソースーーーー
sub autolink{
$_[0] =~ s/(https?|ftp|gopher|telnet|whois|news):\/\/([\w|\!\#\$\%\&\'(下の行と繋がってます)
\(\)\=\-\^\`\\\|\@\~\[\{\]\}\;\+\:\*\,\.\?\/]+)/<A HREF=\"$1:\/\/$2\" TARGET=\"_blank\">$1:\/\/$2<\/A>/g;
}
ーーーーソースーーーー
元のスクリプトはこの様に書いてるのですが、>>280さんの言う通り(当然、変数とかはちゃんと設定して)
やったのですが、エラーが出てしまいました・・・
どうしたら良いでしょうか?

282 :名無しさん@お腹いっぱい。:01/11/14 02:07 ID:???
>>281
出来ないから正解教えてくれっていうのは
改造スレ行った方が良くないかい?

せめて自分で何かしらのヒントをつかむ努力をして
勉強する気があるんだなって思われるようにしないと
教える方々も教え甲斐が無いと思うけど。

283 :279:01/11/14 02:15 ID:???
>>282
はい、すみません、未熟者でした。
redirectionのCGI作成から始めて、
今のトコで詰まって数時間調べても余り判らず、聞いてしまいました。
もっと、勉強し直してきます。失礼致しました。

284 :282:01/11/14 02:19 ID:???
なんだろう、この後味の悪さ…。

285 :名無しさん@お腹いっぱい。:01/11/14 02:20 ID:???
TARGET=\"_blank\">$1:\/\/$2<\/A>/g;
の行を。。
TARGET=\"_blank\">$cgiurl$1:\/\/$2<\/A>/g;
でどう? $cgiurl = 'http://hogehoge/foo.cgi?';
とかにしとく
エラーが出ますはちょっと勘弁 (w

286 :名無しさん@お腹いっぱい。:01/11/14 02:25 ID:???
理解しないまま使うな。絶対後で問題起きる。
正規表現勉強して,自分で書いたほうがいい。

287 :285:01/11/14 02:26 ID:???
もう居ないかな、CGIでそんなのするなって、どうやってチャージすんのさ
捨てファイル一枚開けといて、疑問に思ったり解らん事が有ったら
そこにちょこっと書いて、コマンドラインから実行してみ
PODでコメントにしながら貯めていけば後から見たり出来るから
多分1000行くらい溜まる頃には普通に使える様になるよ

288 :名無しさん@お腹いっぱい。 :01/11/14 02:34 ID:???
使ってれば理解出来るってのも有るぞ、C++とか馬鹿デカ過ぎて厨な俺は半分位なんで
動いてるのか分かって無いよ :−(
ROMってる人に役立つかも知れんからマッタリいこーや
エラーが出ます、は困ったもんだが・・・

289 :超初心者:01/11/14 02:36 ID:???
>>281
281だと1が返るのかな。
sub autolink{
 my $url = shift;
 $url処理・・・
 return $url;
}
>エラーが出てしまいました・・・
エラーの内容書いた方が良いよ。

290 :名無しさん@お腹いっぱい。:01/11/14 02:40 ID:???
BBSのREFFER辿られたくないからPERLProxy置いて、そいつにリクエスト
投げたいからBBSを弄ってるんだろ?
なんだかなあ。。。。

291 :名無しさん@お腹いっぱい。:01/11/14 02:45 ID:???
@_を変えるとオリジナルも変わる。

292 :名無しさん@お腹いっぱい。:01/11/14 02:46 ID:???
>>290
なるほど。そういうことか。

ていうか、HTTP_REFERERって
標準化するときの単なるスペルミスなんだってね。w

293 :名無しさん@お腹いっぱい。:01/11/14 02:48 ID:???
>>263>>264
ああ、連装配列で委員っすね ^^;
なるほど、中々慣れないもんで・・・ ありがとっす ^^

294 :257:01/11/14 02:51 ID:???
>>259
ありがとうございます。
うまくいきました。

お恥ずかしい限りで・・・。

295 :279:01/11/14 03:05 ID:???
>>285さんの言われたのを
<A HREF=\"$1:\/\/$2\" を
<A HREF=\"$cgiurl $1:\/\/$2\"
に変えたら無事に出来ました、沢山の方に御迷惑お掛けしました。
本当に有り難う御座いました。
>>290さん
おっしゃる通り、REFFER辿られたくないので弄っていました。
PERLProxyって言うのが良く判りませんでしたが、
最近、私のサイトの掲示板で質の悪い書き込みを沢山する人が居たので
REFFERから来たんじゃない?と言われてやってみたのです。
本当に、有り難う御座いました。

296 :名無しさん@お腹いっぱい。 :01/11/14 03:14 ID:???
>>291 あぅ…そうですね。トホホ

297 :285 :01/11/14 03:17 ID:???
すまんすまんちょっと間違えた、
まあ正規表現はけっこう便利だからこれに懲りずにてきとーに本でも読んでみて

298 :名無しさん@お腹いっぱい。:01/11/14 13:33 ID:nPGI7kkt
Perl5.6で日本語使いたい
s/表/票/みたいな置き換えしたい
鈴木さんのjperlって5.005用ですよね?

ためしにインストールしたらPerlCRT.dllがないって怒られちゃいました

perl5.6用のjperl欲しいっす
使いたいときって限られてるのでperl5.6と5.005用のjperlの共存でも
いいです
どうしたらいいっすか

299 :名無しさん@お腹いっぱい。:01/11/14 14:24 ID:???
unicode使え。

300 :RA・イール:01/11/14 14:44 ID:h/x7Yxzr
概出でしたら申し訳ありませんが質問です。
初心者なので質問の至らない点はご容赦してください。
Web画面上で文字列を取得し、その文字列を用いてサーバー(UNIX)上で
grepをかけてその結果を表示するCGIを作成しているのですが、
半角英数及び"-_."の記号は認識するのですが、2バイト文字や
上記3つの記号以外を入力しても認識してくれません。
入力した文字がgrepの前にどうなっているのかを調べたところ
半角「#」であれば「%23」等のようにどうやら文字コードになっているようです。
"-_."や半角英数はちゃんと表示されるのですが・・・・・・
どうすればよいのかアドバイスしていただけないでしょうか?
よろしくお願いします。
長文になって申し訳ありません。

301 :名無しさん@お腹いっぱい。:01/11/14 15:21 ID:???
>300
>>2-8 全部見ろとまでは言わんが,とほほくらいは目を通しとくといい。
http://tohoho.wakusei.ne.jp/www.htm

そのままそういう文字を送信すると,不都合が起きるのでエンコードされる。
URI::Escape.pmとかを使おう。
http://www.bekknet.ad.jp/~bero/docj/module/15/URI_Escape.html

どうしても自力でやるならここ見れ。
http://tohoho.wakusei.ne.jp/wwwcgi3.htm#CgiEncode
http://www.din.or.jp/~ohzaki/perl.htm#JP_Escape

302 :名無しさん@お腹いっぱい。:01/11/14 15:26 ID:???
それはブラウザがエンコードしてるからです。
文字コードに戻すには、perlなら、
s/%(.{2})/pack("C", hex($1))/eg;
Cなら
c = (x[0] >= 'A' ? ((x[0] & 0xdf) - 'A') + 10 : (x[0] - '0'));
c *= 16;
c += (x[1] >= 'A' ? ((x[1] & 0xdf) - 'A') + 10 : (x[1] - '0'));
みたいな感じです、半角スペースは + になってるのでそれも変換して下さい。

303 :名無しさん@お腹いっぱい。:01/11/14 15:27 ID:???
Perlスレだった、、 鬱だ

304 :RA・イール:01/11/14 17:10 ID:h/x7Yxzr
>>301さん
>>302さん
ありがとうございます。
無事解決いたしました。

305 :298:01/11/14 20:08 ID:???
>>299
スクリプトをunicodeにするだけじゃダメですよね?(ダメでした)
処理したい対象のテキストがシフトJISなんです…

あ。読み込んでunicodeに変換して、それから必要な処理を
すればいいのか…な?

306 :名無しさん@お腹いっぱい。:01/11/15 20:57 ID:???
>>262-264 構造体の型?を宣言しておくことはできないんですか?
いちいち新しく宣言しなければならないのでしょうか?

307 :名無しさん@お腹いっぱい。:01/11/15 21:41 ID:2NOZWJEm
>306 Class::Structとかは?

308 :名無しさん@お腹いっぱい。:01/11/15 23:31 ID:u8RJIxtX
はーい、先生しつもーん!
perlってプログラム言語だから、てっきりプログラム板だと思ったのに、なんでWebProgなんですか?
WebProg専用って訳じゃないですよね?
しかも、あっちでは冷遇されてるみたいだし‥‥
なんでプログラム板ではperlちゃんは虐められるんですか?

309 :名無しさん@お腹いっぱい。 :01/11/15 23:32 ID:???
>306 どこの星の人か知らないけどPerl使ったこと有る??

310 :名無しさん@お腹いっぱい。:01/11/15 23:56 ID:???
何で虐められてるの
あなたの発言内容が冷遇されてるのでは? (笑

311 :名無しさん@お腹いっぱい。:01/11/16 00:30 ID:ecg87As1
>>310

おいらじゃないけど、あっちでperlの質問スレ立てた人が、「板違いだ」と言われてました。

312 :名無しさん@お腹いっぱい。:01/11/16 00:41 ID:???
言語っていうよりCGI作成スクリプトってかんじだからかなぁ。
設置するだけの厨も多いし。

313 :名無しさん@お腹いっぱい。:01/11/16 01:07 ID:???
shige虫がウザイからです  w

314 :名無しさん@お腹いっぱい。:01/11/16 05:11 ID:???
>>308 むかしはCGI/Perl板だったから、こっちでやれってことじゃない?今でも。
>>312 それはただ単に世間が狭いからでは? Autoconfの一部, tmake(Qt), fmlとか幾らでもあるでしょ。

315 :名無しさん@お腹いっぱい。:01/11/16 05:27 ID:???
Perlしか出来ないCGI厨も多いのも事実だな(w

316 :名無しさん@お腹いっぱい。:01/11/16 07:11 ID:???
Perlしか出来ないCGI厨は氏ね。

317 :名無しさん@お腹いっぱい。:01/11/16 10:40 ID:???
Perlすら満足に出来ないCGI厨も居るがな。

318 :名無しさん@お腹いっぱい。:01/11/16 13:40 ID:???
>>315はまだいい。ってか折れだし。
>>317はマジ迷惑。

319 :名無しさん@お腹いっぱい。:01/11/16 14:08 ID:???
どこまで出来れば「満足に出来る」ことになるんだろう・・・(ぼそっ)
perl理解して無いより、CGI理解してない方が迷惑だけど、それはまぁいいや。

320 :名無しさん@お腹いっぱい。:01/11/16 22:12 ID:eZwp685j
$ENV{'HTTP_HOST'}$ENV{'SERVER_NAME'}$ENV{'SERVER_ADDR'}
って全部同じ?

321 :名無しさん@お腹いっぱい。:01/11/16 22:17 ID:???
>320
LANを組んだローカルサーバーで試してみそ。

322 :名無しさん@お腹いっぱい。:01/11/16 23:49 ID:WbULnsbP
>>321

どんな環境で試すと。。。3つ同じになるのかよく考えてみよう

323 :321:01/11/17 00:24 ID:???
>322
俺はこれで違うものが出るからこう言ってるんだけど?
>320はそれが全部同じ物と思ってるんでしょ?
反例出せばいいのかと思ったんだけど違ったならスマソ。

324 :名無しさん@お腹いっぱい。:01/11/17 10:00 ID:caH7oXws
2つの変数($HOGEと$SAGE)の値を交換する方法を教えてください

今現在、
$TEMP = $HOGE ;
$HOGE = $SAGE ;
$SAGE = $TEMP ;
にしてるわけですが非効率ですよねぇ

325 :名無しさん@お腹いっぱい。:01/11/17 10:06 ID:???
($hoge, $sage) = ($sage, $hoge)

326 :521:01/11/17 10:10 ID:FtGVdyVD
そのやり方で良いよ、仮に「2つの変数を入れ替える関数」が有ったとしても(無いけど)
どちらかをtempの領域にコピーして入れ替えた後復帰してる事に変わりない
メモリを使わずに空中で交換なんて出来ないんだから。
もしHOGEとSAGEが大きな変数ならリファレンスを使おう

327 :名無しさん@お腹いっぱい。 :01/11/17 10:11 ID:???
ぐはっ、HNが

328 :名無しさん@お腹いっぱい。:01/11/17 15:58 ID:???
> メモリを使わずに空中で交換なんて出来ないんだから。
xorしてxorしてxorすればテンポラリ領域なしで交換できるよ。
でも、素直にテンポラリ使った方が速い、安全、わかりやすい。

329 :名無しさん@お腹いっぱい。:01/11/17 16:29 ID:???
本当だ。数値なら、
$b+=($a=($b+=$a)-$a);
で入れ替わる。

330 :名無しさん@お腹いっぱい。:01/11/17 18:51 ID:???
$b -= ($a = ($b += $a) - $a);
じゃないか?

331 :329:01/11/17 19:21 ID:???
>>330 本当だ。どこでコピペをミスったのだろう。。。(鬱

332 : :01/11/17 21:16 ID:hnjwBqTf
Windows2000、ActivePerlです。
ActiveState Perl Dev Kitをインストールして使っていて、

C:\>perl -d hoge.perl
で自動的にGUIベースのデバッガが自動で起動しますが、CUIでデバッグ
したいときだけCUIデバッグを開始する方法ありますか?

333 :名無しさん@お腹いっぱい。:01/11/17 23:34 ID:JGfA8W5O
スゲー
$b ^= $a ^= $b ^= $a;
で入れ替わるんだ。 これだと文字列でもできるんですね。

334 :名無しさん@お腹いっぱい。:01/11/17 23:58 ID:???
>>333
長いほうにあわせてzerofill(?)されるので問題ありとか。

335 :333:01/11/18 00:05 ID:???
本当だ。整数同士、文字列同士なら問題なさそうだけど、
少数が混ざったり、整数と文字列を交換しようとしたらダメなんですね。
確かにリスクが多そうだ。

336 :名無しさん@お腹いっぱい。:01/11/18 00:34 ID:???
アクセス解析で訪問者のドメインを取得しようとしたんですが、
下の書き方だとCGIを置いてるサーバーのドメインが取得されて
しまいます。どこが間違ってるのでしょうか?

$a1 = $ENV{'HTTP_HOST'};

open (ANSWER, ">>data.txt");
flock (ANSWER, 2);
print ANSWER "$a1\n";
flock (ANSWER, 8);
close (ANSWER);

337 :名無しさん@お腹いっぱい。:01/11/18 00:57 ID:???
ファイルを1ビットずつコピーするっていうやつを何処かで見かけて、
使ってみようと探してみたら見つかりません。(Perlメモだったと思ったけど、見つからない・・・)
ご存知の方教えてください。 よろしくお願いします。

>>336 $ENV{REMOTE_ADDR}でいけるはず

338 :名無しさん@お腹いっぱい。:01/11/18 01:00 ID:???
HTTPリクエストヘッダについて学んで下さい。

339 :名無しさん@お腹いっぱい。:01/11/18 01:05 ID:???
>>336
普通は $ENV{REMOTE_HOST}だとおもう。

340 :336:01/11/18 01:29 ID:jf4mdJsf
>>337
$ENV{REMOTE_ADDR}だとIPが取得されてしまいます。
>>339
$ENV{REMOTE_HOST}だと何も取得出来ないのですが・・

341 :名無しさん@お腹いっぱい。:01/11/18 01:37 ID:GYkHI9xF
>>339
サーバの設定によってはいちいち逆びきしないのも
あるんじゃなかったけ?

342 :340:01/11/18 01:40 ID:GYkHI9xF
おお、かぶった。
>>341
gethostbyaddr を使うことになると思う。
CPAN突っ込めるならもう少し楽になる。

343 :340!=341=342:01/11/18 01:48 ID:GYkHI9xF
342>340だった。
CPAN使わんでも標準モジュール(perl-5.6.1では)で
Net::hostent というのがあった。

344 : :01/11/18 07:40 ID:ec8bnEpU
locationやredirectを使わず、CGIから直接ファイルをダウンロードさせる事って出来ますか?

print "Content-type: application/download\n";
print "Content-disposition: filename=\"test.lzh\"\n\n"; だと駄目みたいです

345 : :01/11/18 07:43 ID:???
あれ?これは全然違ったかな
やっぱりブラウザからGET送られないと無理ですかね・・・

346 :名無しさん@お腹いっぱい。:01/11/18 10:02 ID:???
>>344
FAQかな?ここに書いてあったよ。
http://web11.freecom.ne.jp/~chaichan/qanda/qa414.htm

347 :336:01/11/18 14:08 ID:HApvi2Od
>>336
誰か教えて〜

348 :名無しさん@お腹いっぱい。:01/11/18 14:25 ID:???
>>347
>>342に答えあるだろうが…。

349 :348:01/11/18 14:26 ID:???
それで分からなきゃ検索しなさい。
検索して分からないようなら
自治体主催のIT講習会でも行って来なさい。

350 :名無しさん@お腹いっぱい。:01/11/18 14:43 ID:???
>>349
ここは初心者用スレだというのがわからんのか?

351 :名無しさん@お腹いっぱい。:01/11/18 14:53 ID:???
>>350
だから何か?

352 :名無しさん@お腹いっぱい。:01/11/18 14:58 ID:???
・初心者向け結論・
サーバーの設定によってはリモートホストは取得できない。
IPで我慢すれ。

353 :344:01/11/18 18:07 ID:???
>>346さんので成功したんですが、
Perlを通して吐き出す際、壊れてしまうみたいです。(Windows+ActivePerlで.zipを出力)

foreach $_ (@temp) {
  $_ =~ s/\n//g;
  print $_;
}
とりあえずこれで\nは消してみたんですが、後ろの方がさっぱり消えてしまいます。
(.rarに関してはRar!としか出ません・・・)
何をどう置き換えればいいんでしょうか?

354 :名無しさん@お腹いっぱい。:01/11/18 18:36 ID:???
binmode()

355 :353:01/11/18 21:14 ID:???
>354 出来ました! もっと調べるべきでした。すいません

356 :RA・イール:01/11/19 15:45 ID:jO7Jmwt3
300で質問している者です。度々申し訳ありません。
grepの部分で
1. $command .= '"/usr/bin/grep ' . "\'$string\' " . "$filepath " . "| head -n $linenum \"|";
1のようにした場合、2バイト文字や記号等も拾ってくれるのですが
2. $command .= '"/usr/bin/grep -h "' . "^$day_string" . '" ' . "$filepath " . "| grep " . "\'$string\' | head -n $linenum \"|";
上記の場合、2バイト文字や記号等を認識してくれないのですがどうしてでしょうか?
どうすればよいのかアドバイスしていただけないでしょうか?
よろしくお願いします。

357 :名無しさん@お腹いっぱい。 :01/11/19 16:05 ID:???
良く解らんけど、2回目のgrepの手前でnkf通すとどうなる?
2バイトはさっぱりだけど&%$とかは2回通ったけどなぁ・・・
Unix板のハッカーに聞けばどしどし答えてくれそう (^^;

358 :名無しさん@お腹いっぱい。:01/11/19 16:06 ID:???
あ、違った。パイプから返ってくる時におかしくなってるのか?
だったら解んないっす

359 :名無しさん@お腹いっぱい。:01/11/19 19:04 ID:pdb1llN8
>>を見つけたら置換したいんですが上手くいきません

$test =~ s/>>/aa/g;

>>の指定はどのようにしたらいいのでしょうか

360 :名無しさん@お腹いっぱい。:01/11/19 19:21 ID:???
んなこたあ無い

361 :名無しさん@お腹いっぱい。:01/11/19 20:48 ID:f2JzrPLI
掲示板の改造してたんですが
>じゃなくて>に中で変換されていました・・・

362 :名無しさん@お腹いっぱい。:01/11/19 20:49 ID:f2JzrPLI
↑&gtに変換されていました
(半角で書くと変換されちゃうんですね)

363 :名無しさん@お腹いっぱい。:01/11/19 21:32 ID:j7n2AWkf
デザイン的に良くないので、petitboardの著作権表示を修正したら動かなくなったんですけど、何故でしょうか?
冬厨ですみません。

364 :名無しさん@お腹いっぱい。:01/11/19 21:48 ID:???
>363
http://pc.2ch.net/test/read.cgi/php/988808396/
どうぞこちらへ。

365 :名無しさん@お腹いっぱい。:01/11/19 21:53 ID:j7n2AWkf
>>364

flock(OUT, 8);
close (OUT);

を、

exit;

に変えればよろしいのですか?

366 :名無しさん@お腹いっぱい。:01/11/19 22:19 ID:???
そのとおりです!!
凄いですね (^v^

367 :名無しさん@お腹いっぱい。:01/11/19 22:29 ID:WFMClysi
data.txtに
1・・
2・・
3・・


と並んでいるのを読み込み、上から「10件まで」と件数を決めて
別のファイルに書き込みたいのです。
openやprintの使い方はわかるのですが、件数の決め方がわから
ないので教えて下さい。

368 :名無しさん@お腹いっぱい。:01/11/19 22:39 ID:???
openやprintの前にforの使い方をおぼえよう(w

369 :名無しさん@お腹いっぱい。:01/11/20 00:17 ID:???
>>368
forの方が後だろ(w

370 :名無しさん@お腹いっぱい。:01/11/20 00:19 ID:???
>>369はforで挫折したそうです pupu

371 :名無しさん@お腹いっぱい。:01/11/20 00:34 ID:???
>370
他人を主人公にして自分の思い出を語るのはやめれ。

372 :名無しさん@お腹いっぱい。:01/11/20 00:45 ID:???
鋭いですね、そのとおりです>>371さん
あれは小学5年頃の話でしょうか
話について来れなくて気を悪くなされたならごめんなさい。

373 :名無しさん@お腹いっぱい。:01/11/20 01:31 ID:???
a.cgiからb.plのサブルーチンを呼び出す事は可能でしょうか?

374 :名無しさん@お腹いっぱい。:01/11/20 01:35 ID:???
require または use
ってことでしょーか?

375 :名無しさん@お腹いっぱい。:01/11/20 03:42 ID:???
>>370、372

369をどう読めばforで挫折したと解釈出来るんだ?
ぼうやはforより先にひらがなを勉強すべき(w

376 :名無しさん@お腹いっぱい。 :01/11/20 06:49 ID:???
(w(w

377 :名無しさん@お腹いっぱい。:01/11/20 17:18 ID:???
小学校5年生の頃といえば・・・ベーマガに投稿した自作PRGが掲載された頃ゾヌ
あの頃はフロッピーディスクなんて高嶺の花・・・

378 :名無しさん@お腹いっぱい。:01/11/21 01:35 ID:???
Perlってヌルターミネートして、文字列を分割とかって出来ない?
例えばstring = "hoge#poyo#1000#comment"、みたいなデータが有ってCommentだけが
不定長だとするとCとかならstring[4] = '\0';とかしてmoveせずにガンガン使えるんだけど
splitだとCommentの最後までループしちゃうし、値をコピーするから
凄く遅そうですよね。commentが10000バイトとかだと結構差が有るんで
何とかしたいんです。
BBSなんかの行解析は大抵splitを使ってるけど・・・・
indexとか使って上手く出来ないですかね・・・・

379 :適当に即答。:01/11/21 01:41 ID:???
s/^(.*?)#/\1/ じゃだめ?

380 :名無しさん@お腹いっぱい。:01/11/21 07:57 ID:???
>378
comment以外が固定長なら
substr($string,14,length($string))
でできないかな?

381 :名無しさん@お腹いっぱい。:01/11/21 20:46 ID:???
>377
30代オヤヂ族かよ(w
いいトシして板スレ違いは自粛しようぜ(大爆笑)

382 :名無しさん@お腹いっぱい。:01/11/21 22:47 ID:???
ごめんチャイナ(ぐすん)

383 :名無しさん@お腹いっぱい。:01/11/22 13:24 ID:???
それってもへんじょだろ?

384 :名無しさん@お腹いっぱい。:01/11/22 14:27 ID:???
うむむ。。。本当にそれでインカ?

385 :名無しさん@お腹いっぱい。:01/11/23 06:07 ID:rvdfMFcf
Perlの練習に一番いいエディタって何でしょう?
今Vivi使ってますが試用期間過ぎてるのでウザイです。
シェアの定番は秀丸というのは知ってますがフリーで
いいのありませんか?
あまりいいのなければViviに3000円出そうと思ってるのですが。。

386 :_gunzip@vimマンセー:01/11/23 06:39 ID:???
>>385
Viviっていえば、たしかvi互換エディタだったよね?
Windows版vim(gvim)はどうでしょうかね。

本家 http://www.vim.org/
Windows版 http://www.kaoriya.net/(日本語)

387 :名無しさん@お腹いっぱい。:01/11/23 06:45 ID:???
Perlで書かれたCGIスクリプトをコンパイルしたいんですけど、
そのためのツールは何て名前でしたっけ?
いくら検索しても見つかりません。
よろしくお願いします。

388 :白夜 ◆GiKO.QrM :01/11/23 07:06 ID:???
>385
パールエディタってのを一応持ってる。
あんまり使わないけど一応フリーなんで。

ttp://www.k-collect.net/

389 :名無しさん@XEmacs:01/11/23 07:14 ID:MqJMqOjc
>>387
perlcc
perl2exe

390 :名無しさん@お腹いっぱい。:01/11/23 11:53 ID:???
開発には向かないが、Copalってのもある。。。ちょっとしたコードのテストに使ってる。

391 :名無しさん@お腹いっぱい。:01/11/23 16:39 ID:???
>385
Tera Padというのが雑誌で評判よかったのでDLしてみたけど
マルチウィンド出来ないので使いづらかった。
やはりいいやつはお金出すしかないかも。

392 :名無しさん@お腹いっぱい。:01/11/23 23:17 ID:???
>>385

…せっかくだから定番だがXEmacsとかMeadowとかxyzzyとか。

393 :名無しくん:01/11/24 00:03 ID:???
>>385
Meadow最高!

394 :名無しさん@お腹いっぱい。:01/11/24 00:08 ID:2uJfuz0i
そうそう、そして秀丸に行くんだよ。
地味な面構えが邪魔にならなくて素敵。
って、お試しで使い始めたばかりの奴が言うのもなんだけど。

395 :正規表現わけわからん:01/11/24 00:08 ID:ZE9o/Xh4
2ちゃんねるみたく「http://・・・」があったら、アンカーでリンク貼るみたいな
のってどうやればいいんですか?

396 :名無しさん@お腹いっぱい。:01/11/24 01:43 ID:???
>>395
http://pc.2ch.net/test/read.cgi/php/996105815/104-

397 :正規表現わけわからん:01/11/24 01:50 ID:???
>>396
まじさんくす!ログ全て読む気になれなかったんで。

398 :名無しさん@お腹いっぱい。:01/11/24 02:21 ID:QdQjjDaq
いちごちゃんねるが今移転してますけど、
サイト全体をgzip+tarで圧縮、新サーバーへファイルを転送、解凍
というプロセスでサイトの移転は出来ますか?
パーミッションをそのままでできたらいいな、と思うのですが。

399 :名無しさん@お腹いっぱい。 :01/11/24 02:30 ID:???
http://www.linux.or.jp/JM/html/GNU_tar/man1/tar.1.html

400 :名無しさん@お腹いっぱい。:01/11/24 07:30 ID:???
質問なんですが。
日付を乱数に変換したいのですがどうすればいいでしょう?

たとえば01/11/24 02:30をランダムな英数字に暗号化のやり方が
わかりません。

一応自分なりに考えて
日付 = (( 日付 ) + 1 ) * 123;
などのように考えてやってみたのですが
どの日付も同じ結果になってしまって・・・。

だれかヘルプミー(;;

401 :名無しさん@お腹いっぱい。:01/11/24 07:46 ID:???
>>400
$salt = "abcde";
crypt($salt, time());

402 :名無しさん@お腹いっぱい。:01/11/24 07:53 ID:???
>>401
ちょっと質問していいですか?
そのcryptとはどういう意味を持つ単語でしょうか…。

$salt = "abcde";
crypt($salt, time());

って、$salt = "abcde";で、$saltはabcdeという意味にしてってところまでは
わかるのですが、下のcrypt($salt, time());がよくわからないので・・・。
time()が上で私がいった日付のことで、
で、ランダムにした日付を表示させたい場所に$saltを書くってとこまで理解したのですけど・・・

403 :名無しさん@お腹いっぱい。:01/11/24 07:56 ID:???
crypt($salt, time())=crypt(abcde, 日付); として、
cryptはどういう効果を出すんでしょうか。
あと$saltとtimeの間にいれる,もよくわからなくて・・・。

cryptはシャッフル。
,は合わせるという意味で、

シャッフル(abcde 合わせる 日付)

という感じなんですか?

404 :名無しさん@お腹いっぱい。:01/11/24 08:19 ID:???
>>403
あ、引数逆だった。 crypt(time(), $salt) でよろしく。

$perldoc crypt
$man 3 crypt
http://www.nlp.ie.niigata-u.ac.jp/~hiro/parole/kh.html

405 :これを読んでも。。。結局わかりにくいかな?:01/11/24 16:01 ID:???
>>400 「日付を乱数に変換する」という、考え方そのものに抜けがあるんです。
乱数というのは、求める度に違う数になって、別々に出した乱数が同じ数字になることはあり得ないものです。

日付を乱数に変換しても、適当に乱数を求めても、本質的な違いはないはずなんです。
ただ今の普通のコンピューターには本当の乱数を出す機能はありませんので、
「日付を種に、擬似乱数を生成する」ということはあります。(種が日付だけだと、かなり危険ですが。)
でもこれはたぶんおっしゃられていることと違うと思います。

日付から、一見でたらめに見える数を求めるということがしたいのだと思います。
このとき、日付→数 は求められても、 数→日付は求められないようにするのが、
「ハッシュ関数」というものです。
ハッシュ関数の場合、入力が同じである場合、出力は必ず同じものになります。
だから、考えられる全ての日付を入力して再計算をすれば、どの日付から求めたのかは
たちどころにわかってしまいます。
そのような攻撃をちょっとだけ、やりにくくするのが、味付け作業(塩を振る)という作業です。
ただ、saltは4096通りしかあり得ないので、総当たりすればばれてしまうことには代わり有りません。
注意が必要です。

最近は、cryptよりもmd5の方が流行っています。
2chでは、トリップはcryptで、IDはmd5でやっているようです。

数→日付 の再計算ができるようにしておくこともあります。この場合は、
共有鍵暗号や、公開鍵暗号を使うことになります。

406 :名無しさん@お腹いっぱい。:01/11/24 16:12 ID:???
ufc-cryptが最強、これホント

407 :名無しさん@お腹いっぱい。:01/11/24 16:53 ID:???
2chのID生成ってどうやってんだろ。

408 :403:01/11/24 23:00 ID:???
>>405-405
ありがとうございます!
なんとなくわかりました。
あとは私自信の勉強あるのみですね。

ほんとにどうもありがとう

409 :名無しさん@お腹いっぱい。:01/11/24 23:28 ID:PCZZBwJC
くだらない質問でしょうがお願いします。

PerlでCGIの勉強をしようと想い、参考書に付属してあった
PerlとApacheというWebサーバをインストールしました。
そしてまず基本の文字を出力すると言うコードを書き、
IEのブラウザから、そのCGIファイルがあるディレクトリを指定したのですが、
ブラウザに表示されず、そのCGIファイルをダウンロードしてしまいます。
IEの設定が間違っているのでしょうか?
解決方法お分かりでしたら教えてください

410 :名無しさん@お腹いっぱい。:01/11/24 23:42 ID:???
>>409
貴方はとんでもない思い違いをしています。
参考書をもっとよく読みましょう。

411 :409:01/11/24 23:58 ID:???
>>410
もう一度読みましたが分かりませんでした。
このApacheというソフトをインストールし、起動していれば
通常のようにネットに繋いでサーバにアクセスしなくてもいいんですよね?
どうか先ほどの説明して頂けないでしょうか

412 :名無しさん@お腹いっぱい。:01/11/25 00:20 ID:???
普通は、パーミッションを疑う。

413 :名無しさん@お腹いっぱい。:01/11/25 01:09 ID:ytkqM1hX
ファイル読み込みについて質問です。
open(DATA, "<./honbun.dat");
$bundata = <DATA>;
としてhonbun.datというファイルを$bundataに全て読み込めるのですが
下記のようにファイルパスを絶対参照にするとエラーが出てしまいます。
open(DATA, "<http://www.domain.com/honbun.dat");
下記のようなエラーメッセージです
[an error occurred while processing this directive]
パスを変更しただけで、他は何も変えてないんですが。
ちなみにSSIのincludeを使ってCGIを呼び出してます。
対処法アドバイスお願いします。

414 :すみません:01/11/25 01:21 ID:2tsqouHY
Perlの本についているCDからPerl For Win32とJPerl For Win32を
インストールしました。

そこから、その本に書いてあるとおりにプログラムを始めたいのですが、
メモ帳で作っても良い、という風に書いてあったのでメモ帳で書いたのですが。
メモ帳で作ったデータをhello.plという名前で保存して、
MS DOS プロンプトでperl hello.plとしても、
Can't open perl script"hello.pl"〜以下と出てしまいます。
確認しましたが、確かにPerlのインストールはされていたのです。(Cドライブに入れました)
これにはどのような理由が考えられるでしょうか?

415 :413:01/11/25 01:25 ID:???
>>414
perlのパスを通してないとか?または
hello.plを保存したフォルダに移動してないとか?

416 :名無しさん@お腹いっぱい。:01/11/25 02:13 ID:zHplANiE
>>409

>IEのブラウザから、そのCGIファイルがあるディレクトリを指定したのですが、
「アドレス」で指定せずに「ファイル」→「開く」にしたんじゃ?

417 :413:01/11/25 02:15 ID:ytkqM1hX
何度もすみません、>>413の質問内容を補足します。
他のサイトのhtmlファイルを読み込みたいんです(許可はとってあります)
その際、>>413のようにopenでアドレス指定でいいかと思ったんですが、
うまくいかないのです。それ以前に自分のサイト内でも絶対参照でopenしようと
してもエラーが出ます。読めていたファイルが絶対参照にしただけで読めなく
なるのでパーミッションではないと思うんですが。

418 :名無しさん@お腹いっぱい。:01/11/25 02:38 ID:???
httpとOSのパスは違います
あなたが ./hoge.html とか index.html で読めていたファイルの
絶対パスは C:\www\hoge.html や /home/foo/public_html/index.html
http://bar.com/hoge.html では***ありません***
って言うかそんな事出来たら困るでしょ?
httpd 仮想パス で検索しよう

419 :413:01/11/25 02:49 ID:ytkqM1hX
>>418 ありがとうございます。検索したらいっぱい出てきました。
ニュース記事のhtmlから見出し記事を自動抽出しようと思ったんですが。
(くどいですが許可はとってます)
見出しをdatにしてないのでhtmlから読み込むしかないよ〜と言われたもので
そのまま出来るのかなぁと。
調べてはみますが、無理って事なんでしょうか?

420 :名無しさん@お腹いっぱい。:01/11/25 03:17 ID:???
>>419
それならLWPモジュール使うといいっす。
use LWP::Simple;
$bundata = get("http://www.domain.com/honbun.dat");

421 :名無しさん@お腹いっぱい。:01/11/25 03:18 ID:???
出来ますよ
LWP::Simple と言うモジュールを使えば簡単に取ってこれます。
自分で書くことも出来ますが、、
どっちにしても、サーバがPerl(と言うかユーザ)にSocket接続を許している
のが大前提だけどね
http://x68000.startshop.co.jp/~68user/net/ ここをざっと読んでみて

422 :414:01/11/25 06:57 ID:DFU5N1cC
>>413
あ、多分それです。本にもパスがどうとか書いてあったし・・・。
ただ、それについてのやり方が全く具体的に書いてなかったので
分からないのです。。
初歩的すぎて書くまでもないことだったのかもしれませんが、
ちょっと始められなくなってしまってるので・・・
手順を教えていただけないでしょうか?
他のHPのPerlページでも、そこまで基本的なことは載っていないんで・・・
すみません。

423 :413:01/11/25 09:56 ID:ytkqM1hX
>>420-421 ありがとうございます!
LWPモジュールというのは聞いたこともなかったですが調べてみます。
420と421さん別人ですよね?タイミングがすごいなぁ(^^;

424 :413:01/11/25 10:08 ID:???
>>414
Cドライブのルートにperlがインストールされてると思うので
CドライブルートにあるAutoecec.batファイルにperlのパスを記述して
みるといいです。メモ帳で開いて大丈夫です。
上のほうにpath "%path%;c:\Perl\bin;"としてみて下さい。
書き換える前に、一応batファイルのバックアップとって下さいね。
書き換えたあとにパソコン再起動してから試して下さい。

425 :414:01/11/25 10:16 ID:sJfjrujt
>>413
ありがとうございます。
後で挑戦してみますね。

本に
Autoexec.batに以下のような記述をします、
PATH C:\WINDOWS;C:\WINDOWS\COMMAND
SET PATH=%PATH%;E:\USR\PERL5\BIN  ←この行を追加する

とかかれていたのですが、
AUTOEXECを開くと
Must Be installed Japanese Mode.
Cannot Install Device Driver.と出てしまいます。
これはどういうことなんでしょう?
日本語版をインストールすることが必要ということなんでしょうか?

426 : :01/11/25 15:23 ID:???
>>425
pathはおそらく通っている。
>>415にあるようにカレントにhello.plが存在しない。
perlよりも先に、MS-DOSを勉強することをオススメする。

427 :414:01/11/25 19:45 ID:elN1fKSW
>>426
了解です。ありがとうございます。
連続教えてチャンで恐縮なのですが、MS-DOSを勉強するのに何かオススメの
書籍・サイトってありますか?
検索サイトで調べても、ダウンロードとかについてしか
見つからないので・・・。

428 :名無しさん@お腹いっぱい。:01/11/26 12:50 ID:z2hJCNpL
>>427
http://www.nara-edu.ac.jp/~asait/latex/msdos.htm
こんなところかな。他にもあるだろうけど。
身近にCGI勉強中で、HTMLとDOSの使い方も同時に学ぶ必要があって
苦労している人がいるからつい気になってしまった。

こういうことは知ってる人がいたほうがいいと思うけど、そういう知り合いは
いないの?

429 :名無しさん@お腹いっぱい。:01/11/26 19:19 ID:o9/cvZ3V
スレ違いならすいません。
NT3.51ServerでWin32::DDEをuseできるようPerlを導入したいのですが、可能でしょうか。
実はActivePerl5.6.1-630をインストールしようとしてMSVCRT.DLLが足りないといわれ、
何とかインストールしてもPerlCRT.dllが足りないとかいわれてWin32::DDEがuse出来ないのです。

430 :429です:01/11/26 19:22 ID:o9/cvZ3V
PerlCRT.dllは同じPerlをインストールしたNT4.0WorkStationでも見つかりませんでした。
Win32環境では必要ないのでしょうか?

431 :名無しさん@お腹いっぱい。:01/11/26 21:13 ID:???
perlcrt.dllは存在しないよ。当方Win2K+SP2

432 :名無しさん@お腹いっぱい。:01/11/26 22:11 ID:???
>429
インストーラはバージョンアップ済み?

433 :429:01/11/26 22:37 ID:Owo3tZsO
インストーラはmsiのことでしょうか?ならば使わずにインストールしました。
batchからインストールです。
>>431 perlcrt.dllがなぜ必要になるのか私も不思議です。

434 :名無しさん@お腹いっぱい。:01/11/26 22:58 ID:???
>>433
InstMsi.exeを先にインストールしないとだめだよ〜ん

435 :名無しさん@お腹いっぱい。:01/11/27 00:49 ID:9VBxm652
i-modeサイトやっていてPCでのアクセスを防ぐ為、
i-modeはリファラーが取れないのを利用してi-modeとPCを
振り分ける下のようなCGIを書いたのですがうまくいきません。
どこが間違ってるのでしょうか?
ちなみに初心者ですので大勘違いしてたらすいません。

#!/usr/bin/perl

$a1 = $ENV{'HTTP_REFERER'};
if ($a1 eq '') {
print "Location: http://www.aaa.com/i-mode.html\n\n";
}else{
print "Location: http://www.aaa.com/pc.html\n\n";
}
exit;

436 :名無しさん@お腹いっぱい。:01/11/27 00:52 ID:???
>>435
PCからだってReffererを吐かない場合は幾らでもあるよ。

437 :名無しさん@お腹いっぱい。:01/11/27 01:09 ID:???
$ENV{HTTP_*}は100%信用出来る情報ではないことを覚えておくとよろし。

438 :名無しさん@お腹いっぱい。:01/11/27 01:26 ID:???
msvcrt.dllなんて、標準で入っているような

439 :名無しさん@お腹グー:01/11/27 03:17 ID:???
>>429
ttp://www.activestate.com/Products/ActivePerl/download.plex から
リンクを辿ってInstMsi.exeを導入してからMSI versionのActivePerl
5.6.1-630をインストールし直した方が早いだろう。 Win32-DDEはppmで
インストールしろ。
MSVCRT.DLLについて文句言われるならversionが古いんじゃあないの?
NT3.51Serverはアップデートしてあんのかよ。perlcrt.dllはbuild
5XXの時の話だよ。 欲しいならCPANにある、取ってこい。

440 :名無しさん@お腹いっぱい。:01/11/27 06:36 ID:LKRP0gaE
初心者というか、まだ勉強を始めてない者なんですが、
ウェブサイト更新時刻情報取得エージェント?(いわゆるアンテナ)を
作るためにはどの言語を勉強する必要があるんでしょうか?

↓こういう感じの奴
http://www.st.rim.or.jp/~kiwamoto/hina/

Perlであってます?

441 :名無しさん@お腹いっぱい。:01/11/27 07:10 ID:???
別に言語はなんでも良い。

442 :440:01/11/27 07:28 ID:???
つーことはPerlでもOKなんすね。
ありがとございます。

ちなみに鯖の条件としては、CGI使えれば問題ないですかね?

443 :名無しさん@お腹いっぱい。 :01/11/27 07:35 ID:???
鯖って専門用語ですか ??(・∀・)クスクス

444 :名無しさん@お腹いっぱい。:01/11/27 08:03 ID:???
認識度の高い俗語です

445 :440:01/11/27 08:14 ID:???
>>443
すみません、誤変換されてしまいました。


   ++ __ ノ 
    ノ   ノ  \


です。

446 :名無しさん@お腹いっぱい。:01/11/27 08:50 ID:???
>>445
読めません。

447 :名無しさん@お腹いっぱい。:01/11/27 11:30 ID:???
>>445
犬か何かに見える。
新キャラクター鯖犬誕生! 何の話だ。

448 :名無しさん@お腹いっぱい。:01/11/27 11:35 ID:???
_____________
      \  ++ __ ノ ・
鯖犬です  >  ノ   ノ  \
_____________/

449 :名無しさん@お腹グー:01/11/27 13:58 ID:???
つまらん、もっと糞詰まりの話キボンヌ

450 :名無しさん@お腹いっぱい。:01/11/27 14:09 ID:???
PerlでCGI組んでて
少しでもメモリの浪費を抑えたいんだけど
そういう場合foreachは使わないほうがいいの?

451 :名無しさん@お腹いっぱい。:01/11/27 14:36 ID:???
おしえてください。
フォルダ内に二つのHTMLファイルを用意して
例えば a.htm と b.htm としてですね。
条件によってどちらかを表示させたいんですがどのようにすればいいの
でしょうか?
簡単なようでなぜかつまってます

452 :名無しさん@お腹いっぱい。:01/11/27 15:20 ID:???
>>450
んなこたぁない。

>>451
print "Content-Type: text/html\n\n";
if ($jouken == 1) {
open HTML, './a.html';
while (<HTML>) {
print;
}
close HTML;
} elsif ($jouken == 2) {
open HTML, './b.html';
while (<HTML>) {
print;
}
close HTML;
}

453 :451:01/11/27 15:46 ID:???
>>452
ありがとうございます。m(__)m

454 :名無しさん@お腹いっぱい。:01/11/27 15:49 ID:???
>>451
んあ?

my $file = undef;
if (条件) {
  $file = 'a.html';
} else {
  $file = 'b.html';
}

open(F, $file);
print <F>;

455 :名無しさん@お腹いっぱい。:01/11/27 15:56 ID:FtCrXKQ9


456 :名無しさん@お腹いっぱい。:01/11/27 19:45 ID:???
うにゅ?

457 :クロスボウとやら:01/11/28 11:10 ID:4pa3crZc
質問です。

掲示板等のCGIで、投稿記事のIDに
$id = time . $$; # id = UTC秒数 + Perlプロセス番号
としてるものを見つけました。で、質問は2つ。

Q1:この$idはユニークな値であることが保証されるのでしょうか?
Q2:Q1がユニークであると仮定した場合、プロセス番号を付加する
メリットはなんでしょうか?

以上、よろしくデス。

458 :名無しさん@お腹いっぱい。:01/11/28 11:38 ID:???
A1
1秒の間に同じプロセスIDが使われるような異常な環境でない限り大丈夫だと思います。
A2
1秒間に複数の記事投稿処理が行われた場合被ってしまいます。
常時、処理に1秒以上かかる重いスクリプトの場合は大丈夫な場合もあります。

459 :名無しさん@お腹いっぱい。:01/11/28 11:47 ID:???
ふつーのUNIX系OSだと、pid は使い回さない(pid=65535まで使い切って初めて、pid=1から再利用を始める)ので、
短期的に見れば pid だけでも十分ユニークです。

pid に時刻を追加することで、長期的にもユニークであることを保証している、と考えた方がいいと思う。

というか、時刻だけってユニークなIDとして使い物にならない。

460 :東京地裁は役立たず!:01/11/28 12:19 ID:???
日本生命の削除依頼公開スレッド

1 :ひろゆき@暫定管理人 ★ :01/11/01 15:49 ID:???
「削除依頼は公開」の原則に従って削除したものを公開してますー。
ソース。
http://www.dd.iij4u.or.jp/~cap/nissei/

14 :名無しさん@お腹いっぱい。 :01/11/01 15:59 ID:I8TSGCyI
むしろこのGIFを保存しといてそこらにミラー作りまくるのが
2chねらの使命かと

15 :名無しさん@お腹いっぱい。 :01/11/01 16:00 ID:pX4yzwVD
>>10 つか、それがひろゆきのねらいだろ

16 :名無しさん :01/11/01 16:00 ID:4XQtcOuc
オイラはとりあえず保存しといたよ

17 :ひろゆき@暫定管理人 ★ :01/11/01 16:01 ID:???
いやぁ、削除依頼は公開って原則ですから、、
( ̄ー ̄)ニヤリ

18 :va :01/11/01 16:01 ID:+W2rWnl4
同じこと書き込んだら、速攻で削除されるのかな?

461 :名無しさん@お腹いっぱい。:01/11/28 12:34 ID:8tU8XC0g
ブラウザであるページ(A.html)を見たときに、自動的にあるスクリプト
(B.pl)が実行される仕組みをSSIを使わずに実現することは可能でしょうか?
<IMG SRC="../cgi-bin/B.pl" 〜>とかやってみたのですが、一応B.plは
実行されるものの、「画像無し」の×マークが表示されてまずいです。
どうか知恵をお貸しください。 既出っぽい気がしますが(;´Д`)

462 :名無しさん@お腹いっぱい。:01/11/28 12:42 ID:???
B.plで 1 x 1 位の画像出力するようにしとけ。

463 :名無しさん@お腹いっぱい。:01/11/28 13:31 ID:???
すいません、おしえてください。
ディレクトリ html にHTMLファイルとロゴなどのgifやjpegを
いれておきました。そこに .htaccess を置いて

order deny,allow
deny from all
allow from ***.***.***.***

と書いておいてCGIにてIDとパスで認証できた会員だけHTMLを
見せようとしたんです。
ところが、普通に文字は表示されるのですがgifやjpegが表示されない
のです。
普通に表示できないものなのでしょうか?

464 :461:01/11/28 13:36 ID:8tU8XC0g
>>462 さん
「CGIで画像を出力する」で検索してやり方を調べ、やってみました。
B.plは
#!perl-path
print "Content-type: image/gif\n\n";
print `cat $imagefile`;
でできました!!!
1x1の画像を作るのはペイントでできたんですね。知らなかったです。
ありがとうございました。

465 :名無しさん@お腹いっぱい。:01/11/28 13:47 ID:???
>>163
basic認証使えば?

.htaccess
---
AuthType Basic
AuthName "Password"
AuthUserFile /home/user/.passwd
require valid-user
---

.passwd
---
User1:Password1
User2:Password2

466 :465:01/11/28 13:48 ID:???
>>465>>163>>463 の間違い。

スマソ。

467 :名無しさん@お腹いっぱい。:01/11/28 15:22 ID:???
なんってーか・・・最近スレ違い多いね(汗

468 :463:01/11/28 16:04 ID:???
>>465氏、なるほど!
ありがとうございます

469 :名無しさん@お腹いっぱい。:01/11/28 17:08 ID:???
説明しているところが見あたらないしよくわからないので
このスレで質問します。
携帯専用のサイトをしているのですが、PCから
アクセスできないようにするのにはどうしたらよいのでしょうか?

470 :名無しさん@お腹いっぱい。:01/11/28 17:16 ID:???
>>469
せめてこの辺で聞きなさい。

CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/

471 :名無しさん@お腹いっぱい。:01/11/28 17:25 ID:???
>>469
>>1
| CGIの質問はこちら【CGIだけど、なんか質問ある?part4】
| http://ebi.2ch.net/test/read.cgi/php/1000804655/l50
を読みなさい。

472 :名無しさん@お腹いっぱい。:01/11/28 20:49 ID:eYEjqDt2
関数の呼び出し時間ケチりたい時ってどうします?
ちょっと凄いループの中とかで、マクロ使うような局面で
inlineに出来ないですよね

473 :名無しさん@お腹いっぱい。:01/11/29 03:19 ID:???
おい教えろようんこ野郎!!

474 :名無しさん@お腹いっぱい。:01/11/29 04:46 ID:???
>473
うんこ野郎には教えられないと思うんですが。
呼びかけるならうんこ野郎以外に向けて呼びかけないと。

475 :_gunzip:01/11/29 05:19 ID:???
>>472 気持ちは分かるけど、大した差は無いから気にしないが吉
どうしても気になるならC/C++で書くよろし

#!/usr/bin/perl -P

#define SWAP(a,b) (a,b) = (b,a)

use strict;
use Benchmark;

our $a = 0, $b = 1;

sub swap($$)
{
@_[0, 1] = @_[1, 0];
}

timethese(1000000, {
    "inline" => sub { ($a, $b) = ($b, $a) },
    "using macro" => sub { SWAP($a, $b) },
    "function call" => sub { swap($a, $b) }
});

476 :_gunzip:01/11/29 05:23 ID:???
$ ./test.pl
Benchmark: timing 1000000 iterations of function call, inline, using macro...
 function call: 11 wallclock secs (10.72 usr + 0.00 sys = 10.72 CPU) @ 93283.58/s
 inline: 3 wallclock secs ( 3.69 usr + 0.00 sys = 3.69 CPU) @ 271076.17/s
 using macro: 4 wallclock secs ( 3.72 usr + 0.00 sys = 3.72 CPU) @ 269179.00/s

477 :Perl上級者:01/11/29 07:15 ID:???
うんこうんこうんこうんこうんこうんこうんこうんこうんこ

478 :名無しさん@お腹いっぱい。:01/11/29 10:45 ID:???
久しぶりにベンチマーク見た(w

479 :クロスボウとやら:01/11/29 14:16 ID:WXSThiyo
>>458
>>459
ありがとうございます。勉強になりましたー。

480 :名無しさん@お腹いっぱい。:01/11/29 15:57 ID:???
opendir(DIR,"pic") or die "opendir miss";
@picfile = sort grep {/.jpg/} readdir(DIR);
closedir(DIR);

とした後でJPEG画像表示ってどうすればいいんでしょう?

foreach ( @picfile )
{
print $_,"<br>\n";
}

だとファイル名を表示しますよね?

481 :名無しさん@お腹いっぱい。:01/11/29 16:09 ID:/dTb+5XA
ActivePerlのppm installってローカルファイルにも使えますか?
複数台にインストールしなきゃいけなくって、
アーカイブをダウンロードしておいて、それを使ってインストール
したいのですが、猿のようにppm installしていたので
ダウンロードの仕方やファイルの指定方法がわかりません

482 :むぎ茶?:01/11/29 16:56 ID:Fa8sgCik
>>458
time_t が一周して同じ値になるとユニークじゃなくなるよ:D

483 :むぎ茶!:01/11/29 16:58 ID:Fa8sgCik
>>480
print qq|<img src="$_"><br>\n";
はどう?

484 :名無しさん@お腹いっぱい。:01/11/29 17:43 ID:???
>>483
なるほろ!ありがとです

485 :名無しさん@お腹いっぱい。:01/11/29 18:48 ID:???
クッキーの有効期限が書き込めないんですがどこが悪いか教えてください
普通にクッキーは食ってくれるんですがブラウザ閉じると死にます。

sub set_cookie{
$c_name = "kunni"; $c_mail = "kumanko";
$name = $FORM{'name'};
$n ='10*60*60*24';
($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg) = localtime(time+$n);
$ww = (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$wday];
$mong1 = (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$mong];
$expires = sprintf("%s,%02d-%s-%02d %02d:%02d:%02d GMT",$wwg,$mdayg,$mong1,$yearg,$hourg,$ming,$secg);

print "set-cookie:$c_name=$name;expires=$expires;\n";
}

486 :名無しさん@お腹いっぱい。:01/11/29 19:08 ID:???
ふざけた変数名だね
どうせKENTのパクるなら全部コピペすれば?
Sun, 01-Jan-2000 12:12:12 GMT

487 :名無しさん@お腹いっぱい。:01/11/29 19:19 ID:???
>>486
書き込めたから前の質問はいいわ。
じゃあパクッてないクッキーの記述の条件をおせーてくれ。
無論ソースで実例記述はいらんよ。
こことこことここが違えばパクって無いオリジナルであるって条件。
スカラ変えればいいってもんでもないだろうし、一つ頼むわ。

488 :名無しさん@お腹いっぱい。:01/11/29 19:26 ID:???
偉そうなヤツが居るな。

489 :名無しさん@お腹いっぱい。:01/11/29 19:30 ID:???
つーか>>485ってKENTの奴に似てるように見えるかね?
時間取得から寄せ集めprintなんてどこでもやってると思うが。。。
どーでもいいが$C_mail=kumanko;はといあえず書き込んでないから
意味無いね。

490 :名無しさん@お腹いっぱい。:01/11/29 19:33 ID:???
$c_mail = "kumanko";
これは何を意味してるんだ?一回しか出てこんけど。

491 :名無しさん@お腹いっぱい。:01/11/29 19:33 ID:???
$ydaygなんてダサイ名前付けるのは限られてると思われ・・・
どう言う意味?$ydayg  ぷ

492 :名無しさん@お腹いっぱい。:01/11/29 19:36 ID:???
変数を局所化してないから、他の変数とかぶらんように、
分かりにくい変数名にしないといかんのだろ。

493 :名無しさん@お腹いっぱい。:01/11/29 19:38 ID:???
クッキーはちゃんとデコードしとけ。

494 :486 :01/11/29 19:40 ID:???
あ、ゴメンネ 怒った(笑
まあパクって無いってんならそうなんでしょう
>>時間取得から寄せ集めprintなんてどこでもやってると思うが。。。
んな事しなくても、gmtimeに投げてsplitすりゃ良いんで
普通はそうします(w
KENTとは言わんがどっかで拾ったコード使って、変数の中吐き出して
確認も出来ないなら、そのまま使えばよろしいかと・・・

495 : :01/11/29 19:39 ID:???
滅茶苦茶叩かれとんな・・・

496 :名無しさん@お腹いっぱい。:01/11/29 19:42 ID:???
誘導して闇討ちで実力計るつもりでいたが、即座に
実力いっぱいいっぱいの典型例>>488みたいなのが
出てくる所を見ると3段階、4段階の質問受けれる程話せそうな奴は
噂の2ちゃんにもいなさそうだな。天秤計測終了。
興味無いから適当に煽って後は放置でいいよ。君に興味無いから(ワラ

>>489
あーそうだよ。すまんね。意味無いからそこ削除するか
printで名前書きの下にもmail用の一行加えといてくれ。
ソッコーで書いたからミスっちまったい。

497 :名無しさん@お腹いっぱい。 :01/11/29 19:47 ID:???
つーかこんな事一々配列で受けてゴチャゴチャやってる時点で
アホだと思うが
それを最初にばら撒いたのがKENT氏って事か?

498 :名無しさん@お腹いっぱい。:01/11/29 19:49 ID:AMvwJSR+
>んな事しなくても、gmtimeに投げてsplitすりゃ良いんで
>普通はそうします(w

ちょっと溜息。パクってるって言われるくらいそっちのが
メジャーだと思うからシャレきかせたつもりだが。。。
書き方あえて変えてんだから読み取ってネ。じゃ無駄な時間使って
煽ってくれ。バイバーイ低次元。

499 :486:01/11/29 19:50 ID:???
>>497 そそ
んで、コンテキストも解らん人達がこのやり方を普及してるんです(笑
その典型じゃ無いかな

500 :3行で済むな 藁:01/11/29 19:56 ID:???
$exptime = gmtime(time+10*60*60*24);
($wday,$month,$day,$time,$year) = split(/ /,$exptime);
print "$wday, $day-$month-$year $time GMT\n";
ほら、これで満足だろ? GPLだからソース公開しろよ 藁

501 :名無しさん@お腹いっぱい。 :01/11/29 19:58 ID:???
>誘導して闇討ちで実力計るつもりでいたが、、、
悲惨過ぎる・・・

502 :486 :01/11/29 20:21 ID:???
>>500 多分このまま使って逆切れに一票(笑

503 :名無しさん@お腹いっぱい。 :01/11/29 20:52 ID:???
素人が噛み付くとエライ目にあう事が実証されました(・∀・)
らくだ位読もうね みなさん

504 :名無しさん@お腹いっぱい。:01/11/29 22:30 ID:???
ファイルの行数をカウントするエレガントな方法を教えて下さい

ぼくは下記のようにやっているのですが,すっごく厨房ぽいです


#!/usr/local/bin/perl
open FILE, $file or die "can't open $file:$!\n";

$cnt = 0;
while(<FILE>) {
$cnt++;
}

close FILE;

print "$fileの行数は$cnt行です\n";

505 :名無しさん@お腹いっぱい。:01/11/29 22:48 ID:???
>>504
こんなん。
$cnt+= tr/\n// while read FILE, $_, 1024;

506 :名無しさん@お腹いっぱい。:01/11/29 23:04 ID:???
>>500
これ役にたったよ、何も+1900とかしてシコシコ計算する事無いんだね
俺もKENT病だったようだ(´Д`;)
月をハッシュに入れて日本語表示も随分すっきりしました
# つくづく>485は悲惨だと思った

507 :   :01/11/30 00:27 ID:JaJKMNFa
.アクセス制限は設定出来ますか?
http://home.big.or.jp/index.html?WWW_MENU=m021002h#003
の説明が良くわかりません。

.htpasswd

AuthUserFile /public/pub?/home?/(UserID)/html/secret/.htpasswd
AuthGroupFile /dev/null
AuthName member
AuthType Basic
<Limit POST GET PUT>
require user (UserName)
</Limit>

の設定をして、IDと、パスワードを要求される画面までいきますが・・
アクセス成功できません。Perlのバージョンによって記述が異なるようですが。
$ perl -v

This is perl, v5.7.0 built for i686-linux

です。
このサイトを利用しているかたのアドバイスをいただけないでしょうか?

508 : :01/11/30 00:38 ID:???
>>507
基本認証はperlとは関係ないよ。
.htpasswdは正確に記述してある?
AuthUserFileにはパスを正確に記述してある?

509 :   :01/11/30 01:08 ID:JaJKMNFa
>>508
AuthUserFile /public/pub?/home?/hoge/html/cgi-bin/.htpasswd
・・・

こういう感じ
「?」っているのかな。外すと駄目みたい。

Options -Indexes

とした場合、に同ディレクトリにあるファイルに直接アドレス入力すると、
見えてしまうのですが、これを見せない方法ってありますか?

510 :名無しさん@お腹いっぱい。:01/11/30 01:14 ID:???
htpasswd作ったのか? Telnet使えるみたいだから
その辺の説明サイトみながら作れ。
その/public/pub〜〜 って所はpwdって打って出てきたのを入れろ

511 :名無しさん@お腹いっぱい。:01/11/30 01:22 ID:???
あれ? 5.7って出てたんだ。。。

512 :なにがいけないんだろう?。:01/11/30 01:41 ID:2jA/moy4
>>510 ありがとうございます。 でも駄目みたいです。

ID:yokohama
Pass:monako

http://www15.big.or.jp/~s-w-/


AuthUserFile /public/pub/home/s-w-/html/cgi-bin/.htpasswd
AuthGroupFile /dev/null
AuthName member
AuthType Basic
<Limit POST GET PUT>
require user yokohama
</Limit>

513 :??:01/11/30 01:49 ID:???
pub? の?はどこ行ったの?ここに何か入るんじゃないの?
上に書いてるけどtelnetで入ってpwdしてOSの絶対パス書かなきゃダメだって
AuthUserFile はおまじないじゃ無いよ、ISPなんて出鱈目書いてたりするし・・

514 :472 :01/11/30 01:56 ID:???
あわわ! 何で成りすますんじゃー(゚Д゚)!
473は僕じゃないよ
_gunzip さん有難う御座いました。ベンチまで取って頂いて。。
Pオプション、知りませんでした 汗;
PERL勉強しないとダメだなぁ。。。
手元のGCCですんなり使えましたけど、何か変な感じです ^^;
取り合えずマクロにする事でちょっぴり安心な結果になりました
今perldoc精読中ですー 感謝!

515 :つかれた・・:01/11/30 01:58 ID:???
>>513
ども、pwdは以下なんですけどね。

big15:/public/pub/home/s-w-/html/cgi-bin$ pwd
/public/pub/home/s-w-/html/cgi-bin

516 :513:01/11/30 02:21 ID:???
何か情報小出しで良く分かんないよ(このスレに持ってくる事自体謎だし。)
パス合ってるなら後はファイル出来てる事とパミ確認する位かな
後、LIMITGETとか要らない、テストは最小構成で、これ基本
AuthName,AuthType,AuthUserFile,require valid-user
その辺がOKならサポ板とかで聞いてみれば、Perlは全く関係無いから言わなくてよし

517 :513:01/11/30 02:27 ID:???
ああ、これ本物のURIなんだね (^ ^;
401だからファイル見つからないか中身がおかしいっぽい(2.3のUAで確認したよ)
これで作れる?(未テスト)
#!/usr/local/bin/perl
print "Content-type: text/html\n\n<html><body>";
if($ENV{'QUERY_STRING'} eq ''){
$0=~s#.*/([^/]+)$#$1#g;
print "<h2>パスワードを入力して下さい。</h2>";
print "<form method=get action=$0><input type=text name=id size=10></form>";
} elsif($ENV{'QUERY_STRING'} =~ s/^id=//){
open(FH,">./.htpasswd")||print "ファイルを作成出来ません!";
my @salt = (a..z,A..Z);
$salt .= $salt[int(rand(52))] for(0..1);
$crypted = crypt($ENV{'QUERY_STRING'},$salt);
print FH "$ENV{'QUERY_STRING'}:$crypted\n";
close FH;
print "$ENV{'QUERY_STRING'}を暗号化しました! -> $crypted";
}

518 :名無しさん@お腹いっぱい。:01/11/30 03:12 ID:JcBWdq/s
BBSNoteで、絵の投稿者の環境を非表示にするにはどの設定をいじれば良いのでしょうか。

519 :名無しさん@お腹いっぱい。 :01/11/30 03:20 ID:???
おまえの脳みそ (^∀^)ハハハ

520 :名無しさん@お腹いっぱい。:01/11/30 08:31 ID:???
>(^∀^)ハハハ
煽りのはずなんだけど、なんか可愛い。

521 :名無しさん@お腹いっぱい。:01/11/30 08:47 ID:???
>>518
スレ違い。

522 :名無しさん@お腹いっぱい。:01/11/30 09:09 ID:???
>>499
なるほど、何で高々現在時刻得る為にこんなに小難しくて解りにくいやり方なんだろう(それも決まりきった様に)
と前から疑問に思っていた。しかも使ってるのはまんまasctimeの返り値だし・・・
クッキーなんて、何故かやたら冗長だし、エスケープもしてないし、
たまにやってると思ったらordとか変な関数使ってて、又ややこしいし
よっぽど強力に推奨してる本でも有るのかと。

523 :名無しさん@お腹いっぱい。:01/11/30 09:53 ID:???
クッキーって、セッションIDだけとかみたいに単純なの以外は全部CGIモジュールにやらせてるから、自分でコード書いたことない・・・
エスケープのやりかたなんてしらんけど、知っといたほうがいいのかな(藁

524 :名無しさん@お腹いっぱい。:01/11/30 10:20 ID:???
おかしな質問ですみません。
プロバのHPスペースでCGIが使えるので使っているのですが、これがPerl4だったりします。
Perl5との違いなどでここは気を付けた方がいいというところはありますか?
とりあえず、「$a ||= 1;」とかやるとエラーが出ました。
いろいろと出来ないことが多いみたいで・・・。

もし、Perl4とPerl5の違いを説明したHPなどがあれば紹介していただけるとたすかります。
・・・できれば日本語で。

よろしくお願いします。

525 :名無しさん@お腹いっぱい。:01/11/30 11:59 ID:???
取り合えずPerldeltaを良く嫁
気をつけるのは動かないのよりfor(0..1000)みたいな爆弾構文だ

526 :名無しさん@お腹いっぱい。:01/11/30 13:05 ID:???
とりあえず、最新版入れろと苦情メールを入れとけ。

527 :名無しさん@お腹いっぱい。:01/11/30 17:44 ID:???
とりあえず、ルート奪って最新版インストールした挙句、説教しとけ。

528 :524:01/11/30 18:37 ID:???
>525
検索してみましたけどちょっとよくわかりませんでした。
もう少し勉強してみます。

for(1..1000)はまずいんですか?
繰り返しが多過ぎるのが理由でしょうか?

>526-527
それはさすがに(w;
サーバー会社のでなくプロバイダについてきたスペースなので・・・。

529 :名無しさん@お腹いっぱい。:01/11/30 19:07 ID:???
>>528
for(1..1000)は1,2,3,4,...,999,1000っていうリストを
あらかじめメモリ上に確保してからループに入るから。
1000程度なら爆弾でもないけど。

プロバイダにバージョンアップの要請しちゃダメなんてことはない。
受け入れられるか知らないけど。
つーか、乗り換えるのが吉。

530 :名無しさん@お腹グー:01/11/30 19:10 ID:Edtr0BUz
>>481
猿より毛が3本多ければ勿論可能。ppm.batの中身を
解析しろ。難しくないぞ。
お前の能力で出来ないなら、3本毛が少ないんだな、
あきらめろ。 コキ過ぎで逝くなよ。

531 :524:01/11/30 19:14 ID:???
>529
地方ローカルのプロバで接続量は安いのでなかなか乗り換えられなくて。
予算ができたらレンタルサーバーを借りようと思っています。
これ以上はスレ違いなのでここまでで。

for(1..1000)はやはりループが多いのが問題なのですね。
さすがに1000ものループはないですが今後も気をつけるようにします。
ありがとうございました。

532 :名無しさん@お腹いっぱい。:01/11/30 19:20 ID:???
>>531
だからループの数じゃなくて「リストをあらかじめメモリ上に確保」
が問題なんだってば。
for($i=1; $i<=1000; $i++)なら何の問題もなし。

533 :524:01/11/30 19:23 ID:???
>532
すみません、ちょっとよくわからなくなってしまいました。
for(1 .. 1000)とやると1000の変数の分の領域をメモリ上に確保してしまう
というような意味でしょうか?
だとしたら、$#list = 1000;みたいなのも同様にまずいですよね?

534 :名無しさん@お腹いっぱい。:01/11/30 19:43 ID:???
> for(1 .. 1000)とやると1000の変数の分の領域をメモリ上に確保してしまう
> というような意味でしょうか?
御意。

> だとしたら、$#list = 1000;みたいなのも同様にまずいですよね?
領域の確保は発生するだろうね。
1000個の値が必要な配列があるのなら使うだろうし、
なければそんなことやる意味がないとおもうけど・・・

535 :524:01/11/30 20:20 ID:???
>534
なるほど。
親切な説明ありがとうございます。
今更ですが$#list=1000;みたいなバカなものを作っていた自分がいました。
早速修正しようと思います。
ありがとうございました。

536 :  :01/11/30 23:04 ID:???
>>517(513)
アクセス成功できました。
ありがとうございます。

537 :名無しさん@お腹いっぱい。:01/12/01 04:31 ID:kdHffvH4
お邪魔します。
http://pc.2ch.net/test/read.cgi/hp/1005035374/824-
上のスレで}の後の;を省略している人がいるのですが、
これって文法的に正しいのでしょうか。
テストしてみたら実際動いたのですが…。

538 :名無しさん@お腹いっぱい。:01/12/01 06:20 ID:???
>>537
問題ありません。Perlにおいては正しい書き方です。
ただ、俺だったらそのスレの824のようなケースでは省きませんね。
俺が省くのは、{ print $_ } のように、{ } が短い一行になる場合です。
これは単純に美的感覚(?)の問題ですけど。

539 :名無しさん@お腹いっぱい。:01/12/01 08:34 ID:???
その辺何でも有りなのがperlのいい所且つ困った所なの :-)
インデントとか基本的な所は当然としても
俺みたいに色んな言語をちょろ齧りしてる様な奴のperlのソースはとても汚い
記述に一貫性が無いのに、それでも通ってしまうんだよ。
逆に〜〜言語風の書き方を一貫出来る人のコードは読みやすい
だから俺は、例えばCっぽい記述を強制するStrict_cみたいなのが欲しいんだ(w

540 :名無しさん@お腹いっぱい。:01/12/01 21:36 ID:Bx/rf8oU
$m = rand(100);

1度のスクリプト動作で一回しか乱数を使用しない場合は
乱数の初期化ってしなくてもいいんでしょうか。

541 :名無しさん@お腹いっぱい。:01/12/01 23:59 ID:???
perl5ならそれで良い、4ならsrand要、詳しくはperldeltaで

542 :名無しさん@お腹いっぱい。:01/12/02 00:03 ID:???
perldeltaってなんですか?
専門書?

543 :名無しさん@お腹いっぱい。:01/12/02 00:53 ID:???
http://www.google.com/search?q=perl+perldelta&hl=ja&lr=lang_ja

544 :名無しさん@お腹いっぱい。:01/12/02 01:01 ID:???
解らん関数有ったら検索しろよ、お前朝鮮人やろ?

545 :名無しさん@お腹いっぱい。:01/12/02 08:29 ID:???
最後だけ余計だな。

546 :名無しさん@お腹いっぱい。:01/12/02 08:30 ID:???
>>544
氏ね

547 :名無しさん@お腹いっぱい。:01/12/02 08:46 ID:???
今、かちゅ〜しゃで朝の巡回したら
他の巡回スレも煽り荒らしばかりで嫌になった…。

朝くらい気持ちよく巡回させてくれよ…。

548 :名無しさん@お腹いっぱい。:01/12/02 17:47 ID:6F2mG0wF
ふたつの絶対パスA、Bを与えて、Aから見たBの相対パスを得る。
そんなモジュールを探しているのですが、標準モジュールで
ありますでしょうか?

549 :名無しさん@お腹いっぱい。 :01/12/02 18:25 ID:???
File::findなんかはどう?

550 :名無しさん@お腹いっぱい。:01/12/02 18:26 ID:???
$a = "/home/user/public_html/test/bbs.cgi";
$b = "/home/user/public_html/php/index.html";

print relative_path($a, $b);

sub relative_path {
my @file = @_;
my @dirA = split /\//, $file[0];
my @dirB = split /\//, $file[1];
while (1) {
last if ($dirA[0] ne $dirB[0]);
shift @dirA;
shift @dirB;
}
my $dir = "../" x $#dirA;
return $dir . (join "/", @dirB);
}

551 :名無しさん@お腹いっぱい。:01/12/02 22:48 ID:SEeFh0J9
すいません、perl初めてやってるんですけど、
web上でcgiにアクセスするとダウンロードのダイアログが出てきて
しまいます。これは何がいけないのでしょうか。

552 :名無しさん@お腹いっぱい。:01/12/02 22:53 ID:???
>551
サーバーによるけど、パーミッションが悪いか、スクリプトにエラーがあるか。
そのスクリプトが動くかどうかは、ローカルでチェックしているよね?

553 :名無しさん@お腹いっぱい。:01/12/02 23:21 ID:???
あるいは CGI として動作するように設定されていないか。

554 :名無しさん@お腹いっぱい。:01/12/02 23:38 ID:???
アマゾンでプログラミングPerlが品切れになっています。
アマゾン逝ってよしですか?

555 :名無しさん@お腹いっぱい。:01/12/03 00:00 ID:???
別にんなことで逝ってよしとは思わん。
一般から見れば、切らさんように随時チェックせないかん程の本じゃないし、
一二週間待っときゃ入荷されるだろ。

556 : :01/12/03 05:56 ID:???
12週間も待ってられん。
なんてあげ足とりの漏れは逝ってよしですか?

557 :名無しさん@お腹いっぱい。:01/12/03 09:14 ID:???
別にんなことで逝ってよしとは思わん。
ただ 84日ぐらい待っとけ・・・とはさすがに思わん。

558 :名無しさん@お腹いっぱい。:01/12/03 13:42 ID:???
phpでいう、count($a)
みたいな配列の要素の数を数える関数てありますでしょうか。

559 :縞栗鼠(シマリス)の親方:01/12/03 13:46 ID:v6vCrfM9
中央高等学院の従業員「西部」が女子トイレに闖入し
汚物入れを物色して女子生徒の使用済みタンポン・ナプキン等を
個人的に収集しているというのは事実。
中央高等学院 http://chs-f.com/index.html 中央高等学院福岡校
http://www.chuo-school.ac/

560 :名無しさん@お腹いっぱい。:01/12/03 13:58 ID:???
>>558

$count = $#hogehoge + 1; # @hogehoge の 要素数

561 :javaむぎ茶:01/12/03 14:19 ID:???
>>558
$count = @hogehoge;
$count = scalar(@hogehoge);

562 :名無しさん@お腹いっぱい。:01/12/03 16:01 ID:???
htmにフォームを作ってそこからcgiに飛ばしてフォームの結果を表示して
いるのですが、htmlのフォームにチェック項目が幾つかあって
全部にチェックが入っていないとcgiで変数が空かどうか調べて
$hogeがチェック入っていません。
というふうにしてcgiでメッセージを出しています。
それで当然htmlに戻るんですが、ブラウザで戻ると
前にチェックした項目が全部チェックがはずれてしまっています。
項目がたくさんあるのでこれを回避したいのですが。
仕様でinputにcheckedを入れていないのがいけないのですが。

563 :名無しさん@お腹いっぱい。:01/12/03 16:07 ID:???
>>562

こっちだべ。

CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/

564 :>>562:01/12/03 16:18 ID:???
ブラウザの「戻る」なら普通リセットされないでしょ??

HTMLの段階でJavaScriptかなんか使って
フォーム入力のチェックしたら?

# 厳密にCGIの質問じゃないね

565 :名無しさん@お腹いっぱい。:01/12/03 17:39 ID:???
わざわざ no-cache とかやって リセットされると嘆いてるに 1票

566 :初めてのスクリプト:01/12/03 18:15 ID:4NX8xqaD
#!/usr/bin/perl -w

$check_word = $ARGV[0];
$check_file = $ARGV[1];

open(IN, "$check_file");
while ($line = <IN>) {

if ($line =~ $check_word) {
if ($line =~ /(\d+\.*\d+)\s*Mbps/ )
{
$ct++ ;
$speed += $1;
}

elsif ($line =~ /(\d+\.*\d+)\s*[kK]bps/ )
{
$ct++ ;
$tyousei = $1 / 1000;
$speed += $tyousei;
}

}
}
$avr = $speed / $ct;

print "$ct 回 \n";
print "$avr Mbps\n";

567 :566:01/12/03 18:16 ID:4NX8xqaD
改行数が多すぎるといわれたので、2に分けました。

スピードテストのサイトのデータを perlで処理するスクリプトを作ってみました。何とか動いているので、感激しているのですが、brush upするために諸先輩のご意見をお聞かせください。

測定回数と平均スピードを表示するものです。
測定サイトは、 http://speed.on.arena.ne.jp/  http://www.broadland.jp/  の2カ所。データは、2種類です。
TARGET home.att.ne.jp
DATE Sun Dec 2 06:25:37 UTC+0900 2001
TIME 4.627 sec
YOU 5432 Kbps

測定サイト http://speed.on.arena.ne.jp/ v2.0.7
測定時刻 2001/12/02 10:54:22
回線種類/線路長 ADSL/-km
キャリア/プロバイダ ACCA 8Mbps/so-net
ホスト1 WebArena(NTTPC) 4.52Mbps(2244kB,4.0秒)
ホスト2 at-link(C&W IDC) 5.3Mbps(2244kB,3.5秒)
推定最大スループット 5.3Mbps(665kB/s)
コメント ACCA 8Mbpsとしてはかなり速いです!おめでとうございます。(1/5)

これで、このように表示されます。
26 回
3.61423076923077 Mbps

課題 小数点以下を第2位くらい、あるいは、任意の桁で表示する。
独学の初心者です。よろしくお願いします。

568 :名無しさん@お腹いっぱい。:01/12/03 19:17 ID:???
取り合えずここを見てみれ
http://www.din.or.jp/~ohzaki/perl.htm

569 :566:01/12/03 20:01 ID:???
>568
ありがとうございます。
とりあえず、sprintf を使うことにしました。

後は、時間帯別、日別の平均スピードに挑戦します。

570 :名無しさん@お腹いっぱい。:01/12/03 20:08 ID:???
良く読んでないが、それだけの目的なら
printf(".2f",$avr);
本持って無いなら
`printf` `format` `perl` 辺りで検索してくれ

571 :名無しさん@お腹いっぱい。:01/12/03 20:09 ID:???
あ遅かった (死

572 :バックスペースとのマッチ:01/12/03 20:37 ID:sBy63GlF
当方かなりPerl初心者です。よろしくお願いします。

コマンドライン入出力ファイルから、特定コマンドの出力を取り出そうとしています。
(幸いな事に、ファイルにマルチバイト文字は含まれていません。)
コマンド入力の際に、「ミスタッチ→バックスペースで修正」と打たれていた場合に対応しようとし、以下の様に考えました。

1.バックスペースは直前の文字と相殺する。
2.バックスペースがある限り、1.を繰り返す。

以上を実現するため、以下の様なコードを書きました。(デバッグ用のprintも併せて記します。)

while($line =~ m/.[\b]/) {$line =~ s/.[\b]//; print "さば$lineさば\n";}
print "いわし$lineいわし\n";

以下、疑問点です。
疑問点1:
バックスペースが入っている行をこの処理に入れても、さばprintが出ません。
正規表現は合っているでしょうか?(「らくだ本」を見ても、私の頭ではいまいち解りませんでした。)

疑問点2:
いわしprintですが、バックスペースは単なるホワイトスペースとして出力されている様です。
(print出力をファイルへリダイレクトしてみましたが、明らかにホワイトスペースでした。)
私はやろうとしている事が果たしてできるのでしょうか??

蛇足ですが、当方の作業環境のperlバージョンは

This is perl, version 5.005_03 built for sun4-solaris

Copyright 1987-1999, Larry Wall

でした。

573 :名無しさん@お腹いっぱい。 :01/12/03 22:46 ID:???
全く意味が分からんが、その「コマンドライン入出力ファイル」なる
物にはユーザのキーログがそのまま入ってるって訳?
だったらansiの表でも見ながらパーサ書くのが王道じゃ無いの?
→←とか押されたらどうするんでしょ

574 :572:01/12/03 23:14 ID:+1gWR50Y
>>573
舌足らずな説明、すいませんです。
「コマンドライン入出力ファイル」とは、

telnet somehost | tee /tmp/log.txt

と打った時の/tmp/log.txt内容をご想像下さい。
バックスペース入力がファイルに残るのは見ているのですが、
カーソルキー入力がファイルに残り、それが入った文字列が有効なコマンド名となるのは試していませんです・・・すいません・・・
例えば、
p ^[[A s -a
みたいな感じになるのでしょうか?(でもこの場合、有効な入力にはならない気が・・・)

575 :名無しさん@お腹いっぱい。:01/12/03 23:28 ID:wka85RYE
レンタルHTMLって何よ?
ソースがおかしいって言ったら突然CGIを語るなら
LINUX勉強しろって言われてPHP、SQLの勉強してはどうだろうか?
と罵倒され、レンタルHTMLって知らないのかと言われたんだが…

576 :名無しさん@お腹いっぱい。:01/12/03 23:45 ID:???
ここ人少ないのか(;´Д`)
他のところで聞いてくるYO!

577 :548:01/12/04 20:46 ID:???
>>550
なるなる、やはりこの方法がいいようですね。
あの後いろいろやってみて同じ方法にたどり着きました。

578 :名無しさん@お腹いっぱい。:01/12/05 01:13 ID:9ARk5xac
test

579 :名無しさん@お腹いっぱい。:01/12/05 17:18 ID:rTg+WPeh
Windows環境の人、Perlスクリプトはどこに保管してます?
c:\perlの中? c:\scrとかかな? c:\pl?

スタンダードってありますか?

580 :名無しさん@お腹いっぱい。:01/12/05 17:58 ID:my6OaWYN
起動用のバッチファイルといっしょにc:\home\bin に放り込んでいる

581 :名無しさん@お腹いっぱい。:01/12/05 19:34 ID:???
大体書き捨て以外は用途別に別けて溜め込んでるD:\comp_lang\perl\〜〜って感じ
#何でスクリーンセーバだろ? とかちょっと悩んだ w

582 :名無しさん@お腹いっぱい。:01/12/05 19:34 ID:Lvfs0GBW
すごーく基本的なことをきいているとおもうのですが、
foreach文で、

foreach(@line){
($_使って処理)
}

というようなことをしたいのですが、たとえば、配列@lineのが30個の要素
を持っていたとして、11番目から20番目まで処理したいとかいうとき
foreach文でそんなことは可能なのでしょうか?それとももっといい方法
があるのでしょうか?
私の少ない知識では、

for (my $i = 10; $i < 20; $i++){
($line[$i]を使って処理)
}

という幼稚な方法しか思いつかないのですが...。
ご教授お願いいたします。

583 :_gunzip:01/12/05 19:44 ID:???
foreach (10 .. 19) {
    print $line[$_], "\n";
}
などなど。

584 :名無しさん@お腹いっぱい。:01/12/05 20:12 ID:???
>582
foreach(@line[10 .. 19]){
処理
}

585 :名無しさん@お腹いっぱい。:01/12/05 23:42 ID:???
>>579
うちは c:\home\pl

586 :572:01/12/06 02:54 ID:1atXp7qL
すいませんでした。
私の質問に回答をいただけないのは、きっと私の質問そのものに欠陥があったためなのでしょう。
という訳で、消えますが、その前に基本的な質問を発したくございます。

今回の様な極めて初歩的な質問(バックスペースにマッチするサンプルでOKです。)は、どのスレッドで質問すればいいのでしょう?
今回の様な、WebProgramingとは関係ない質問は、どの板で質問すればいいのでしょう?
やっぱり私は、シェル操作そのものに関して無知と思われます(カーソル移動で入力コマンド文字列を変更する技に関して、あまりよく知りません。)が、根本的に知識不足ですね。
書けば書く程鬱・・・Perlはおろか、コマンドラインでキーを打つのすら禁じられた気分であります・・・だって私は、愚者ですから・・・
失礼しました・・・

587 :デフォルトの名無しさん :01/12/06 03:12 ID:???
別に無視してた訳じゃ無いと思うけど、あんまり興味有る人が居ないんじゃない?
上にも書いてるけど、キーログの類なら正直Packetstormとかに行って
KEYLOGってすればワラワラ出てくる筈だから、その辺でも見てみれば
マッチングだけなら m/\b/ でいいんだけど、個人的には文字列の解釈(コマンドの引き数とかね)は
正規表現でゴチャゴチャするより、
while(substr(***))って感じで1byteづつ切り分ける方が結構簡単だったりする
漠然としてるけどこんなところ。あんまり質問を見てないけど (^^;

588 :名無しさん@お腹いっぱい。:01/12/06 06:24 ID:???
「すぐわかるPerl」のサンプル掲示板を作ってみようと
そのままのperl文を写して掲示板を作成したのですが
まったく機能しません。。(コメントが書き込まれない)
たぶん記述は何回も確認したので間違えてないと思うのですが
よろしければアドバイス願います。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
#!/usr/bin/perl
print "Content-type:text/html\n\n";
read(STDIN, $str, $ENV{"CONTENT_LENGTH"});
@parts=split('&',$str);
foreach(@parts){
($variable,$value)=split("=");
$value=~ tr/+/ /;
$value=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
$value=~ s/\r\n/\n/g;
$value=~ s/\r/\n/g;
$cgi{$variable}=$value;
}

$formfile="../chatform.html";
$name = $cgi{"name"};
$memo = $cgi{"memo"};

589 :長いので改行は省きました:01/12/06 06:25 ID:???
print <<EOF;
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=http://************/chatform.html">
<body bgcolor=silver text=navy>
wait for a second...<P>
EOF
open(FILE, "$formfile");
@oldform = <FILE>;
close(FILE);
$li = undef;
foreach(@oldform){
if(/^<LI>/){
@body=(@body, $_);
$li = 1;
}elsif($li){
@foot = (@foot, $_);
}else{
@head = (@head, $_);
}
}
open(FILE, ">$formfile");
select FILE;
print @head;
print @body;
print <<EOF;
<LI>$name: $memo
EOF
print @foot;
close(FILE);

590 :名無しさん@お腹いっぱい。:01/12/06 06:55 ID:???
ネタかと思ったらマジで有りやがんの →すぐわかるPerl
記述に間違いが無くてこれなら、こんな本捨てちまえ (いやマジで
つーか全然すぐ分かって無いし
愚痴だけじゃアレだから、openした時は返り値を見れ
open(FH,"hoge")||&Error("Can't open $!");
とか
if(!open(FH,"hoge")){&Error("Can't open $!");}
として
sub Error{print "Content-type: text/html\n\n$_[0]"}
後はひたすらprint分並べて変数の中確認しろ
なるべく小さく、ファイル操作するなら、まずファイルに一文字書き込み
から。

591 :名無しさん@お腹いっぱい。:01/12/06 07:01 ID:???
つーか初心者本歌ってるのにバグ鳥の仕方書いてないのかよ (´д`;)

592 :名無しさん@お腹いっぱい。:01/12/06 07:24 ID:???
まあねえ、、これがどの辺に書いてるかによるかも(笑 >>589
とりあえず何となく合ってる風味だからHTML間違えてるとかファイル開いてないとかじゃないの
上からどんどんprintして見ていけば?

593 :説明:01/12/06 07:39 ID:???
もし「〜〜日で出来る」とかの初歩本買うなら、簡単なデバッグの仕方位
書いてるものを選ぼう。
いきなりCGI書かせてCarpやKcatchの説明も無しと言うのは作者が精神分裂症か
サディストかのどちらかです :3=) Byバカボンのパパ

594 :名無しさん@お腹いっぱい。:01/12/06 07:39 ID:???
>>588
殆どそのまんま588をコピペしたけど書き込まれたよ。
chatform.htmlが存在しないか、投稿フォームがオカシイんじゃ?

595 :名無しさん@お腹いっぱい。:01/12/06 07:59 ID:???
すぐわかるの掲示板は、設計自体がへん。

596 :名無しさん@お腹いっぱい。:01/12/06 08:24 ID:???
>>572,586
これ(↓)試したらどうなります?

$_ = "a\bb\bc\n";
print;
s/[\b]//g;
print;

597 :582:01/12/06 09:02 ID:YsGQWh0f
>>583 >>584

どうもありがとうございました。
なるほど、こんな風に記述できるのですね。
早速やってみます。

598 :名無しさん@お腹いっぱい。:01/12/06 09:09 ID:???
僕も半年ほど前に『すぐわかるPerl』買ったんだけど、それを終えたあとすぐにオライリーの
『初めてのPerl』やったら、『すぐわかるPerl』を買ったことをすぐに後悔した。

599 :名無しさん@お腹いっぱい。:01/12/06 10:04 ID:???
>>590-598
参項書籍スレッドの方では結構評判いいのにね。

よかったら、その辺のこと、
http://pc.2ch.net/test/read.cgi/php/988809842/
に書いといてくれない?
サマリーに入るかもしれないし。

600 :名無しさん@お腹いっぱい。:01/12/06 11:26 ID:???
「すぐわかるPerl」やるよりも、「初めてのPerl」やるほうが
100倍良いのは明らかだとは思う。
ただ、ホントにプログラムくむのが初めての人だったら、
一冊目が「初めてのPerl」というのはキツいかもしれない。

そういう場合のみ意味があると思う>すぐわかるPerl

# 大体、「すぐ分かるPerl」の著者は、本の中で「初めてのPerl」
を推薦してるし。

601 :名無しさん@お腹いっぱい。:01/12/06 14:32 ID:ixzePiV3
2chネラ用のアプロダ作成中ですが(あやしいのパクリだけど)
ファイルを保存するルーチソってこれで問題ないですかね?

open(FILE, ">$file_dir\/$_[0]\.$$");
binmode(FILE);

binmode(STDIN);
while(<STDIN>) {
if ( $_ =~ /^$endline/ && $endline =~ /^--/ ){
last;
} elsif ( /^--/ ) {
$endline = $_;
} elsif ( /^Content\-Type\:\s*(.*)/i ) {
$file_type = $1;
} elsif ( /^\r\n/ ) {
next;
} elsif ( /^Content-Disposition: form-data/i ) {
next;
} else {
s/\r\n//g;
print DB $_;
}
}
close(FILE);

602 :601:01/12/06 15:39 ID:???
ダメだ、メッセージが上手く受け取れネーや。。。

cgilib使ったほうがいいのかな

603 :ウンコー:01/12/06 15:43 ID:8ybpM+Zd
これでもよんでがんばれ。
http://www.puchiwara.com/hacking/

それでもむりなら
裏ニュース。

604 :572:01/12/06 19:27 ID:wL0DoiFw
>>587様,596様、ありがとうございます。回線切って首吊って氏ななくて良かった・・・
懲りずに書き込みます。

>>596様のスクリプトですが、私の環境で実行したところ、
c
abc
と出ました。期待値通りの出力です。
以上から考えますと、バックスペース入力は、ファイル内では
\b以外の文字コードとして存在している、という事になります。
viでファイルを開くと「^H」(カーソル移動はこれで一文字分の移動をし、^とHから成る訳ではありません。)と見えるこの文字が何であるのか、
もう少し調べてみます。
それでは。

605 :588&589:01/12/06 20:07 ID:???
みなさん、どうもです。ヤパーリ本がおかしいんですかね..。
当方、初心者なもんで「これでやっと掲示板作成か!」って段階に
来ていたのにできないもんですから、鬱になってました。。

>>594
投稿フォームも全部記述通りに書いたのですが
やっぱり無理でした。。

とりあえず590さんのを見てもう一度考えてみます

606 :名無しさん@お腹いっぱい。:01/12/06 23:27 ID:dTMUXoew
@ if(100 <= $total < 200)

A if((100 <= $total) and ($total < 200))

こういう条件式は@のようにいっぺんに聞いてはいけないのでしょうか。
SQL文は@のやり方でいけたんですけれど。

607 :名無しさん@お腹いっぱい。:01/12/06 23:42 ID:???
htmlからcgiへフォーム送信しています。
htmlでmethodはpostです。
それで渡す値を色々試したいのでurlに?hoge=引数の形で
試すのですがうまく渡りません。
単にurlに引数を渡す場合でもhtmlのmethodをgetに変えなきゃいけないんでしょうか。

608 :名無しさん@お腹いっぱい。:01/12/06 23:50 ID:???
やってみればスグに分かる。

609 :名無しさん@お腹いっぱい。:01/12/07 01:34 ID:???
cgi-libとかってクエリでキーが複数あった場合
"\0"をセパレートとしてるけど、これって値事態に
"\0"があったら意味ないよね?
それとも\0ってなにか特殊なの?

610 :609:01/12/07 01:37 ID:???
s/値事態/値自体/;

611 :名無しさん@お腹いっぱい。:01/12/07 01:42 ID:We0Nr7br
初心者ということで教えてください。
perlで処理をすべて1ファイルで記述して
100KBくらいになったCGIは
やっぱり重いですか。
分割したほうがいいですか?

612 :名無しさん@お腹いっぱい。:01/12/07 02:09 ID:???
>>611

分割したって同じじゃない?

613 :名無しさん@お腹いっぱい。:01/12/07 02:13 ID:???
>>611
>初心者ということで教えてください。
これを書いてしまったことにより無視されるに50円。

614 :名無しさん@お腹いっぱい。:01/12/07 02:13 ID:???
>609
&で切っても&が有ったら意味ない、=で切っても=が有ったら意味ない
普通は&や=より\0使ったリクエストのが少ないだろ
>610
100KBくらいのCGIを書ける頃には分かるから気にすんなw

615 :名無しさん@お腹いっぱい。:01/12/07 02:24 ID:???
>>606
>@if(100 <= $total < 200)
>SQL文は@のやり方でいけたんですけれど。
いけないって。DBは何?
SQLなら WHERE $total <= 100 AND $total < 200 って書かないとエラーになるYO!

616 :名無しさん@お腹いっぱい。:01/12/07 02:26 ID:???
>>615
WHERE $total >= 100 AND $total < 200

617 :名無しさん@お腹いっぱい。:01/12/07 08:27 ID:???
>>604
c
abc
となるなら、端末の設定も問題ないと思います。
また、vi上で^Hと表示され、^とHから成る(カーソルが2カラム分動く)のなら、
その文字はBackSpace(Ascii Code: 0x8)です。

>>596のみのスクリプトを端末ではなくリダイレクトでファイル出力し、その
結果をviで見たら、
a^Hb^Hc
abc
となりますか? od -cxの出力結果でも確認できます。
もし、^Hや\bが正しく出力されているのであれば、問題はスクリプトの別の部
分にあると疑ったほうがよいでしょう。

ちなみに WinNT + ActivePerl v5.6.1で、>>572のコードの先頭に
$line = "a\bb\bc";
を追加した結果をファイルに落として覗くと、
以下の通り期待した結果となります:

さばb^Hcさば
さばcさば
いわしcいわし

618 :名無しさん@お腹いっぱい。:01/12/07 10:57 ID:yYR0Ii3K
windows2000で使えるパールソフトはないのでしょうか?

619 :名無しさん@お腹いっぱい。:01/12/07 12:08 ID:???
>>3の上から3番目

620 :名無しさん@お腹いっぱい。:01/12/07 12:17 ID:???
パールソフト

621 :名無しさん@お腹いっぱい。:01/12/07 12:19 ID:???
パールライス

622 :619:01/12/07 14:43 ID:???
ああ、突っ込みたくてうずうずしていたのに・・・

623 :611:01/12/07 15:44 ID:???
>>612
例えば
Perlで書いた掲示板プログラムをみると
管理用.cgiとbbs.cgiというように
分けてあるものと、
管理用も、bbs用も1ファイルで全て記述してある
ものを見かけるので、
実行速度とか関係あるのか、どちらが良いのでしょう?
.cgiは毎回毎回ロードされるのですか?

>>613
>初心者ということで教えてください。
私のような初心者が質問していいスレッドだと
思ったのですよ。無視しないで教えてくれ〜。

624 :名無しさん@お腹いっぱい。:01/12/07 15:56 ID:???
もし指定したディレクトリが存在しなければ、そのディレクトリをつくれ!
って言う書式を教えてください

625 :名無しさん@お腹いっぱい。:01/12/07 16:05 ID:???
>>624
if (ディレクトリが存在しない) {
ディレクトリをつくれ!
}

626 :名無しさん@お腹いっぱい。:01/12/07 16:09 ID:???
なるへそさんくす

[[解決]]

627 :名無しさん@お腹いっぱい。:01/12/07 18:24 ID:???
質問です。

$tensu{'田中'} = 100;
$tensu{'鈴木'} = 90;
$tensu{'佐藤'} = 100;

といったデータをsortした場合、田中と佐藤のどっちが先に来るかというのは
法則があるのでしょうか?
いつも同じ結果になるので法則があるのだとは思うのですが、その法則とは
どのような法則になっているのでしょうか?
もしご存知の方がいたら教えていただけると助かります。
よろしくお願いします。

628 :名無しさん@お腹いっぱい。:01/12/07 18:33 ID:???
最初に定義した順だ

629 :名無しさん@お腹いっぱい。:01/12/07 18:43 ID:???
本当ですか?

630 :名無しさん@お腹いっぱい。:01/12/07 18:44 ID:???
>628
定義した順という事は上の例で言えば田中、鈴木、佐藤の順という事ですか?

print "Content-type: text/plain\n\n";
$tensu{'田中'} = 100;
$tensu{'鈴木'} = 100;
$tensu{'佐藤'} = 100;
$tensu{'山本'} = 100;
$tensu{'木村'} = 100;
foreach(sort{$tensu{$a} <=> $tensu{$b}} keys %tensu){
print $_."\n";
}

↑この例で試した場合、
↓のような順で表示されたのですが・・・。
木村
鈴木
山本
佐藤
田中

631 :名無しさん@お腹いっぱい。:01/12/07 19:17 ID:???
文字列のソートはcmpだよ、<=>だと比較対象がisnumberじゃない時に
スルーされる(筈)だからソートは行われない
print "$_\n" for sort{$a cmp $b}qw(cat rabit dog monkey mona);
日本語をソートしたいならJperlを使おう

632 :名無しさん@お腹いっぱい。:01/12/07 19:34 ID:???
>631
いえ、数字ソートした場合の同値の並び順の法則を聞きたいのですが・・・。

633 :名無しさん@お腹いっぱい。 ::01/12/07 19:55 ID:???
だから行われないっつってんのに :-(
print "$_\n" for sort{$a <=> $b}qw(鈴木 山本 田中 木村);
鈴木
山本
田中
木村

で、何でおかしな並べ替えが行われてるかと言うとkeysを通すからですが
この時keysが返す値の並びは***不定***なので
何から出てくるかは完全に***予測出来ません***

634 :名無しさん@お腹いっぱい。:01/12/07 19:59 ID:???
何故かと言うとハッシュテーブルから一致した物をどんどん引き抜いてるだけなので。
これが気に入らないならハッシュ法を調べて、値を返す前にソートする様に
keysを改造して下さい :-)

635 :名無しさん@お腹いっぱい。:01/12/07 20:17 ID:???
>633-634
つまりハッシュテーブル内での記録状態に依存されるという事ですね。
こちら側からはその記録状態を把握できないから法則性を見出す事は出来ないと。
その返答で十分です。
ありがとうございました。

636 :JAPU@はにゃ〜ん ◆JAPUTeX. :01/12/07 20:59 ID:???
use Tie::IxHash;
tie %moemoe, "Tie::IxHash";

すれば keys %moemoe で "定義した" 順番に返ってくるにょ。
http://search.cpan.org/search?dist=Tie-IxHash

637 :名無しさん@お腹いっぱい。:01/12/07 21:00 ID:???
>>611,623
たいして変わらん。
まず読みやすく書け。
管理がしやすくなるなら分割しろ。
初心者だから〜という考えは捨てろ。

638 :名無しさん@お腹いっぱい。:01/12/07 21:07 ID:???
初心者が自分を初心者と思わないほうが怖いぞ(w

639 :名無しさん@お腹いっぱい。:01/12/07 23:53 ID:???
>>638 そういう意味じゃないだろ

640 :名無しさん@お腹いっぱい。:01/12/07 23:59 ID:XnpIIJ1Q
ActivePerl 、win2000で使えません

641 :名無しさん@お腹いっぱい。:01/12/08 00:09 ID:???
使えていますが何か?

642 :名無しさん@お腹いっぱい。:01/12/08 00:10 ID:???
http://www.activestate.com/Products/Download/Get.plex?id=ActivePerl
使えるの?

643 :名無しさん@お腹いっぱい。:01/12/08 00:16 ID:???
>>642
ちゃんと英語読め

644 :名無しさん@お腹いっぱい。:01/12/08 00:18 ID:???
>642
それはシステムの要求項目だ、特に無しって事だから気にすんな
nextに進んでmsiかzipを落せ

645 :名無しさん@お腹いっぱい。:01/12/08 00:23 ID:9GPXgj8m
馬鹿な質問すいませんでした。親切なレスありがとうございます。

646 :名無しさん@お腹いっぱい。:01/12/08 05:13 ID:LmrHjtAG
#!/usr/local/bin/perl
sub func (\%);
{
my %hash = ( key => 'VALUE' );
func(%hash);# <--(先頭に & 記号無しの呼び出し)
}
sub func (\%) {
my $ref = shift;
print $ref->{key}, "\n";# VALUE
}

誰か、サブルーチンを呼ぶ時に &func(%hash); と
した途端、期待通り動かなくなる理由をオシエレ。

一週間悩んだ挙句、このスレの 100-200 あたりを読んで
解決はしたけど、やっぱ理解しないと気持ち悪いのヨ。

647 :名無しさん@お腹いっぱい。:01/12/08 05:40 ID:D6XloJOW
プロトタイプは & を使わない呼び出しのみに作用するように
出来てるから、つまり仕様。ってことじゃダメ?

648 :646:01/12/08 05:53 ID:LmrHjtAG
>>647
あ、非常によくわかりましたです。
今までは、将来の組み込み関数やファイルハンドルと
重ならないように、全てのサブルーチンにつけてましたが
先頭で宣言しとけば、もし重なった時にはエラーが(多分)
出ますものね。ありがとうございました。

ちなみに文体は変わりましたが本物の 646 です。わらい。

649 :名無しさん@お腹いっぱい。:01/12/08 06:24 ID:???
>636
専用のモジュールもあるんですね。
ありがとうございます。

650 :名無しさん@お腹いっぱい。:01/12/08 09:44 ID:txIFSrN6
あの、質問です。
本当に初心者なんです。
FFFTPでCGIを転送するときのしくみ
でいい参考資料ありませんか?(汗)
ログありすぎて探したのですが
わかりません。。

651 :名無しさん@お腹いっぱい。:01/12/08 09:52 ID:???
>>650
質問の意味が全然わかりません。
とりあえずもうちょっと勉強した方がいいような気はする。
http://tohoho.wakusei.ne.jp/www.htm

652 :名無しさん@お腹いっぱい。:01/12/08 09:57 ID:???
>>650
RFC959

653 :650:01/12/08 10:40 ID:c8d0pxqG
ああ、スイマセンでした。。
日本語も勉強した方がいいみたいです、私。
CGIのアップロードの仕方がわかんないんですが。

654 :名無しさん@お腹いっぱい。:01/12/08 11:02 ID:???
>653
http://www.google.com/search?num=100&hl=ja&q=FFFTP+CGI+%83A%83b%83v%83%8D%81%5B%83h&lr=
お好きなページをどうぞ。

655 :572:01/12/08 14:46 ID:4/I3dmD1
>>617
ありがとうございます。
全て解決しました。
結論は・・・私がバグっていたからです。
while($line =~ m/.[\b]) {$line =~ s/.[\b]//;}
を行う位置を誤っていて、
自分でバックスペースをスペースへ変換してから
件の処理を行う様になっておりました。

という訳で、今後も精進致します。

656 :名無しさん@お腹いっぱい。:01/12/08 21:49 ID:???
%HASHの中身を直接いじる方法無いかな
foreach(%HASH{keys %HASH}){ $_をいじる }
だと何も変わらないので
foreach(keys %HASH){$HASH{$_}= … }
ってコピーしてやってるんだけど,普通の配列を
foreach(@ARRAY){ … }
とやるみたいに直接中身を書き換える方法は無いの?

657 :名無しさん@お腹いっぱい。:01/12/08 22:02 ID:???
>656
keyわからなくなるけどforeach (values %hash)とか

658 :名無しさん@お腹いっぱい。:01/12/08 22:22 ID:???
each 使えってば

659 :ほらよ:01/12/08 23:13 ID:???
//www.ultraman.gr.jp/~momiyama/Learning_Perl/reference.htm

eachやvaluesはダメよ

660 :名無しさん@お腹いっぱい。:01/12/08 23:23 ID:???
和気和歌蘭(^∀^)

661 :名無しさん@お腹いっぱい。:01/12/08 23:29 ID:???
>656
>>foreach(%HASH{keys %HASH}){ $_をいじる }
何をやりたいのか分からないです :-)
>>foreach(keys %HASH){$HASH{$_}= … }
コピーしてるとは? 一時配列を作りたくないって事?

だったら for(($key,$value)=each %HASH){if($key eq 'hoge')$HASH{$key}='...';}
なら一組のリストしか出来ないけど
>659
なんでリファレンス?

662 :これの事かい?:01/12/08 23:37 ID:???
>Note that you cannot modify the values of a hash this way, because
>the returned list is just a copy. You need to use a hash slice for
>that, since it's lvaluable in a way that values() is not.
>
> for (values %hash) { s/foo/bar/g } # FAILS!
> for (@hash{keys %hash}) { s/foo/bar/g } # ok

663 :名無しさん@お腹いっぱい。:01/12/09 02:52 ID:CTSZ1Ad/
すいません、>659のURLの「■ 多重ハッシュ(ハッシュのハッシュ)」のところを
見たんですが、

name1, email1, title1, comment1, …
name2, email2, title2, comment2,
name3, email3, title3, comment3,


という感じで、一度に複数投稿できるようなスクリプトを作りたいんです。
(掲示板じゃないんですが、例として)
それで、同ページの「多重ハッシュを動的に作成。」ってあたりをどう
書いたらいいんでしょうか。

%hatugen = (
res1 => { name => "name1の値",
email=> "email1の値",
title => "title1の値",
comment => "comment1の値",
},
res2 => { name => "name2の値",
email=> "email2の値",
title => "title2の値",
comment => "comment2の値",
);

と全部書いてやるるしか自分には出来なくて…。

664 :こんな感じかにゃお:01/12/09 04:09 ID:???
$i=1;
for (<DATA>){
for(split(/,/,$_)){
($key,$value)=split(/:/,$_);
${hash{$i}}{$key}=$value;
}
$i++;
}
for $num (keys %hash){
print "\%{\$hash{$num}} are ... \n";
while (($key,$value) = each %{$hash{$num}}){
print "$key ----> ${$hash{$num}}{$key} \n";
}
}
__DATA__
name:name1,mail:email1
name:name2,mail:email2
name:name3,mail:email3

未テスト

665 :名無しさん@お腹いっぱい。:01/12/09 04:09 ID:pYGvWQvh
上のカンマ区切りのやつはフォームから入力するんかい?それともファイル?
それによって違うんだけど・・・
あとね、この場合普通はハッシュのハッシュは使わない。
配列の配列の方が無難。つまり、
@hatsugen = (
[ "name1", "email1", "title1", "comment1" ],
[ "name2", "email2", "title2", "comment2" ],
. . .
)
って感じ。理由はメモリの節約。
で、
use constant NAME => 0;
use constant EMAIL => 1;
use constant TITLE => 2;
use constant COMMENT => 3;
ってやっておけば、
$hatsugen[0][EMAIL]で最初の発言のメールを取得できるでしょ。
enum モジュール使えばなお可。
http://search.cpan.org/search?dist=enum

#enum標準にしてくれないかな・・・

666 :こんな感じかにゃお:01/12/09 04:10 ID:???
あ、ちょっと違うか、まぁ適当に直してくり

667 :名無しさん@お腹いっぱい。:01/12/09 04:52 ID:???
>663です。回答ありがとうございます。

>665
>上のカンマ区切りのやつはフォームから入力するんかい?それともファイル?
フォームです。

>664 >665さんの回答を自分で試してみてから、
またレスします。 (適当に直せる自信ないけど…)

668 :こんな感じかにゃお:01/12/09 05:12 ID:???
えっと、一応補足すると>665氏の言う通り多重ハッシュは効率悪いよ
つか俺も知らなかったけどListofListで列挙型使えるのイイ(・∀・)ね
あとシンボリックリンク恐怖症じゃなければ、単純に枝番ふった連装配列
ってのも有りかな・・・

669 :名無しさん@Emacs:01/12/09 11:56 ID:???
Perl で、
ある画像(GIF,JPEG,PNG 等)の
幅と高さを取得できるようなスクリプツはできますか ?

670 :名無しさん@お腹いっぱい。:01/12/09 12:31 ID:???
>>669
Image::Size
まだ、使ったことないけど、たしかこれで。

671 :名無しさん@Emacs:01/12/09 13:08 ID:???
>>669
サンクスコ!!

672 :名無しさん@お腹いっぱい。:01/12/09 18:43 ID:???
おまえに教えて損した

673 :名無しさん@お腹いっぱい。:01/12/09 19:43 ID:???
名無しさん@Emacsって何処かの板の名無しさんですか?(スレッド違いすまん)

674 :670:01/12/09 19:55 ID:???
670 != 672

675 :名無しさん@お腹いっぱい。:01/12/10 15:59 ID:???
根拠はあるのか?

676 :名無しさん@お腹いっぱい。:01/12/10 22:00 ID:???
「もし条件Aならば処理Aをしなさい、あるいはもし条件Bならば処理Bをしなさい」を
if(条件A){処理A;}
elsif(条件B){処理B;}
と書く場合、

「もし条件Aでなければ処理Aをしなさい、あるいはもし条件Bでなければ処理Bをしなさい」は
unless(条件A){処理A;}
elsif(条件B){処理B;}
でよいのでしょうか?

現在、elsifを使うべきかわからない状態です

677 :名無しさん@お腹いっぱい。:01/12/10 22:05 ID:???
>unless(条件A){処理A;}
>elsif(条件B){処理B;}
これ出来たっけ?(未確認)
否定文並べるか肯定文ならべるかはケース倍ケースdeath
if(条件A){処理A;}
elsif(条件B){処理B;}

if(条件A){処理A;}
if(!条件A 且つ 条件B){処理B;}
の略、省略したいから使うだけで悩む事じゃないでふ〜〜

678 :名無しさん@お腹いっぱい。:01/12/10 22:20 ID:???
>676
試してみたら一発じゃん・・・。
俺は出来た。

679 :名無しさん@お腹いっぱい。:01/12/11 01:30 ID:???
俺はif(!〜の方が可読性いいと思うな

680 :名無しさん@お腹いっぱい。:01/12/11 01:58 ID:???
>>現在、elsifを使うべきかわからない状態です
elseの意味を調べてくれ

681 :名無しさん@お腹いっぱい:01/12/11 14:09 ID:???
社内で使うアンケート集計フォームを作りました。
記入された内容をCSVファイルに追加書き込みしているのですが、
複数行入力を許しているテキストフィールドの内容を書き込む際、
改行コードが邪魔になってしまいます。

書き込む際に改行コードを強制削除したいのですが、
うまく消えてくれません。
$other=~ s/\n/<br>/g;
と他の文字列に置換してみたところ、
改行タグの後ろに結局改行コードが残ってしまいました。
($otherには入力内容が入ってます。)

サーバはNTで、perlのバージョンは5です。
何か良い方法はないでしょうか?

682 :生厨房:01/12/11 14:44 ID:???
>>681
$other =~ s/\r?\n/<br>/g;

その処理の前に & < > も変換しとかないとね

683 :名無しさん@お腹いっぱい:01/12/11 15:08 ID:???
>>682

ありがとう。
きれいなデータになりました。
ちなみに
\r?
にはどういう意味があるのですか?

684 :生厨房:01/12/11 15:17 ID:???
>>683
Windows,Unix,Macの改行コードの違いを調べるといいよ
あとエスケープシーケンスも

685 :名無しさん@お腹いっぱい:01/12/11 15:27 ID:???
>>684

了解しました。
世の中のPerlの本はUNIX前提になっているものが多いんですね。
次はLINUX+PHP+Postgresqlを勉強する予定なので、
またまた文字コードに悩まされそう。

686 :名無しさん@お腹いっぱい。:01/12/11 15:45 ID:???
CGIってNULLってあるの?
それと文字数を数えるのってどうやるの?
aだと1、aaaだと3を返すやりかた。

687 :名無しさん@お腹いっぱい。:01/12/11 16:01 ID:???
>686
http://pc.2ch.net/test/read.cgi/php/1000804655/854-855
奇遇だな。
ちょうど同じような質問を見かけたところだ。

688 :名無しさん@お腹いっぱい。:01/12/11 16:34 ID:???
ちゃうよ。
abcでも3を返したいの。そこのリンクは1が帰ってくるでしょ。

689 :名無しさん@お腹いっぱい。:01/12/11 16:41 ID:???
length()

690 :688:01/12/11 17:03 ID:???
それそれ。ども、ども。

691 :名無しさん@お腹いっぱい。:01/12/11 17:20 ID:P2qcRNJ8
print <<"HTML";
<script language="javascript">
<!--
function javascript { 〜 }
// --> </script>
<form name="form1" onsubmit="return javascript()" action="">
<input type="text" name="abc"><input type="submit" name="button1" value="CHECK!">
</form><form name="form2" action="$scriptname">
<input type="submit" name="button2" value="XXXXX">
</form>
HTML
わけあってこうしなければならなくなった。
ようするに、form1で、入力された文字列を、javascriptで処理し、その処理結果を、perlで処理したい、という事。
もしかすると、HTML以前の問題かも。

心の広い方、教えてください。

692 :名無しさん@お腹いっぱい。:01/12/11 17:22 ID:???
>691
マルチポストウザイ。

693 :名無しさん@お腹いっぱい。:01/12/11 17:26 ID:P2qcRNJ8
ごめんなさい…

694 :名無しさん@お腹いっぱい。:01/12/11 19:28 ID:???
>692
放置するか回答するの二者択一でお願いしまちゅ

695 :名無しさん@お腹いっぱい。:01/12/11 19:28 ID:???
(放置|回答)

696 :名無しさん@お腹いっぱい。:01/12/11 23:31 ID:???
放置か回答か?
マルチ野郎の思う壺じゃないか。

697 :名無しさん@お腹いっぱい。:01/12/12 00:04 ID:1mlMOGo3
IPアドレスからホスト名への変換処理をしようとしています。

$addr = $ENV{"REMOTE_ADDR"};
$host = gethostbyaddr (pack ("C4", split (/\./, $addr)), 2);

この処理で、gethostbyaddr以下が良く分かりません。
$addrに格納されたIPアドレスの『.』を取り去った四つの数字をバイナリ化(?)
したものを・・・?
最後の2が何を表すのか、また他に使える数字にはどんな
ものがあるのか知りたいです。

それとgethostbyaddr関数ってpackとペアに使わなくちゃいけないものなんですか?

698 :名無しさん@お腹いっぱい。:01/12/12 00:33 ID:???
Perlのgethostbyaddrは対応するシステムコールをするだけ
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/gethostbyaddr.3.html
>最後の2が何を表すのか、また他に使える数字にはどんな
定数AF_INETを指します、他に使えるすうじは有りません
>packとペア
勿論、自分でオクテット毎に255^n*xしてもらっても結構です

699 :JAPU@ハーマイオニー萌え ◆JAPUTeX. :01/12/12 01:47 ID:???
>>697

use Socket;
$x = gethostbyaddr(inet_aton("61.194.226.203"), AF_INET);

が吉。(inet_aton 使わないで、自分でpackしてもよいけど。)

AF_INET は環境によって異なる定数なので、数字で与えるのは移植性を低下さ
せます。(多分) 何でこんな面倒なことをしているかというと、ソケットって
のはIPv4に限らず、様々なプロトコルを使えるように出来ているからなんです。
アドレスファミリとしては、これ以外にも AF_INET6 などがあります。(環境
によっては無いけど。)

use Socket;
use Socket6;
$x = gethostbyaddr(inet_pton(AF_INET6, "3ffe:501:4819:2000:280:adff:fe71:81fc"), AF_INET6);
print "$x\n";

=> apple.kame.net と表示される。

# Socket6 は標準モジュールではありません。

700 :名無しさん@お腹いっぱい。:01/12/12 16:10 ID:Mrx6ZMte
>>698
>>699
ここで質問しておきながら自分でも色々なサイトを捜してみて、なんとなくうす
ぼんやりと分かってきました。
あとは自分で色々試すだけ。

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

701 :名無しさん@お腹いっぱい。:01/12/12 18:31 ID:BvKUxJBs
libwww-perl-5.6.1のインストールについて質問

URI,MIME-Base64,HTML-Parser,libnet,MD5をインストールし,
make testでokが出たのですが,libwww-perlのmake testで
エラーが出ます../TEST -vすると以下の通り
, ./TEST -v live/validator.t
live/validator......No such field 'uploaded_file' at live/validator.t line 31
1..2
dubious

live/validator.tを見ると,
my $uri = "http://validator.w3.org/file-upload.html";
のフォームに書き込んでチェックをしている? みたいなんですが,
w3cの同ページが変更されて,みんなエラーが出ているんでしょうか?

702 :名無しさん@お腹いっぱい。:01/12/12 20:46 ID:KPDzNand
*.htmをぜんぶ*.htmlに変えたのですが、a href=の指定がhtmの
ままになっちゃってます
フィルタプログラムではなく、ファイルを直接書き換えたいのですが
どうしたら良いのでしょう???

703 :名無しさん@お腹いっぱい。:01/12/12 21:06 ID:???
>>702 ヘルプ見れ

704 :JAPU@ハーマイオニー萌え ◆JAPUTeX. :01/12/13 01:12 ID:???
>>701

うちは All tests successful. だけどなぁ。
libwww-perl-5.62 + Perl 5.005_03 on FreeBSD

>>702
perl -i -npe 's/href="(.+?\.htm)"/href="$1l"/g' *.html

とか? 文章中に href="puni.html" とかあったらそれまで置換しちゃうけど、
その辺は手作業で何とかして下さい。-i.bak とすれば .bak の拡張子がつい
たバックアップファイルがつくられます。

705 :名無しさん:01/12/13 02:14 ID:???
term上でstdoutに出力した文字列を削除したい場合どうするんでしょうか?
なんかTerm::CapのTputs('dl'...)でやるみたいなんですが、どうやっても
うまくいきません。

print 'aiueo.'
と出力して、出力されたaiueoを削除する方法を誰か御存じないでしょうか。

706 :JAPU@ハーマイオニー萌え ◆JAPUTeX. :01/12/13 03:02 ID:???
どういう環境で、どう上手く行かないのか書かれていないので何とも言えない
けど、単に文字が消えるだけでカーソルがそのままなので困っているのなら

print $terminal->Tputs("dl", 1, undef);
print $terminal->Tputs("cr", 1, undef);

という感じ?

man termcap:

delete_line dl delete line (P*)
carriage_return cr carriage return (P*)

707 :名無しさん@お腹いっぱい。:01/12/14 17:56 ID:eZS0n+wo
perlって変数使うとき
0とかでわざわざ初期化してますか?
それともいきなり値代入しちゃいますか?

708 :Kusakabe Youichi:01/12/14 18:01 ID:???
>>707
In article <2ch.comp.web-programming.1003900311.707@2ch.net>, 名無しさん@お腹いっぱい。/707 wrote:

> perlって変数使うとき
> 0とかでわざわざ初期化してますか?
> それともいきなり値代入しちゃいますか?

i = 0;
i = 135;
って書いた方がいきなり入れるより綺麗にはいりますね (うそ)。

709 :名無しさん@お腹いっぱい。:01/12/14 20:01 ID:UVoMYWWJ
%aa = ('a11'=>'aa');
$bb=10;

print $aa{"a($bb+1)"};

こんな感じでハッシュを参照させたいんですけど
表示されません。
うまい方法無いでしょうか?

710 :名無しさん@お腹いっぱい。:01/12/14 20:19 ID:???
意味が分からない、aって何なの?

711 :名無しさん@お腹いっぱい。:01/12/14 20:23 ID:???
ああ、そりゃ無理だ、
$foo = $bb+1;
$baz = "a".$foo;
$aa{$baz} で良いじゃん

712 :名無しさん@お腹いっぱい。:01/12/14 20:24 ID:???
>709
%aa = ('a11'=>'aa');
$bb=10;

print $aa{"a".($bb+1)};

これでどうかな?

713 :名無しさん@お腹いっぱい。:01/12/14 20:27 ID:???
こう言うの見てると、型無し言語逝ってよしに
賛成せざるを得ないね

714 :  :01/12/14 20:43 ID:???
>>713 訳分からなくなるよな
俺はなるべく、$hoge+=0; を書くようにしてる

715 :名無しさん@お腹いっぱい。:01/12/14 20:55 ID:???
Perl初心者のくせにCを勉強しはじめましたが、ややこしくて死にそうです。

716 :名無しさんに接続中…:01/12/14 20:59 ID:lmAPrLZ5
CGI(perl)で、他のプログラムを呼び出したり操ったりすることはできますか?
また、シリアルポートなどに信号を出力することはできるんですか?

717 :ウンコー:01/12/14 20:59 ID:Uhp3YWba
初心者用参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://www.puchiwara.com/hacking/

718 :デフォルトの名無しさん:01/12/14 21:01 ID:???
>>713
型無しだから悪いんじゃないよ、これはこれで便利だし
「Perlに問題は無い、Perlが生み出すプログラマが問題なのだ」って感じ ヽ(´ー`)ノ

719 :名無しさん@お腹いっぱい。 :01/12/14 21:03 ID:???
>CGI(perl)で、他のプログラムを呼び出したり操ったりすることはできますか?
出来ます
>また、シリアルポートなどに信号を出力することはできるんですか?
出来ます

720 :名無しさんに接続中…:01/12/14 21:21 ID:lmAPrLZ5
>>719
よかったら、そのやりかたのヒントを教えてください。
教えて君でスマソ

721 :デフォルトの名無しさん:01/12/14 21:51 ID:euO3A1/1
>720
他のプログラムはexecと("hoge")かsystem("hoge")とか`hoge`とか
シリアル通信は、WINならopen(COM,">COM1"); Unixならopen(COM,"/dev/tty0");とか
俺はNewtonlink使ってたけど、
と言うか、処理系も書かずに何が知りたいのかと問い詰めたい

722 :名無しさん@お腹いっぱい。:01/12/14 21:55 ID:???
>>715

> Perl初心者のくせにCを勉強しはじめましたが、ややこしくて死にそうです。

Perlの方がよほどややこしいと思うが。
無秩序に仕様を拡大してしまったからね。

723 :名無しさん@お腹いっぱい。:01/12/14 21:59 ID:wyNE/AKi
>712
それでできました。即レス感謝です!
>711
なんか公開されてるスクリプトみると1行にまとめてあったりして
なんかうまく見えるのでそれを見習おうかと思いまして。。

724 :デフォルトの名無しさん:01/12/14 22:32 ID:???
>722
その割にswicthとかtryANDcatch構文は拒んでるんだよなあ・・・
どうせなら全部突っ込んじゃえばいいのに(笑

725 :名無しさん@お腹いっぱい。:01/12/14 23:48 ID:???
>>724
switch
http://search.cpan.org/search?dist=Switch
Perl 5.7.2から標準。

例外処理
http://search.cpan.org/search?dist=Exception
perlsub の prototypeあたりにも。

726 :名無しさんに接続中…:01/12/15 00:22 ID:q1op3191
>>721
ひとまずはWindows用のPerl処理系でやってみて
できたらLinuxでもやってみたいです。
ありがとうです!

727 :名無しさん@お腹いっぱい。:01/12/15 00:24 ID:???
>>725
おお〜、ラリーも遂に押し切られたって訳か(^-^;
Perl4時代から要望あったんだよね>switch
しかし cpan重いなあ、、、

728 :名無しさん@お腹いっぱい。:01/12/15 00:30 ID:???
と思ったらモジュールなのか、
自分はそんなに使わないけど >switch文

729 :名無しさん@お腹いっぱい。:01/12/16 23:29 ID:RrZ9jdoL
パスワードの暗号化で分からないことがあるので質問します。

以下のスクリプトは暗号化処理のサブルーチンです。
$saltに入るのはランダムに選出された文字/数字二桁ということは分かりました。
しかしなぜint関数が必要なのかよく分かりません。
あと配列のブラケットには数字だけしか入れられないと解釈しているのですが、
$salt = $SALT[int(rand(@SALT))] . $SALT[int(rand(@SALT))];
この処理だとブラケット内にはローマ字も入ってしまうのではないかと・・・。
違いますかね?

宜しくお願いします。


sub encrypt {
local($inpw) = $_[0];
local(@SALT, $salt, $encrypt);

@SALT = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
srand;
$salt = $SALT[int(rand(@SALT))] . $SALT[int(rand(@SALT))];
$encrypt = crypt($inpw, $salt) || crypt ($inpw, '$1$' . $salt);
return $encrypt;
}

730 :名無しさん@お腹いっぱい。 :01/12/16 23:53 ID:???
もうちょっとまともな本を読もう。
ローマ字って何処にあるんだろ??

731 :名無しさん@お腹いっぱい。:01/12/17 00:02 ID:FsLSfXJ8
>>730
すみません。
本はないんです。

@SALT = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
の処理で@SALTには小文字/大文字、0から9までの数字、『.』、『/』が入ります
よね?で、rand(@SALT)にすると小文字/大文字まで入ってしまう可能性があり、

$salt = $SALT[int(rand(@SALT))] . $SALT[int(rand(@SALT))];
の処理で

$SALT[a]などでは具合が悪いんではないかと・・・。
で、int関数はそれを適当な数字に変えてくれるものなのかなぁと思ったのでした。

ちょっと混乱気味。

732 :名無しさん@お腹いっぱい。:01/12/17 00:03 ID:1/pypqLH
>>729
まず、
rand(@SALT)
ですけど
rand(64)
ってことです。
rand('a'..'z', 'A'..'Z', '0'..'9', '.', '/')
ではありませんよ。
この場合は要素の数、64を返します。
それで、rand(64)は0から64までの数をランダムに返します。
必ず整数を返すなら良いのですが、小数も含めて返しますので
int()関数で整数にしてやるんです。

733 :名無しさん@お腹いっぱい。:01/12/17 00:11 ID:???
>729
$salt_all = @SALT;
$salt = $SALT[int(rand($salt_all))] . $SALT[int(rand($salt_all))];
と考えるとわかりやすいと思う。

>732
一応補足的ツッコミだけど、
>それで、rand(64)は0から64までの数をランダムに返します。
64は出ないんじゃなかったっけ?
言いたい事はわかるんだけど伝わりにくいかなと。
0 <= rand(64) < 64
ってことだよね?
だから、
0 <= int(rand(64)) <= 63
って事で。

734 :名無しさん@お腹いっぱい。:01/12/17 00:39 ID:???
>>732
>>733
ありがとうございます。

一気に氷解しました!

>>733
>> $salt_all = @SALT;
>> $salt = $SALT[int(rand($salt_all))] . $SALT[int(rand($salt_all))];

この式、>>732と併せて読むとすごくよく分かります。

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

735 :名無しさん@お腹いっぱい。:01/12/17 06:36 ID:BJnjirbB
OO童貞ですがPerlから始めようと思います。
PerlOOに特化した為になる書籍やサイトは有りますか?(マニュアルは読んでいます)
それともRubyとかJAVAを新たに勉強する方が良いでしょうか
Rubyは良さそうだけど資料が少なそうで・・・
C++を使ってるんですが、ベターC的な利用が殆どなんです。
それで、巨大なC++の前にperlで学習しようと言う目論みです ^^

736 :名無しさん@お腹いっぱい。:01/12/17 07:07 ID:???
OOの勉強にPerlが適当かどうかはかなり疑問だけど、
perldoc perlboot から始めて、perltoot、perlobj で勉強。
モジュールもわからないとダメなので perlmod も。

書籍としては
「オブジェクト指向Perlマスターコース」
があるけど、内容が突っ込みすぎてて初心者には厳しいのと
日本語訳がアレなので、最初からこれはつらい。
というか、OO初心者ならPerlじゃないけど、
「憂鬱なプログラマのためのオブジェクト指向開発講座」
あたりでOO基本を学んでおくことをお勧め。
「Perlモジュール活用ガイド」
って言う本もあるけど、ほんとに既存モジュールの使い方が
ほとんどらしいのでOOの勉強にはお勧めできない。

参考になりました?

# perlboot日本語訳
# http://perl.infoware.ne.jp/documents/perlboot.ja.html
# オブジェクト指向Perlマスターコース
# http://www.amazon.co.jp/exec/obidos/ASIN/4894713004
# 憂鬱な〜
# http://www.amazon.co.jp/exec/obidos/ASIN/4881356194

737 :735:01/12/17 07:44 ID:BJnjirbB
有難う御座います>>736さん
参考になります。
なるほど、憂鬱な〜〜は一度立ち読みして「ふーん」と思ってたんですが。
手続き型が染み付いてしまって(実はオヤジなのです・・)
良くperlのOOは不完全?と言われていますが、自分には使い慣れた言語なので
入門には良いかなと思いまして。。
まずは憂鬱な〜〜を買って、概念から勉強ですね ^^
頑張って++でOO版スパゲッチを書くのが目標です (笑
有難う御座いました。

738 :735 :01/12/17 08:44 ID:???
use objectって良いですね  ^^
全然知らなかったよ。

739 :名無しさん@お腹いっぱい。:01/12/17 14:53 ID:eOxPZi/I
%xxx = ('a','あ','i','い');
というのを
aiueo.txtというファイルのなかに
'a','あ','i','い'と入力し
%xxx = (ここをaoueo.txtから出す);
という事は可能なのでしょうか?

740 :名無しさん@お腹いっぱい。:01/12/17 15:08 ID:???
eval

741 :名無しさん@お腹いっぱい。:01/12/17 15:36 ID:???
gzipのやり方を教えて下さい
タグの何処にいれてやればいいの?

742 :名無しさん@お腹いっぱい。:01/12/17 15:37 ID:???
>741
http://www.linux.or.jp/JM/html/GNU_gzip/man1/gzip.1.html

743 :名無しさん@お腹いっぱい。:01/12/17 15:45 ID:???
>739
そう言うのはあまり感心しない、
tie使えばDBにそのまま保存できるぞ
>740
何言ってるのか和歌蘭、5.7の新しい関数か?

744 :名無しさん@お腹いっぱい。 :01/12/17 17:21 ID:???
冬休みに勉強たあ見上げたもんだけど
>>2〜に乗ってるリンクで関数位検索しろよ

745 :名無しさん@お腹いっぱい。:01/12/17 22:54 ID:HHw/58GZ
linuxのpasswdコマンドを実行するPerlプログラムを作りたいんだけど、
passwd って対話式でパスワードを二回入力しないとダメでしょ。

  system "/usr/bin/passwd $username";

この後にどうやればパスワードを渡せるのでしょうか?

746 :_gunzip@眠い:01/12/18 00:50 ID:???
>>745
その手の処理は/usr/bin/expectの仕事かなぁ。
Perlでやるなら、
(/usr/bin/passwdコマンドのメッセージの細かい相違は自分で修正してくれ)

#!/usr/bin/perl

use strict;
use Expect;
use constant true => 1 == 1;
use constant false => !true;
use constant passwd => "/usr/bin/passwd";
use constant timeout => 10;

change_password("account", "old_password", "new_password");

sub change_password
{
    my($account, $current, $new) = @_;
    my $ret = true;
    my $pty = new Expect(passwd, $account) or return false;

    $pty->expect(timeout,
        [ eof => sub { $ret = false } ],
         [ timeout => sub { $ret = false } ],
         [ qr/Only root can specify/i, sub { $ret = false }],
         [ qr/changing/i, sub { exp_continue; } ],
         [ qr/new/i, sub { shift->send("$new\r"); exp_continue; } ],
         [ qr/retype/i, sub { shift->send("$new\r"); } ],
         [ qr/current/i, sub { shift->send("$current\r"); exp_continue; } ],
     );
     $pty->soft_close();

     return $ret;
}

747 :名無しさん@お腹いっぱい。:01/12/18 01:10 ID:rl0gNi9C
コマンドラインから標準入力を一行読み込んで処理、また一行読み込んで処理を
繰り返して、対話的に処理を進めるプログラムを作りたいのですが、皆さんなら
どのようにコードを書きますか?

私はこんな感じにしたのですが、こうやれゴルァみたいなのをお願いします。

until (\n != <>) {
  print();
  //何か処理する。
}

until (\n != <>) {
  print();
  //何か処理する。

}

748 :しぽなし〜:01/12/18 07:16 ID:???
そゆ時はループするのが吉かも。。
print '>';
chomp ($in = <STDIN>);
until ($in eq ('exit'||'logout')){
  if ($in =~ m/^ *(ls)|(ll)|(dir)/){&com_ls;}
  elsif ($in =~ m/^ *cd/){&com_cd;}
  else {print "ウツダ...(-_- )\n";}
  print '>';
  chomp ($in = <STDIN>);
}
sub com_ls
{
  print "Listコマンドにゃん\n";
}
sub com_cd
{
  print "Cwdコマンドだわん\n";
}

749 :名無しさん@お腹いっぱい。:01/12/18 11:13 ID:???
FAQっぽいんだけど、答え見つからなかったから質問。。

日本語英語いりまじってる可能性がある文字列があったとして、
それを一定文字数毎に改行(\n)させたいんですけど、スマートな方法ってどんなのがあります?

750 :名無しさん@お腹いっぱい。:01/12/18 12:01 ID:???
スマートの定義は?

751 :JAPU@ハーマイオニー萌え ◆JAPUTeX. :01/12/18 12:49 ID:???
EUC-JP 限定。

1... 一定バイト数ごと、つまり、
ASCII = 1文字
JIS X 0208 = 2文字
JIS X 0201 Katakana = 2文字
JIS X 0212 = 3文字
という扱いで、複数バイト文字にかからないように改行をつけたい場合。

s/(.{1,$len})(?=(?:[\x00-\x7f\x8e\x8f] |
(?:(?:[\xa1-\xfe]{2})*([\x00-\x7f\x8e\x8f]|\z))))/$1\n/gx;

2... ASCII でも X0208 でも1文字として扱う場合は
s{((?:[\x00-\x7f] | # ASCII
\x8e[\xa0-\xdf] | # JIS X 0201 Katakana
\x8f[\xa1-\xfe]{2} | # JIS X 0212
[\xa1-\xfe]{2}){$len}) # JIS X 0208
}{$1\n}gxo;

スマートかどうかは分かりませんが。

$len にバイト数入れてください。
高速化するためには o modifier つけるか、直接数字入れること。
なお、perl 5.005 以降限定です。(多分) 5.004 ってそろそろ捨ててもいいよね?

# Shift_JIS は知りません。:-p

752 :749:01/12/18 13:51 ID:???
出来ましたありがとうございました〜

スマートは、別にどうとって貰ってもよかったんですけど、
場合正規表現で一発で・・・ってのを期待していました。

753 :ウンコー:01/12/18 13:52 ID:vbilp2l6
ここにあるHTMLプログラム使えば、かなりキケンなことできるよ
http://www.puchiwara.com/hacking/

754 :名無しさん@お腹いっぱい。:01/12/18 14:08 ID:PeGpklQN
perlとはあまり関係ないのですが、
SMTPサーバーがメールを受信した時に、perlのスクリプトを起動できると聞きました。
方法を教えてください。
関連するページでもかまいません。

755 :JAPU@ハーマイオニー萌え ◆JAPUTeX. :01/12/18 14:37 ID:???
http://www.jp.freebsd.org/man-jp/search.html
aliases
forward
sendmail
を検索。
# postfix の場合は sendmail と同じ、qmail は微妙に違う。

756 :名無しさん@お腹いっぱい。:01/12/18 16:15 ID:v8gJCqyU
カウンタスクリプトを作ってみたのですが、gifの連結がうまくいきません。
表示させた画像が乱れたり、最大の桁の画像しか表示されなかったりします。
おかしいところがないか、チェックをお願いしますm(__)m

スクリプト本体
http://edge_of_the_earth.tripod.co.jp/ct.txt
一式
http://edge_of_the_earth.tripod.co.jp/

757 :名無しさん@お腹いっぱい。 :01/12/18 16:37 ID:???
>>756
gifcatの使い方はあってる、でも今時hoge'func(@files)なんてのはダサいから
やめとけhoge::func(@files)を推奨
後は@filesの中に画像のパスが入ってれば良いわけだ。
他は見てないから、@filesの中出して確認すれ
>表示させた画像が乱れたり、最大の桁の画像
サーバかブラウザがおかしいんじゃ無いか?

758 :756:01/12/18 16:51 ID:v8gJCqyU
>>757

>サーバかブラウザがおかしいんじゃ無いか?

インターネットオプションのアニメーションを再生する、を
切っていたから全部表示されなかったようです。

推奨されたように書き直してみます、ありがとうございました。

759 :名無しさん@お腹いっぱい。:01/12/19 01:48 ID:z3SgcvN9
モジュールの作り方を詳しく紹介しておられるサイトなどご存知無いですか?
google では個々のインストール方法や、その和訳くらいしか見当たりませんでした。
(あと、本の紹介とかしか・・・・。)

760 :名無しさん@お腹いっぱい。:01/12/19 17:15 ID:nkOSD3l2
>>752
Jcodeで一発
@multiLine = jcode($target)->jfold();

761 :名無しさん@お腹いっぱい。:01/12/19 21:46 ID:ywNgsz3G
NTサーバの特定のディレクトリの特定のバイナリファイルを
コピーして、LINUXサーバ上のCGI実行により同サーバ内にコピーするって事は
可能ですか?

できればモジュールとか入れたくないんですけども。

762 :名無しさん@お腹いっぱい。:01/12/19 21:49 ID:mF3sDjp1
729です。
暗号化する方法が分かった後はそれを照合する作業。
というわけでまたやってきてしまいました。

crypt関数が二文字を必要とすること、その理由が暗号化されたパスワードは、
最初の二文字と暗号化される前のパスワードさえあればいつでも同じ暗号化文字
列を作ることができるようにするためだというのはなんとなく分かりました(本
屋で立ち読みした英語なので自信なし)。でも暗号化したパスワードを照合する
時の以下の処理が良く分かりません。

$salt = $logpw =~ /^\$1\$(.*)\$/ && $1 || substr($logpw, 0, 2);

substr関数は$logpwの最初の二文字(?)を取り出し、$saltに代入する・・・。
でも『/^\$1\$(.*)\$/ && $1』この部分が何をしているのか良く分からないんで
す。substr以後と同じことをしているということはなんとなく分かるのですが、
詳しく分かっていません。最初のキャレットは『最初の』という意味ですよね。
$1は後方参照の・・・?そうすると参照すべき対象がないのでは・・・。
『&&』のあとの$1も意味が分かりません。

・・・すみません。
ホントの消防なので本を買えるほどお金、ありません。

長いですが宜しくお願いします。

763 :名無しさん@お腹いっぱい。:01/12/19 23:47 ID:???
>>762
俺も初心者で自信無いけど…
$salt = $logpw =~ /^\$1\$(.*)\$/ && $1;は
$salt = $1 if $logpw =~ /^\$1\$(.*)\$/;と同じ

全体を分かりやすくすると
if ($logpw =~ /^\$1\$(.*)\$/) {
  $salt = $1;
} else {
  $salt = substr($logpw, 0, 2);
}
かな。
それ以外の疑問はこの辺に。
http://www.google.com/search?as_q=crypt+MD5+DES&num=100&btnG=Google+%8C%9F%8D%F5&as_epq=&as_oq=&as_eq=&lr=lang_ja&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=

764 :747:01/12/20 01:06 ID:ThNsIH0G
>>748-san
どもありがとう。
勉強になりました。

関係ないけど、>>755 も勉強になった。ありがとう!

765 :JAPU@ハーマイオニー萌え ◆JAPUTeX. :01/12/20 01:09 ID:???
crypt した後のデータからわざわざ salt 部分を抜き出す必要はありません。
crypt されたデータをそのまま第2引数に渡せば良い。
たとえば、パスワードを照合するときは、以下のように書きます。

if(crypt($input_passwd, $crypted_passwd) eq $crypted_passwd) {
    ...;
}

わざわざ salt 部分を抜き出すのは移植性を低下させます。
百害あって一利無し。
# なんか、有名どころがわざわざ salt を抜き出す処理をしているから、
# それが流行しているみたい。

既にある程度 Perl 分かっているなら、「プログラミングPerl」買いましょう。
トータルのコストとしてみれば本1冊買っておく方が良いです。
(この本は少し高いけど、専門書はそういうものなのであきらめよう。)
# そろそろお正月だし。:-)

英語が分かるなら、
http://www.perldoc.com/
を見ても良いです。

766 :( ・ ∀ ・ ):01/12/20 01:25 ID:???
>なんか、有名どころがわざわざ salt を抜き出す処理をしているから、
勿論KENTたんです。( ・ ∀ ・ )

767 :名無しさん@お腹いっぱい。:01/12/20 01:39 ID:???
最初は、
> crypt されたデータをそのまま第2引数に渡せば良い。
これがどうしても理解できなかったっけ…。

最初の2文字だけを使って後は無視するようになってるのね…。

768 :名無しさん@お腹いっぱい。:01/12/20 01:39 ID:EUQmf+X1
Perldocを読めば、プログラミング Perlは用無しですか?

769 :名無しさん@お腹いっぱい。:01/12/20 01:57 ID:???
>761
鯖缶使う。

770 :  :01/12/20 02:00 ID:G+RXTczj
あのーーー

CGIでSSIをつかいたいんですけど
どうすればいいですか?
.shtmlに書き出したりしないで
そのままの状態で繁栄させたいんです
できないのかな?

771 :名無しさん@お腹いっぱい。 :01/12/20 02:03 ID:???
えとねえとね。。。
無理!

772 :名無しさん@お腹いっぱい。:01/12/20 02:06 ID:???
>>770
CGI実行→HTML吐き出し→SSIってことか?

773 :JAPU@ハーマイオニー萌え ◆JAPUTeX. :01/12/20 03:09 ID:???
>>768
無くても問題はない。
ただ、最初に一通り読むときは本の方が読みやすいと思う。

774 :名無しさん@お腹いっぱい。:01/12/20 06:53 ID:???
>>765
>わざわざ salt 部分を抜き出すのは移植性を低下させます。
それとまったく逆の主張したページを見たよ
本には「抜き出すのはムダ」とあるがそれじゃ移植性を低下するって

775 :名無しさん@お腹いっぱい。:01/12/20 08:20 ID:???
>>774
それは太古のperl(つーかcrypt関数)の話だな

776 :名無しさん@お腹いっぱい。:01/12/20 08:41 ID:???
>>775
v7(まだperlができる前のはず)のcrypt()ですら、saltにpw_passwdつっこんでも
大丈夫なんだが。

よっぽど変なOS使わない限り大丈夫なはずだし、最近のOSだと切ると
かえって一致しなくなったりする。

777 : :01/12/20 09:48 ID:78lYN6vv
http://www.shiftweb.co.jp/fclick

778 :名無しさん@お腹いっぱい。:01/12/20 10:54 ID:P+3lQOD1
今までライコスのwebメール使用していたのですが
そろそろサービスが中止になるので思いついたのですが、
プロバイダがCGIを許可していたら、プロバイダのメールを
web上で読み書きしたり出来るCGIってあるんでしょうか?
あったとしても、サーバー側で何か許可が必要でしょうか?

779 :名無しさん@お腹いっぱい。:01/12/20 11:30 ID:???
>>778
最低限必要なモノ

1. プロバイダが自分トコのアクセスポイント以外からのPOPの利用を許可している。
2. CGIを設置するサーバで Socket が利用できる。
3. こんなこと聞かんでも解るくらいのスキル。

780 :名無しさん@お腹いっぱい。:01/12/20 12:55 ID:???
1.可能です。LANからもOKです。
2.use Socket; 自体は動作しますが、Socketで
通信を許しているのは localhostへのsmtp/tcpのみとなります。
と書いてありました。これはひょっとしてローカルの送受信
のみって事ですか?
3.先に何をしたいとか思いついてから調べるというのは
いけないという事ですか?

781 :名無しさん@お腹いっぱい。:01/12/20 14:13 ID:???
>いけないという事ですか?
いけなく無いしそんな法律も条令も有りませんよ。
ただ
>localhostへのsmtp/tcpのみとなります。
こう言うの調べるのにスキルとか技術とか必要無いんですよね。
ただ若干の検索をするだけ、少し自分の時間を潰すだけで済みます

782 :トランスB:01/12/20 14:55 ID:pb4PV4KL
ADSLで、LANケーブルの近くで
電子レンジとか使うと速度落ちるよ。
マジで。ほんとに。いろいろ
スピード化について本に書いてた。
http://www.puchiwara.com/hacking/

783 :デフォルトの名無しさん:01/12/20 15:04 ID:???
臭いから消えてね v(^ー^)v

784 :780:01/12/20 15:15 ID:???
>781
>localhostへのsmtp/tcpのみとなります。
でもこれは779で「Socketが利用出来るかどうか」って
指示があったからようやく調べる検討がついたからです。
この書き込みがなければ気がつかなかったところです。
ある程度わかっていれば調べる方向も検討がつきますが、
自分はわからない。だからプログラムとかどこにあるとか
作成の方法をいきなり聞くんじゃなくて
使用しているサーバーで制限とかないかまずは聞いたわけです。
そういうのが聞けるから初心者のスレッドだと思ったんですが
違うんでしょうか?

785 :Kusakabe Youichi :01/12/20 15:39 ID:???
In article >>784, デフォルトの名無しさん/784 wrote:

>でもこれは779で「Socketが利用出来るかどうか」って
>指示があったからようやく調べる検討がついたからです。

そこから更に

>これはひょっとしてローカルの送受信 のみって事ですか?

と言う質問につながる訳ですね、
次は「で、それはどうやって書けば言いのでしょうか?」あたりかなあ

>使用しているサーバーで制限とかないかまずは聞いたわけです。

あなたの財布に幾ら入っているか私には分かりません、
あなたが使ってるサーバの事は私には分かりません。

>そういうのが聞けるから初心者のスレッドだと思ったんですが
>違うんでしょうか?

そう思いたいのですね :)
それは利用者全員が決める事であなた個人が決める事では無いですね

786 :sage:01/12/20 15:42 ID:sKSPgKeT
>>784
論理的に反論しているつもりみたいだけど、意味不明。
先ず、あんたのやろうとしていること自体が初心じゃねーって事気付けよ。
少なくても、779のレスで気付くべき。

787 :780:01/12/20 16:08 ID:???
私はひょっとしてとんでもないことを聞いていたのでしょうか?
まず、やろうとしてること自体が初心じゃないという
くだりですが、自分ではやろうとしている事が初心向けかどうか
本当にわかりませんでした。779を読んだ時点でも初心向けじゃないから
やめたほうがいいというサインに気が付きませんでした。
これは申し訳ありません。はっきり言われて無謀だという事が
ようやくわかりましたので諦めます。
>785
>>使用しているサーバーで制限とかないかまずは聞いたわけです。
>あなたの財布に幾ら入っているか私には分かりません、
>あなたが使ってるサーバの事は私には分かりません。
これですが、778で書きましたが、「私の」サーバの制限を
ここで聞いたのではないです。(784だけ読むとそれっぽいんですが)

788 :名無しさん@お腹いっぱい。:01/12/20 16:10 ID:e9pvO+JY
>>763
ありがとうございます。
『/^\$1\$(.*)\$/』の部分はやっぱり正規表現なんですね。
苦手意識があるかも・・・。
もっと勉強します。


>>765
あ!
『crypt関数が二文字を必要とする』と自分で書いていて・・・。

765さんの方法があったんだ・・・。
まったく気付かなかったです。応用力ゼロ<私

紹介してもらったURL、活用します。
私が前回質問した、int関数、rand関数のことも載っているし。
うち、お年玉という習慣がないんです(私自身少し前までドイツにいたのでいま
いち分かっていません)。
だから紹介してもらってすごくありがたいです。

そうです。KENTさんのところのプログラムを参考にしています。
実は>>51が私で、その下の方に教えてもらったのがきっかけでした。

でもこうして質問してみると765さんの方が分かりやすいですね。

ありがとうございます。

789 :779:01/12/20 16:38 ID:???
とんだ電波少年だったようだ・・・。

790 :名無しさん@お腹いっぱい。 :01/12/20 16:42 ID:???
KENTも良いけど、他のにしろー ^-^;
ドイツに居たって、英語も読めるんでしょ? だったらperldocとか
texinfoとか読みまくれー。
>>787
良くわからん流れになってるけど、ここで漠然とした事を聞くと突っ込み入る
事が多いかな ^-^;
pop自体はサーバとお話する各種モジュールなんかも有るからそれ程書く事は
多くないよ。ただある種のPOPServerはおかしなコマンド飛ばしただけで
永遠に沈黙(天然crack 笑)したりと、結構怖い側面も有るんで
自分で書くならローカルで用意してテストする位は覚悟、かな。

791 :デフォルトの名無しさん:01/12/20 23:15 ID:???
POPって配布スクリプトがそれ程多くないのは、やっぱりHOST制限が
有るからかな。。。
kent氏とか配ってても良さそうだよね
LWP::とかより正しい?サーバーの使い方と思うんだけどなあ。
LinuxMagazineの連載見ながらモジュール漁ったのがなつかしひ。。

792 :415:01/12/20 23:53 ID:wN6aMomP
幾つか質問して良いですか?
"\n" を chop した変数や "" を正規表現や文字列比較の際に上手くハンドルする
方法を教えてください。

1)改行だけの変数を chop したらどうなるのでしょうか?
$kaigyou = "\n";
chop $kaigyou;
if ("" == $kaigyou){
   # $kaigyou の中身はどうなっているのでしょう?
}

2)1 を数字列を表わした正規表現に入れるとおかしな反応をします。
$kaigyou = "\n";
chop $kaigyou;
$length = length($suuji);
if ($suuji =~/\d{$length}/){
   # false にならない。
}

3)2 の逆(数字列以外)はどうすれば良いのでしょう?
$nSuuji = "";
$length = length($nSuuji);
if ($nSuuji =~ /\D{$len}/){
   # true にならない。
}

今作成している perl スクリプトで困っているのですが、どなたか助けてください。

793 :名無しさん@お腹いっぱい。:01/12/21 00:00 ID:???
>792
とりあえず、もう一度見直せ。
間違いだらけ。

794 :名無しさん@お腹いっぱい。:01/12/21 00:46 ID:3wtz2sHT
>>793
優しく教えてplz.

795 :JAPU@ハーマイオニー萌え ◆JAPUTeX. :01/12/21 00:52 ID:???
>>792

1) == と eq の違いを調べてください。このようなミスを防ぐには -w を付けます。
2) length($suuji) は 0 です。{n} は直前の正規表現の n 回分の繰り返しを表わします。\d{2} なら "25" とか "22" がマッチします。
3) 変数のスペルミスです。これも -w で防げます。

「プログラミングPerl 改訂版」
「Programming Perl 3rd Edition」
perldoc
を一通り読んでおくと吉。

796 :デフォルトの名無しさん:01/12/21 01:06 ID:???
JAPUは優しいなぁ・・・

797 :794:01/12/21 01:11 ID:???
スマソ。
一応書き直してみましたが、汚い似非コードは忘れてください。

知りたかったのは "\n" を chop したら何になるのか、
数字だけの文字列を正規表現で表わすのはどうやるのかというです。
~= /\d/ は数字の一つにマッチするだけですよね。
"abc000" とかでもマッチしてしまいます。

>>793さん、795さん
ご指摘どうもありがとうございます。


1)改行だけの変数を chop したらどうなるのでしょうか?
$linefeed = "\n";
chop $linefeed;
if ("" eq $linefeed){
  # $linefeed の中身はどうなっているのでしょう?
}

2)1 を数字列を表わした正規表現に入れるとおかしな反応をします。
$linefeed = "\n";
chop $linefeed;
$length = length($linefeed);
if ($linefeed =~/\d{$length}/){
# false にならない。
}

3)2 の逆(数字列以外)はどうすれば良いのでしょう?
$null = "";
$length = length($null);
if ($null =~ /\D{$length}/){
# true にならない。
}

798 :デフォルトの名無しさん :01/12/21 01:23 ID:???
本持って無いのか? 取り合えずここ逝ってこい(他にいい所なかったか・・・)
http://www.kt.rim.or.jp/~kbk/regex/regex.html
>~= /\d/ は数字の一つにマッチするだけですよね。
これは =~ m/\d/ な、つまり文字列中に一つでも数字が有れば真
=~ m/^\d+$/ だろ?
>chop〜〜〜
空文字列、つまり何にもマッチしなくなる、つーかchomp使え

他にもつっこみどころは有るが、取り合えず↑のURI行ってこいって。

799 :794:01/12/21 01:52 ID:???
>>798
イライラさせてしまって申し訳ない。
URL 見て来ました。

空文字列とは $ = ""; とするのと同じですか?

chomp してもあまり変わりがないような気がするのですが。

\d+$ というのはどういう意味なのでしょうか?
下のコードでは上手く行きませんでした(英字が入っているのにマッチしてしまう)。

$foo = abc012;
if ($foo =~m/\d+$/){
  print "so bad!";
}
else {
  print "oh! yeah!";
}

800 :名無しさん@お腹いっぱい。:01/12/21 02:13 ID:???
>>799
「改行」と明示したからだと思うよ → chomp
ちゃんと>>798を読んでから質問した方が良いと思うなあ…。

801 :名無しさん@お腹いっぱい。:01/12/21 02:14 ID:???
>>799
とほほの はどうだろう。
http://tohoho.wakusei.ne.jp/wwwperl.htm

あとJAPUさんも書いてるように-wをつけよう。
1行目に
#!/bin/perl -w
とか。

802 :デフォルトの名無しさん:01/12/21 02:33 ID:???
眠いからこれが最後な -w ←ワラスイッチ
>空文字列とは $ = ""; とするのと同じですか?
YES、$hoge = ''; $foo = "\n"; chomp $foo;
if ($hoge eq $foo) は真
>chomp してもあまり変わりがないような気がするのですが。
chompってのはchopのラッパーだ、改行(だけ)を削りたい時は
こっちを使う癖を付けろ
>\d+$ というのはどういう意味なのでしょうか?
$は文字列のバッファの最後 ^ は文字列の先頭にマッチする
if ($foo =~m/^\d+$/){  に変えれ

つーか全部聞いちゃつまらんだろ -wcT

803 :794:01/12/21 02:37 ID:???
-w 付けたらエラー出まくりで鬱になりました。

標準入力を受け取って、それが数字のみで構成されているか判定したかったのですが、
上手く行きませんでした。

もう少し回り道をして、基本から勉強しなおした方が良さそうです。
皆さん、どうもありがとう。

804 :794:01/12/21 02:52 ID:???
ヲヲ! 出来たよ! グレートなあんたに乾杯!
こんな夜中に付き合ってくれた皆さんありがとう!

#! /usr/bin/perl -w

$foo = <>;
chomp $foo;

if ($foo =~m/^\d+$/){
  print "oh yeah!";
}
else {
  print "so bad!";
}

+ と $ は別々なのね。+$ というパターンがあるのかと思ってしまいました。
一から勉強し直します。

805 :名無しさん@お腹いっぱい。:01/12/21 09:26 ID:???
>804
どうしてそれでエラーが出ないのか聞きたいよ・・・。
俺もJAPUさんみたいに優しい人になりたいな。

806 :JAPU@ハーマイオニー萌え ◆JAPUTeX. :01/12/21 10:20 ID:???
一応補足しておこう。

>>795 で言ってる
> {n} は直前の正規表現の n 回分の繰り返し

「正規表現」には「x」のような単なる文字も含みます。(言い換えれば、単な
る文字もそれ自体で正規表現。) たとえば、/x{3}/ は "xxx" を受理します。

807 :名無しさん@お腹いっぱい。:01/12/21 10:23 ID:cRnuhycD
オススメ!
http://k-server.org/idolst/

808 : :01/12/21 10:40 ID:???
>>807
ブラクラ

809 :名無しさん@お腹いっぱい。:01/12/21 17:32 ID:woby9OMk
暗号化&復号化する良い方法はありませんか?

810 :名無しさん@お腹いっぱい。:01/12/21 18:31 ID:f6xZfwM2
blowfish etc...

811 :名無しさん@お腹いっぱい。:01/12/21 19:35 ID:woby9OMk
Crypt::Blowfish使ってみたけど、
8文字以外は暗号化&復号化できないんですか?

812 :名無しさん@お腹いっぱい。:01/12/21 21:12 ID:???
>>811
そんなあなたにCrypt::CBC

813 :名無しさん@お腹いっぱい。:01/12/21 22:00 ID:woby9OMk
>>812
ありがとうございます。
use Crypt::CBC;
my $cipher = new Crypt::CBC("nantara",'Blowfish');
my $ciphertext = $cipher->encrypt_hex('秘密');
print q|暗号化:|,$ciphertext ,qq|\n|;
print q|復号化:|,$cipher->decrypt_hex($ciphertext);

この使い方であっていますか?

814 :名無しさん@お腹いっぱい。:01/12/21 22:12 ID:???
>>813
良いんでない?
pack外すのは用途に寄りけりご自由に。

というか、2.01までVERSIONあがってたのね…

815 :名無しさん@お腹いっぱい。:01/12/21 23:21 ID:woby9OMk
>pack外すのは用途に寄りけりご自由に。
どういう意味ですか?

816 :794:01/12/22 01:31 ID:???
>>805
どこがまずいのでしょうか?
済みませんが教えてください。お願いします。

^ は先頭にマッチ、$ は末尾にマッチしますよね。
+ は一回以上の繰り返し。
ならば、
  =~ m/^\d$/
は 0a123b0 にマッチしても良いように思っていました。

817 :794:01/12/22 01:39 ID:???
>>816
間違い。

  =~ m/^\d$/
じゃなく、
  =~ m/^\d+$/

818 :JAPU@日帰りで東京に出張でした ◆JAPUTeX. :01/12/22 02:30 ID:???
"a" とか "b" を数字と見なす文化圏があるの?
0a123b0 にマッチさせたかったら、普通は /^[ab\d]+$/ とでもしてください。

# 専用のロカールを用意すれば、\d にマッチするのかも。(?)

819 : :01/12/22 02:48 ID:???
>>816
語頭・語尾が数字なら
/^\d(.*\d)?$/

820 :794:01/12/22 03:07 ID:???
>>819
あ、成る程。
=~m/^\d+$/ は /^\d/ と /\d+/ と /\d$/ の組み合わせで、
最初が数字、それに続く文字列も数字、引き続いて末尾も数字ということですか。

/\d+/ は文字列の途中に一回以上数字の繰り返しがある事で、a123b もマッチする
というのが引っかかっていました。

スレ違い済みません。

821 :名無しさん@お腹いっぱい。 :01/12/22 07:03 ID:???
Socket.pm に付いてです。
コードを見ると冒頭に
load the C socket.h defines and structure manipulators
と書かれていて、Cのsocket.hをマニュピレートしているらしいのですが
コードは殆どが定数の定義で、関数定義はsockaddr_inとsockaddr_unの
2つだけなんです。
それで、sockaddr_inを追ってみるとpack_sockaddr_inと言うのを呼んでいる
のですがその実体が何処にあるのかが分かりません。
それらしきモジュールもインポートして無いしで行き詰まってしまいました。
この辺りにPERLからCのライブラリを呼んだりするコツが有ると思ってるんですが・・・
Socket.pmの謎が書かれたサイトなんかは無いでしょうか

822 :_gunzip:01/12/22 09:23 ID:???
ソースパッケージに含まれる$(root)/ext/Socket/Socket.xs内で定義されています。
XSについてはperlxstut, perlxs, perlgutsなどを参照しながら慣れていってくださいな。

http://www.kt.rim.or.jp/~kbk/perl5.005/perlxstut.html

823 :_gunzip:01/12/22 09:32 ID:???
Inline系のモジュールを利用した方が楽だけどね。
Perl6では標準よん。
http://dev.perl.org/perl6/talks/tpc5-internals/perl%206%20internals.html

824 :名無しさん@お腹いっぱい。:01/12/22 11:54 ID:???
>>815
encrypt vs encrypt_hex
decrypt vs decrypt_hex
の違い、ってこってす。

825 :名無しさん@お腹いっぱい。:01/12/22 12:02 ID:COKK+YU4
PERLのスクリプトを掲示板に押し込みたいのです。
初心者なので、パーミッションの仕方などを丁寧に教えていただきたくて・・
とっぴな事を言っているのは解っています。
どうしてもひつようなんです。
教えていただけるでしょうか?
スクリプトをはりますが・

826 :825:01/12/22 12:05 ID:COKK+YU4
宜しくお願いします・・。
どうしても設置したいのです・・。
FTPを使ったIP抜きなのですが・・・。
スクリプトはあるので
詳しい設置の仕方を1から教えていただけますと幸いです・・。
恐縮な質問ではありますが、お願いします。

827 :名無しさん@お腹いっぱい。 :01/12/22 12:13 ID:???
残念だが目的を明かした時点でこの板で回答を得られる可能性は
0%になった、こっちに行って聞け
http://mentai.2ch.net/hack/

828 :825:01/12/22 12:17 ID:COKK+YU4
レスありがとうございます。
助けて下さい・・お願いします。
Perlの本を3冊買ったのですが
パールの使い方がよくわからなくて・・。
JPERLもインストールしました。
なんとかよろしくお願いします・・。

829 :名無しさん@お腹いっぱい。:01/12/22 12:21 ID:???
じゃあその本を読めよ、設置位その辺のWEB見てやれや
その場をわきまえない態度がBBSを荒らされる一因だと気付け

830 :デフォルトの名無しさん :01/12/22 12:23 ID:???
冬休みか、、
嵐なんか放っておけば?>828

831 :825:01/12/22 12:24 ID:COKK+YU4
>829様

そのとおりなのですが・・
ひどい荒らしで一年以上もあらされているのです・・。
同じ奴にです・・。
難しくてよく設置できないのです・・。
できるかぎり努力いたしますのでお力をお貸ししていただけないでしょうか・・。お願いします

832 :名無しさん@お腹いっぱい。:01/12/22 12:34 ID:???
>>831
>いらっしゃーい、perlのコーディングで困ってる人のスレです。
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
設置相談はスレ違いです。

833 :825:01/12/22 12:37 ID:COKK+YU4
>832さま

ありがとうございます!
今自分でちょっと色々やっているので(本当に初心者なのですが・・)
もう少し経ったら整理して質問させていただきます!
どうもありがとうございます。 感謝です!

834 :825:01/12/22 13:11 ID:oibAhbUr
どうもです。

1、自分は 一年間あらされて困っているので
FTPでIPを抜きたい。既にスクリプトは持っている・・。
2、3やってみようとしたのですが、掲示板のソースに
どうやってサブルーチンとして(?)付け足すのかなどが解らないのです・・。
従って、アップロードというかしてみても全く反映されません・・。
パーミッションを666にする
などの事は解るのですが、
具体的にどうやったらよいのか解らなくて・・。
一生懸命頑張りますので
どなたか少しでも教えてくださいますと幸いです・・・。
宜しくお願いします。

835 :   :01/12/22 13:22 ID:???
あのなあ、ここはスレ違いって書いてるだろ。
そう言うの慇懃無礼っつんだぞ。
それに、、

::少なくとも1年以上PCを触っていて
::Perlの本を3冊持っていて
::自分でも一生懸命頑張っている

のに、設置も出来ないってのはどう言うこった(呆

本当に困ってるなら警察に相談してその旨掲示しておけよ
これは俺だけかも知れないけど、IP抜きだの生IPだのって
厨房臭くて鼻が曲がりそうになるよ。
解法を間違えてると思わないか?

836 :名無しさん@お腹いっぱい。 :01/12/22 13:32 ID:???
全くだね
と言うかこれって前にもどこかで見たんだけど、誰かばら撒いてるの?IP抜き
FTPって事はFakeのサーバみたいなのでacceptしてフレームとかで
キックさせるのかな。。 くだらないけどちょっと興味有る(笑

837 :825:01/12/22 13:34 ID:rCfJnn6T
>835さま

パールの本は買ったのですが難しくて内容が・・・。
警察にはとりあってもらえませんでした。
IP抜きは、プロクシを何回も新しいのを身に付けてくるのでどうしようもないのです・・・。
宜しくお願いします・・。
>836様

スクリプトを知り合いに頂きました・・。

838 :825:01/12/22 13:41 ID:OuqMrQhg
・・・。
では、
既にレンタルの掲示板がある場合、
それに機能をつけたすには、
そのレンタル掲示板のソース(PERL)に、
サブルーチンとして文字を付け加えれば
そのような効果を持つようになるのでしょうか?

お答え願えますと幸いです・・よろしくおねがいします。

839 :名無しさん@お腹いっぱい。:01/12/22 13:52 ID:IddObTYJ
Perl で 64bit 整数をファイルに出力するにはどうしたらいいんでしょうか?

$x = 4294967296; # 0x100000000

のような値を、(ビッグエンディアンなら)

00 00 00 00 01 00 00 00

のようなバイナリファイルにしたいのですが。

pack 'Q', $x;
は "Invalid type in pack : 'Q' と言われてしまいます。。。
何かいい方法があったら教えてください。

840 : ◆4ABoneiQ :01/12/22 13:54 ID:???
>>825
本読んでもわからない知識ならほかの買うかあきらめて掲示板削除しろ。
どうせ1年以上荒らされているなら来ているやつもいないだろうし
それともネタ?
どれにしてもすれ違いです。

841 :825:01/12/22 13:58 ID:oibAhbUr
>840さま

いや、今でも一日300人ぐらい来てくださっているので・・・。
では、サブルーチンについて教えて頂け無いでしょうか・・。
掲示板のソースに ( ) で囲んでサブルーチン
(つまり導入したいCGIのソース)を押し込むだけで
機能は追加されるのでしょうか・・?
宜しくお願いします。

842 : ◆4ABoneiQ :01/12/22 14:00 ID:???
本で調べてください。

843 :名無しさん@お腹いっぱい。:01/12/22 14:02 ID:oibAhbUr
本を見るとそのようなかんじで書いてあるのですが・・、
実際の意味がよく解りません・・・助けて下さい
お願いします。

844 :名無しさん@お腹いっぱい。:01/12/22 14:06 ID:???
>>839
Qなんて無かったよね ^―^;
今環境無いからテスト出来ないんで、ここので試してみて
http://www.rfs.co.jp/sitebuilder/perl/func/03.html#pack
確か前にdouble吐けなくて悩んだ記憶が・・・・

845 :名無しさん@お腹いっぱい。:01/12/22 14:07 ID:???
>841
貼り付けただけだと(多分)動かないよ ^―^;

846 :名無しさん@お腹いっぱい。:01/12/22 14:12 ID:oibAhbUr
>845さま・・・ありがとうございます。感謝です・・(泣

例えば、 レンタル掲示板のソースが、
最後
exet;
で終わったします・・。そして、そのあとあるいは途中に、
( ) で囲んで、
その中に拾ったスクリプトを入れればいい・・じゃダメなのでしょうか?
よろしくおねがいします・・本当に困っているのです・・。
又、 ( ) とするべきなのか、{ }とするべきなのかも解らないのですが・・うう・・・。

お願いします。
助けて下さい・・おねがいします・・・。

847 :名無しさん@お腹いっぱい。:01/12/22 14:13 ID:???
>>836
UG地方の特産品です。他にもNNTP、echo、telnet等など有り
これにログインマクロとか、ばればれフルコネクションの激遅スキャナとか
合わせたのが有るんだよ。 多分日本人だと思うが

848 :Kusakabe Youichi :01/12/22 14:27 ID:???
In article >>846, 名無しさん@お腹いっぱい。//846 wrote:

>exet;

エラーですね。

>その中に拾ったスクリプトを入れればいい・・じゃダメなのでしょうか?

動けばそれで良いのでしょう、プログラムは書いた通りにしか動きませんよ。

>( ) とするべきなのか、{ }とするべきなのかも・・

どちらでも動かないと思うので結果は同じでしょうね。

>お願いします。

多分サポート出来る限界を大きく超えているので無理ですね

849 :名無しさん@お腹いっぱい。:01/12/22 14:37 ID:???
>>825
>>832も書いているが、ここは825の一連の書き込みにあるIPの抜き方やCGI
スクリプトの動かし方を尋ねるスレじゃない。825は自分じゃ気付いてない
ようだが、スレの趣旨に反する君の執拗な書き込みそれ自体も、十分荒らしと
呼べる行為だよ。

掲示板の荒らしが限度を超えるなら、その旨を相手にきちんと伝えた上で、な
お止まないようなら警察に行くべき。それなりの理由で警察が動けばISPもロ
グを出すだろうし、825がIPを抜く必要も無い!

一方で、あれこれ訊いて仮に825が荒らしのIP抜けたとして、どうするわけ?
# まさかattackの方法をまた訊きに来るわけじゃないよな?(藁

825が不正アクセスや、迷惑メールなんかで反撃すれば法律に引っかかるだ
ろうし、IP判定で接続拒否してもIPが固定じゃなかったり、proxy使ったりで、
そういう輩なら手を変えて結局同じことを繰り返すと思うよ。そんなことして
も一向に状況は改善されないor825がいいように翻弄させられる(泣き寝入
りする)だけで、逆に相手に825の反撃を逆手にとって合法的に追求できる
可能性も与えてしまう。つまり自分の立場も悪くなるってこと。

いずれにせよこの話題を続けるのはスレ違いだとと思うので、法律板で相談す
るなり、技術的な話に絞った上で適切なスレを選ぶなりして下さい。少なくと
もこのスレの趣旨には沿わない内容です。
長文sage。

850 :名無しさん@お腹いっぱい。 :01/12/22 14:44 ID:???
先生まで登場かよ (´д`;)
>>846
今の状態じゃ説明しきれないよ、ここに書いたとしてもそれを理解出来ないだろ?
だから今持ってる本を先に良く読んでからまたおいで。

851 :名無しさん@お腹いっぱい。:01/12/22 14:46 ID:fxlPljic
>849さま

ええと、法的にはどうにもなりません。
掲示板嵐は犯罪でもなんでもないので、(名誉毀損などなければ。)
それはムリな話です・・。
プロバイダに文句を言われればやめるので、あるいはアカ取り消しですし・・。
以後も、同様のユーザーをすぐにログを洗ってもらえるようになりますし・・。
アタックなんてできません・・。
今色々やっています・・またあとできます・・。同か宜しくお願いします皆様。

852 :839:01/12/22 14:49 ID:IddObTYJ
>>844
どうもです。いろいろ試して、

$l1 = int($x/0xffffffff);
$l2 = $x % 0xffffffff;
print pack 'LL', $l2, $l1;

これで、求めるものが出ているような気もしますが
あんまり自信もなし。。。

Q は、 perldoc -f pack すると

q A signed quad (64-bit) value.
Q An unsigned quad value.
(Quads are available only if your system supports 64-bit integer values _and_ if Perl has been compiled to support those. Causes a fatal error otherwise.)

とあって、これしかねぇ〜と喜んだのですが。。。
Win32ではサポート外だったようで。ハァ

853 :名無しさん@お腹いっぱい。:01/12/22 14:50 ID:???
今年もあとわずかなんだなあと思います。

854 :名無しさん@お腹いっぱい。:01/12/22 14:57 ID:oibAhbUr
http://www.777ch.net/mars/kboard.cgi

すみません。
今パッと取った掲示板なのですが、このサイトは
フリーで一切HTMLなどをいじっていません・・。無料BBSです。
簡単に作れてしまうサイトです。
この掲示板で、自分でCGIをつけたしたりすることは可能でしょうか?
教えて下さいお願いします。

855 :名無しさん@お腹いっぱい。:01/12/22 15:01 ID:???
増殖してるし(w

856 :Web板初心者スレ886:01/12/22 16:15 ID:???
。。。あーいーたーたーたーた。
Perlに関して教えて下さいと言う質問かと思ったので
こっちに回したのですが、とんでもない厨だったようですね。申し訳ない。
http://pc.2ch.net/test/read.cgi/hp/1007538322/884-

857 :名無しさん@お腹いっぱい。:01/12/22 17:17 ID:???
大量にレスついてるから何かと思ったよ。

858 :名無しさん@お腹いっぱい。:01/12/22 22:57 ID:???
>>852
$x に 64bit int 入れてちゃんと動いてる?
実は double になってるかもよ。

859 :名無しさん@お腹いっぱい。:01/12/22 23:34 ID:t/VCgPdO
関数名つける時とか規則的に名前つける?
英語名にするとか
名前の前に_をいれるとか。どう?
ちなみに先頭に_をいれとけば予約語とかぶる事って無いですよね?

860 :名無しさん@お腹いっぱい。:01/12/23 00:58 ID:MEqShOBi
サブルーチン内のreturn関数について訊きたいです。
あるサブルーチンで出た結果を$resultに代入したとします。
これは必ず
return $result;
としなければならないのでしょうか。
returnの使い方がいまいち分かりません。
どういう時に使うもの/使わなければならないものものなのでしょうか。

perldocをみてもよく分かりませんでした・・・。
宜しくお願いします。

861 :age:01/12/23 01:01 ID:kSQE2xUF
ageruhituyouganaikedo

862 :名なひ:01/12/23 02:13 ID:M1oj4o+A
>>860
Perlのサブルーティンは戻り値返さなくてもよかったと、思う。
return();省略したら最後に評価した式が勝手に戻り血にできる、ようなきがした。

863 :名無しさん@お腹いっぱい。:01/12/23 03:01 ID:???
>>859
規約だけ守れば好きなようにやればいい
コーダのレベルは大体この辺で分かるけどな(笑

864 :名無しさん@お腹いっぱい。:01/12/23 03:45 ID:???
識別子に英語を使ったつもりでアホなスペルミスをおかすよりは、
ローマ字にしておくほうがまだ救いがある。

865 :859:01/12/23 04:34 ID:???
>>863
やっぱ熟練さん達はそうなんですか・・・。
経験値積むしか無いようですね。
>>864
自分の場合怪しいのは辞書チェックですw

866 :名無しさん@お腹いっぱい。:01/12/23 15:31 ID:cDgNamdE
foreach (<IN>) {
  print $_;
}
と、
print <IN>;
ってメモリ消費量違ったりするんでしょうか?

867 :分からないくせに生意気なことを言ってみる:01/12/23 15:35 ID:???
>>866

Perlでメモリーを気にするのはナンセンス

868 :名無しさん@お腹いっぱい。:01/12/23 15:43 ID:???
>>860

returnって関数なの?

869 :868:01/12/23 15:45 ID:???
うわ!本当だ。あれの237ページに組み込み関数として載っていた(汗 

870 :名無しさん@お腹いっぱい。:01/12/23 15:46 ID:???
>>868 んなわけない。

871 :名無しさん@お腹いっぱい。:01/12/23 15:47 ID:???
>>870

いや、関数らしいぞ。プログラミングPerl改訂版(JP)の237ページに載っている。

872 :名無しさん@お腹いっぱい。:01/12/23 15:51 ID:???
useもrequireもlastもnextも関数かよ。なんだこの言語は・・・・

873 :名無しさん@お腹いっぱい。:01/12/23 15:51 ID:???
>>871 なぜかperldoc perlfuncにも載ってるね。さすがPerlだ(w

874 :名無しさん@お腹いっぱい。:01/12/23 15:56 ID:???
>>872 gotoも関数だね。q//関数に至っては、もはやPerlにおける「関数」ってのは
他の言語とは意味が違うとしか思えないよ。

875 :名無しさん@お腹いっぱい。:01/12/23 15:58 ID:???
>>874

ifやforも関数にすればよかったのにね。 (w 

876 :JAPU ◆JAPUTeX. :01/12/23 16:05 ID:???
>>867
過度にメモリを気にするのはナンセンスだけど、ある程度は考えようぜ。(苦笑)
(>>866 の場合は while 使うのが吉。)

877 :名無しさん@お腹いっぱい。:01/12/23 23:28 ID:???
return関数とかgoto関数とか言うと
突っ込み隊が一杯釣れそうだな (・∀・)

878 :名無しさん@お腹いっぱい。:01/12/24 01:49 ID:???
LWPで代理サーバを使う事は出来ますか?
まだドキュメント読んでる最中なんで、可否が解れば幸いです ^^

879 :JAPU ◆JAPUTeX. :01/12/24 03:13 ID:???
>>878
"proxy" を検索すれば0.3秒で分かります。

880 :名無しさん@お腹いっぱい。:01/12/24 04:33 ID:???
チャットや掲示板を軽くする方法ってないでしょうか?

881 :名無しさん@お腹いっぱい。:01/12/24 05:44 ID:???
>>880
有るか無いか聞いてどうすんの?
>いらっしゃーい、perlのコーディングで困ってる人のスレです。
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

882 :名無しさん@お腹いっぱい。:01/12/24 06:24 ID:uH077O8Q
forkで生成するプロセス数を制限するのに
常套手段って有りますか
例えば上限を5とすると、5を超えるとsleep秒待ってリトライ
と言う感じで実装したいのです

883 :821@v(・ v ・)v:01/12/24 08:10 ID:???
_gunzipさんどうもッス、xsって何だそりゃと思って読んでなかったっす
Socket.xs、ちょっと開けて読んでみましたけど、難解ですねー
と言うかこれってスパゲッティー?
頑張りますー 、ありがとうっす。

884 :名無しさん@お腹いっぱい。:01/12/24 15:39 ID:CE1hGHz4
SSIでクッキーを食べさせる方法っていうのがあると聞いたのですが、
具体的な方法をご存知の方がいらっしゃいましたらご教授お願い致します。

885 :名無しさん@お腹いっぱい。:01/12/24 16:03 ID:n/gVuaks
>>884
JSで書き出せば可能かと。

886 :名無しさん@お腹いっぱい。:01/12/24 16:10 ID:???
>>884
何でSSIなん? つーかJavaスクはWEB製作だろっつの >ム板さん
Googleで「Javascript」「Set-Cookie」で検索してヒットしたものを
SSIでexeccmdすれば良いの、ソースは検索すれば100万件位出てきます 

887 :田イ戈:01/12/24 17:44 ID:???
>>885 の方法か、あるいは

<meta http-equiv="Set-Cookie" content="cookiename=cookievalue">

か。Perlとは関係ないのでスレ違い。
JavScript を execcmd って何だろう?

888 :名無しさん:01/12/24 17:56 ID:???
SSIでって言ってるのに
<meta http-equiv="Set-Cookie" content="cookiename=cookievalue">
って何だろう?

889 :名無しさん@お腹いっぱい。 :01/12/24 18:01 ID:???
厨房が厨房に答える、これ最強

890 :886 :01/12/24 18:31 ID:???
へ? SSIでベタ文字includeするの>>887
>>888>>889 煽るなー

891 :884:01/12/24 21:50 ID:zH2D792B
書き方が下手ですみません。
execcmdでパールで作ったCGIを呼び出すのですが、
それをクッキーに食べさせる方法を聞きたかったのであります。

JAVAスクリプト使うか
<meta http-equiv="Set-Cookie" content="cookiename=cookievalue">
を使えばいいのですね。
JAVAスクリプトはまだやったことがないので
後者を使ってみます。

どうもみなさんありがとうございましたm(__)m

892 :名無しさん@お腹いっぱい。:01/12/25 00:55 ID:SHv7CWw6
while(<FILE>){~~~;
てやるのと@data = <FILE>
とかに代入して処理するのだと@dataの方が
メモリ使わなかったりするのですか?

893 :892:01/12/25 00:59 ID:SHv7CWw6
間違えました。
@dataの方がメモリ使ったりするのですか?

894 :名無しさん@お腹いっぱい。:01/12/25 01:02 ID:???
>893
します。

895 :名無しさん@お腹いっぱい。:01/12/25 01:04 ID:???
>>893
少し上のレスくらい読んでみたらどーよ。

896 :892:01/12/25 01:19 ID:SHv7CWw6
>894-895
どうもありがとうございます。

読んでたんですけど、低次元なレベルなもので
代入だと別なのかも・・・と思いまして。

897 :892:01/12/25 03:25 ID:qZ0BU43G
あ、あと
WHILEで処理してる間に(これは読み取りのみで開いた)
別の処理が書きこみしても大丈夫でしょうか?
例えば

#処理1
open (FILE,./file.dat)
while(<FILE>){〜〜〜;}
close FILE;

#処理2
open (FILE,">./file.dat")
print FILE $hogedata;
close (FILE);
みたいな感じでAさんが処理1をやってる場合に
Bさんが処理2をやるというのは問題無いですか?

898 :892:01/12/25 03:27 ID:qZ0BU43G
あっ、訂正
close (FILE);です。

899 :名無しさん@お腹いっぱい。 :01/12/25 04:08 ID:???
問題無いですよ好きなようにやって下さい

900 :遅いか:01/12/25 07:28 ID:???
>>892
ファイルハンドルはリストコンテキストだと全てを(メモリに)読み込み
スカラーコンテキストだと一行読み込みます。
foreach(){}の()とか配列、リストを左辺に置く代入文は右辺は
リストコンテキストで評価されます。
面倒なときはscalar(オブジェクト)で強制的にオブジェクトをスカラーで評価できます。
while(<IN>){}は$_=<IN>の省略なのでスカラー評価でメモリは抑え目です。

901 :名無しさん@お腹いっぱい。:01/12/25 07:44 ID:???
>>897
問題ある。
同時に1つのファイルを読み書きすると
おかしなデータを読み込むかもしれない。
処理1側で @data = <FILE>; とやっていてもダメ。
flock関数について調べると吉。同時に読み書きできないようにできる。

蛇足だけどPerl5くらいから,組み込まれたり事前に宣言されている関数は
open FILE, '> ./file.dat';
close FILE;
みたいに ()無しでも使える。

902 :イヤーソ:01/12/25 12:56 ID:???
()なしで書くのってなんかイヤ

903 :名無しさん@お腹いっぱい。:01/12/25 16:46 ID:mgSxI3Lq
配列の中に1,2,3という数字があったとする。
それを順に並び替えて(123、132、213、231・・・・・のように)
全パターン出力する書き方を教えてください。
よろしくお願いします

904 :名無しさん@お腹いっぱい。:01/12/25 17:17 ID:???
@ary=sort(@ary); # 分からない時は関数を検索しよう

905 :903:01/12/25 17:27 ID:???
sortで全パターンが出力されるのですか?

@a="A","B","C";

画面上で
ABC
ACB
BAC
BCA
CAB
CBA
の表示させたいのです。

よろしくお願いします。

906 :名無しさん@お腹いっぱい。:01/12/25 17:36 ID:???
>>905
それってPerlの話?それともアルゴリズムの話?
Perlの話なら、とりあえず疑似コードかCでアルゴリズム書いてみ。

907 :名無しさん@お腹いっぱい。 :01/12/25 17:37 ID:???
Googleに行ってprintを検索しろ
もし分かったら二度と戻ってくるな
もし分からなかったらお前は正真正銘完全完璧にプログラムには
向いてないからやっぱりもどってくるな、諦めろ

908 :名無しさん@お腹いっぱい。:01/12/25 17:43 ID:???
ここまで来るとおちょくられてるとしか思えんな(笑

909 :名無しさん@お腹いっぱい。:01/12/25 17:46 ID:???
#!/usr/local/bin/perl

&permutation( [], 1 .. 999999 );

sub permutation{
  my $stack = shift;

  unless( @_ ){
    print "@$stack\n";
    return;
  }

  for( my $i=0; $i<@_; $i++ ){
    push @$stack, $_[$i];
    &permutation( $stack, @_[0..$i-1], @_[$i+1..$#_] );
    pop @$stack;
  }
}

何で皆怒ってるの?

910 :名無しさん@お腹いっぱい。:01/12/25 17:46 ID:???
907は何か勘違いしているとか。

911 :903:01/12/25 17:46 ID:???
全通り並び替えとprintとどこが関係あるの?
はてはて?

912 :名無しさん@お腹いっぱい。:01/12/25 17:49 ID:???
>>907
お前みたいに相手の言っていることも性格に読み取れないようなヤツは
正真正銘完全完璧にプログラムには向いてないからやっぱりもどってくるな、諦めろ(p

913 :デフォルトの名無しさん :01/12/25 17:53 ID:???
悲惨な人たちですな 

914 :名無しさん@お腹いっぱい。:01/12/25 20:23 ID:Ca6wsnSB
Win32で動くPerl v5.6.1を自分のパソコン(Win98)で使ってるんですけども、
NET::FTPモジュールが入ってるかどうか確認するにはどうしたらいいでしょう?

915 :名無しさん@お腹いっぱい。:01/12/25 20:31 ID:???
ftp鯖のアドレスとユーザーIDを入力してスタートボタンを
押すとパスクラックしてくれるCGIの作り方教えて

916 :892:01/12/25 20:45 ID:Is9/IN8s
>>901-902
レスありがとうございます。
度々申し分けないのですが、
#処理1
open (FILE,./file.dat)
while(<FILE>){〜〜〜;}
close FILE;
〜〜〜〜〜〜〜〜; #この処理は重要では無いので
〜〜〜〜〜〜〜〜; #処理1で空データを読み取ってしまっても構わない
#処理2
open (FILE,./file.dat)
while(<FILE>){〜〜〜;}
close FILE;

#処理3
open (FILE,">./file.dat")
print FILE $hogedata;
close (FILE);

上のような一連の流れの場合、処理1ではそのまま読み取って(ロック無しで)
処理2で再度読み取り、この読み取ったデータを元に処理3で
ファイルに書きこむ場合は処理2の前でロックすれば良いのでしょうか?

あと私の覚えてる範囲だとロック処理を行う理由は
別のユーザーが実行したプロセスが
ユーザー1のプロセスがファイルに書きこんでる最中に
ユーザー2が読み取ると空のデータを読み取ってしまい
このデータを元にファイルに書きこむと空データになってしまう。
それを防ぐためにロック処理をしてる。
と覚えてるのですが、他にも理由というのはあるのですか?

917 : :01/12/25 21:37 ID:???
書き込みに影響ある範囲で、だからいいんじゃないの?
スクリプトの内容がよく分からんけど

918 :名無しさん@お腹いっぱい。:01/12/25 22:57 ID:???
何だか意味が分からないけど、lock(少なくともflockシステムコール)は
ただの紳士協定です。
有るプロセスが排他ロック(LOCK_EX)すると他のプロセスは排他ロック(LOCK_EX)
が出来なくなるだけで、共有ロックは勿論、読み込みも書き込みも自由に出来るということです
今書いてるのはCGIみたいですが、ややこしければ深く考えずに2行目でロックして
exitする前にアンロックでも大抵は十分です

919 :名無しさん@お腹いっぱい。:01/12/25 23:00 ID:JNXKMJjK
>917
そうですか。スクリプトの内容というか、
よく上のような場面の処理1で、ロックがかかってるか
調べてから読み取った方が良いのかな?
と考える場面があったので(mkdir方式でロックしてます)
レスありがとうございます。

920 :名無しさん@お腹いっぱい。:01/12/25 23:00 ID:???
あ、もし秒間1000回アクセスとか
処理時間1分とかなら別ですよ :-)

921 :名無しさん@お腹いっぱい。:01/12/25 23:16 ID:???
>>914
perldoc -l Net::FTP
とか
perl -e "use Net::FTP"
など

922 : :01/12/26 00:01 ID:???
>>919
処理1はどうでもいいわけでしょ?
処理2〜3で扱うデータとの整合性が必要ないならそれでいい
ただタイミング的に(別プロセスとの関係で)おかしいデータを取り得るって
ことじゃないの?
それがいやなら(=整合性は要らなくても正しいデータが欲しいなら)処理1の前に
ロックしてしまえと

923 : :01/12/26 00:34 ID:???
print "aa" if $b;
こういう書き方って古いPerl(Perl5よりまえ?)でも使えるんでしょうか?

924 :名無しさん@お腹いっぱい。:01/12/26 00:46 ID:???

     ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ピュ.ー ( ・∀・)< わーぃ♪
  =〔~∪ ̄ ̄〕 \________
  = ◎――◎         

925 :名無しさん@お腹いっぱい。:01/12/26 00:51 ID:gQqjt0L+
if修飾子ってPerl5からじゃなかったけ?
それはそうと>>815
できないこともないけど1度やったら捕まるね。

926 :名無しさん@お腹いっぱい。:01/12/26 00:53 ID:???
ごめん>>915

927 :名無しさん@お腹いっぱい。:01/12/26 01:59 ID:ONuCP+Nn
ハッシュのキーにパッケージ名を入れたいのですが、どうもうまく書けません。
$hash{__PACKAGE__} = "hogehoge";
だと、"__PACKAGE__"と言うキーのハッシュ値ができてしまいます。
今は、
$packagename = __PACKAGE__;
$hash{$packagename} = "hogehoge";
と2行で書いているんですが、もう少しスマートな書き方はありませんか?

928 :名無しさん@お腹いっぱい。:01/12/26 02:46 ID:xizBefjb
package名っつーことで、なんか特別な事があるのかも知れないけど、
defined $hash{'keyname'}
とかそーゆーんじゃなくて?

929 :名無しさん@お腹いっぱい。:01/12/26 03:20 ID:???
>>927
$hash{__PACKAGE__}は $hash{"__PACKAGE__"}と
等価だから、基本的にはそのやり方しかないんじゃないかなぁ。

$hash{''. __PACKAGE__} =1;とかでもいけることはいけるけど。。。

930 :名無しさん@お腹いっぱい。:01/12/26 03:42 ID:???
>>918>>922
そうですね。
レスありがとうございます。

931 :914:01/12/26 03:52 ID:FVfGl49U
>>921
ありがとうございます。

932 :名無しさん@お腹いっぱい。:01/12/26 08:23 ID:???
>>927
$hash{+__PACKAGE__}

933 :JAPU ◆JAPUTeX. :01/12/26 09:36 ID:???
>>916 >>918

LOCK_EX されると、LOCK_SH で flock を呼び出したときもブロックされます。
(もちろん、LOCK_NB ビットも立てた場合はそのまま失敗する。)

通常、書き込みを伴う処理については LOCK_EX を、読み込みのみの処理のと
きは LOCK_SH を指定します。これだと、書き込みするときは他のプロセスか
ら読み書き両方できず、読み込みする場合は他のプロセスから読み込みのみ可
能となります。

あと、open FH, "> ..." とした場合はその瞬間にファイルサイズが 0 になっ
てしまうので、ロックする意味がないです。>> とか +< で open しておいて、
truncate とかするのがよい。

蛇足ながら、ファイルをクローズ、またはプロセスが終了した時点でロックは
解除されます。

934 :名無しさん@お腹いっぱい。:01/12/26 14:44 ID:???
perlの関数呼び出しはCall by referenceだと思うのですが
func ($foo,$hoge,$poyo,$baz,$biz);
のように長い引き数が有る関数の呼び出しで、func内で@_に入った値を
任意の名前にエイリアスする方法は有りませんか?
少し前まで直接$_[3] = '100'; の様に代入してたんですが、とても読みにくいので
今はリファレンスを貰ってます
でも、これでも参照外しが大変なので、せっかく参照呼出しなのだから
何か良い方法が無いかなと思ってしまって・・・
よろしくお願いします。

935 :名無しさん@お腹いっぱい。:01/12/26 14:48 ID:Y7QEtnjd
さげてしまった (^^;
func内で
my (*foo,*hoge,*poyo,*baz,*biz) = \@_;
の様にして一発でエイリアスを張る事って出来ないですかね。。。

936 :名無しさん@お腹いっぱい。:01/12/26 15:12 ID:???
local( *x, *y, *z ) = map { \$_ } @_;

Perl って Call by reference じゃないと思うけど。。

937 :名無しさん@お腹いっぱい。:01/12/26 15:44 ID:???
Socketを使うときに相手への環境変数提示は
print S "Referer: $ENV{'HTTP_REFERER'}\r\n";
print S "User-Agent: $ENV{'HTTP_USER_AGENT'}\r\n\r\n";
だけで十分ですかね?
やっぱり全部送ってやったほうが良いでしょうか?
また、そう言う場合もっとすっきりやる方法はありませんでしょうか?

938 :名無しさん@お腹いっぱい。:01/12/26 15:46 ID:???
けーすばいけーすでちゅ (・.・)

939 :名無しさん@お腹いっぱい。:01/12/26 16:33 ID:???
{
my ($out, $in1, $in2) = (0 .. 2);
sub foo{

# $_[ $in1 ] と$_[ $in2 ] を使って何か演算をする

$_[ $out ] = $result;
return 1; # 成功
}
}

こんなのはどうだろうな。まぁ馬鹿げているが。

940 :名無しさん@お腹いっぱい。:01/12/26 16:39 ID:???
>>934
事前にこんなようなの書いとけばできる。
sub func(\$\$) {
 local($one,$two) = @_;
}

941 :名無しさん@お腹いっぱい。:01/12/26 17:40 ID:o9s6aZoq
>>933
ひょっとして 頻繁に起動されるスクリプトでLOCK_SHを使っている場合,
LOCK_EXを掛けようとすると延々待たされますか?

942 :名無しさん@お腹いっぱい。 :01/12/26 17:48 ID:???
何でやねん、つーか延々とか頻繁のニュアンスがワカラソ
そんな彼方にはプロセス丸ごと排他を推奨 

943 :名無しさん@お腹いっぱい。:01/12/26 17:50 ID:???
>>941
LOCK_SHしてるやつがいなくなるまで待つ。
だからクリティカルセッションはなるべく短めにすること。

944 :941:01/12/26 18:02 ID:???
>>942-943
ありがとう。やっぱそうなるんですか。
読み込みもLOCK_EXにすることにします。

945 :927:01/12/26 18:21 ID:???
遅レスすみません。
>>932の方法でやろうと思います。
みなさんありがとうございました。

946 :934 :01/12/26 19:03 ID:Y7QEtnjd
皆さん速レスありがとうございます、勉強になります。
押し切るとlocal使う事になりそうですね、、、
Call by referenceはCの様に関数間で値をmoveするんじゃなくて、
見かけ上、引き数が呼び出し先に突き抜けてくるという意味で書きました
これはプロトタイプでも解決出来ないですよね、、、、
取り合えずconstな値はローカルにコピーして、書き換える時は@_を直接
書き換えることにします  (でもやりにくいなぁ・・・

947 :940:01/12/26 19:14 ID:???
ごめん,写し間違えてた。
sub swap(\$\$) {
 local(*one,*two) = @_;
 ($two,$one) = ($one,$two);
}
でリファレンス渡しになる。
使う時はswap($aaa,$bbb); みたいに書く。

948 :名無しさん@お腹いっぱい。 :01/12/26 19:52 ID:???
>>946
参照呼出しで合ってる、俺も前にちょっと考えてenumしたりしたけど結局大きい変数とかは $_[] に書いてるよ

949 :916:01/12/26 21:06 ID:???
>>933
>open FH, "> ..." とした場合はその瞬間にファイルサイズが 0 になっ
てしまうので

データが空になる瞬間を間違えて覚えてました。
レスありがとうございます。

950 :JAPU@コミケも近いですね ◆JAPUTeX. :01/12/26 21:15 ID:???
とりあえず、

LOCK_SH (shared) だけならいくらでも同時に可能。読み込みだけの時はこれ
だけ使っておけ。

LOCK_EX (exclusive) は他のプロセスが LOCK_EX / LOCK_SH しているとダメ。
LOCK_NB (non-blocking) を指定していなければ、他のロックしているプロセ
スがロックをやめるまで待ち続けます。書き込みを伴うときはこれ使っておけ。

説明悪い?

LOCK_SH は LOCK_SH のみと共存可能。
LOCK_EX は LOCK_EX とも LOCK_SH とも共存不可能。

って書いた方がいいのかな。

>>944
なんでそんな結論になるかなぁ...

951 :941:01/12/26 21:46 ID:???
すいません。
「別のスクリプトから書き込む時にLOCK_EXを掛けようとすると延々〜」って書いてたつもりでした。。。

952 :名無しさん@お腹いっぱい。:01/12/27 02:01 ID:K1xvVgg1
foreach(0..10){
などで0〜10まで順に実行している時
0〜10の値は何に格納されているのですか?
http://tohoho.wakusei.ne.jp/wwwperl1.htm#Tokushu
ここを見たのですが、乗って無いみたいなので。。。
お願いします。

953 :952:01/12/27 02:06 ID:K1xvVgg1
ちょっと質問違いました!
foreach(@array){
てした時に何回目なのかを格納する変数を教えて下さい。でした。
951だと$_
てなっちゃいますね。すいません。

954 :んとねんとね:01/12/27 02:22 ID:???
ない、いじょ

955 :名無しさん@お腹いっぱい。:01/12/27 02:27 ID:K1xvVgg1
無いのですか!?
これだけいろいろな特殊変数があるのに!意外だ…。
ではforeach(@array){
$tmp++;

とやって数えるしかないのですね。。。なるほど。
即レス感謝です。
ありがとうございました。

956 :かもかも:01/12/27 04:31 ID:GPy3eH+b
@a= qw(1 5 2);
for ( $[ .. $[+$#a ){
print "id= $_, value= $a[$_]\n";
}

957 :名無しさん@お腹いっぱい。:01/12/27 05:20 ID:06m3pfEi
>>956
なるほど〜。変数では無いですけど、
そういう方法もありますね。
# $[+$#a
# ここでなんで$[を足すのかがまだわからんですけど
レスどうもです。

958 :かもかも:01/12/27 05:26 ID:STachx1U
配列のインデックスを0からとか1から始めるとかを設定するのが$[変数
なのでR!

959 :名無しさん@お腹いっぱい。:01/12/27 05:40 ID:???
かもかも、カコイイ♥

960 :名無しさん@お腹いっぱい。:01/12/27 09:06 ID:???
$count++; して数えとけ。

961 :そろそろ次スレを・・・:01/12/27 09:38 ID:???
$[って今は使われて無い(というか、使うなと言われている)変数だから、この場合は素直に 0..$#aでも良いと思うが・・・

962 :名無しさん@お腹いっぱい。:01/12/27 10:23 ID:???
>>957
$[ は足さなくてよい。ていうか、足しちゃだめ。
$#aで、$[ をバイアスとする@aの最後の添え字の意味になる。
perldoc perldataでは、以下のように説明されている

     scalar(@whatever) == $#whatever - $[ + 1;

>>958
デフォルトの$[ == 0だから動いただけ。
  local $[ = 1;
を965の先頭に入れて動かしてみ。

てことで、>>958新スレよろしく!

963 :えいじ:01/12/27 19:20 ID:VRi8wtO1
open(OUT,+>filename.txt);
print OUT "あいうえお\n";
close(OUT);

でfilename.txtが新規作成されるんですけど
http://www.****.com/ のトップのディレクトリだけは
新規作成されません。
どうしたら解決できるかご存知の方おられますでしょうか。
よろしくお願いいたします

964 :名無しさん@お腹いっぱい。:01/12/27 19:51 ID:???
open(OUT,+>filename.txt)||die("$!");
にしてエラーを見てみ

965 :名無しさん@お腹いっぱい。:01/12/27 19:54 ID:???
wwwのドキュメントルートと鯖のルートの違いを判ってないに1票

966 :名無しさん@お腹いっぱい。:01/12/27 19:54 ID:???
つーかこの馬鹿スレ立てやがった  (呆

967 :名無しさん@お腹いっぱい。:01/12/27 20:16 ID:???
>>965
同意します。

968 :名無しさん@お腹いっぱい。:01/12/27 20:22 ID:???
>>965

なんだ。そういう勘違いをしていたのか。

969 :名無しさん@お腹いっぱい。:01/12/27 20:26 ID:???
ドキュメントルートってなんですか? とか質問するに一票。

970 :名無しさん@お腹いっぱい。:01/12/28 01:03 ID:???
マルチ無視
わざわざAA張って煽る事すらウザイ

971 :名無しさん@お腹いっぱい。:01/12/28 04:07 ID:OJh+njZn
IPってダイヤルアップで再接続すると微妙に変わるものですよね?
再接続しても同一ユーザーだと特定する方法ってないんですか?

972 :名無しさん@お腹いっぱい。:01/12/28 04:12 ID:???
IPは何回繋いでもVersion4だろ w

973 :名無しさん@お腹いっぱい。:01/12/28 04:18 ID:???
>>971
パソコン初心者板で聞いてみて。http://pc.2ch.net/pcqa/index.html

974 :名無しさん@お腹いっぱい。:01/12/28 05:07 ID:???
>>972
おいそれは屁理屈に近いだろ。このくらい教えてやれよ。

975 :名無しさん@お腹いっぱい。:01/12/28 06:33 ID:???
>方法ってないんですか?
有るよ

976 :有るなら:01/12/28 14:25 ID:???
教えれ

977 :プッ返し  げら:01/12/28 14:30 ID:???
↑ (´,_ゝ`)プッ (´,_ゝ`)プッ (´,_ゝ`)プッ

978 :名無しさん@お腹いっぱい。:01/12/28 15:17 ID:???
先生!画像アップロード掲示板でmidファイルを使用したいのですが
どうしてもうまく改造できません..。
よければアドバイス願いします。

979 :名無しさん@お腹いっぱい。:01/12/28 15:27 ID:???
>>971

そのこととPerlとどんな関係があるんだ?

980 :名無しさん@お腹いっぱい。:01/12/28 15:29 ID:???
>>978

if($filename=~m/\.mid$/)
print "Content-Type:audio/midi";

981 :980:01/12/28 15:30 ID:???
Perlは実行文がひとつでも{と}で囲まなければならなかったかな?

982 :980:01/12/28 15:31 ID:???
一応こっちで

if($filename=~m/\.mid$/){print "Content-Type:audio/midi\n\n";}

983 :978:01/12/28 16:12 ID:???
>>980
先生!ありがとうございます!!
ある、画像アップロード掲示板を使用しているのですが
それはイメージ(GIFやJPEG)画像しかうpできないんです。
それじゃーとりあえず982の記述を適当に書き込んだら良いのでしょうか?

984 :982:01/12/28 17:06 ID:???
そういえば、出力するときはCGIは通さないか・・・・

>>983
コードを見ればどこかに受け入れ可能な拡張子を判断するところがあるだろ?
そこに.midを付け加えればOK

985 :984:01/12/28 17:09 ID:???
>>983

982の記述は必要ないです。

986 :1000:01/12/28 21:18 ID:???
1000

987 :sage:01/12/28 22:53 ID:???
sage

988 :sage:01/12/28 22:53 ID:???
sage

989 :sage:01/12/28 22:53 ID:???
sage

990 :sage:01/12/28 22:53 ID:???
sage

991 :sage:01/12/28 22:53 ID:???
sage

992 :sage:01/12/28 22:53 ID:???
sage

993 :sage:01/12/28 22:53 ID:???
sage

994 :sage:01/12/28 22:53 ID:???
sage

995 :sage:01/12/28 22:53 ID:???
sage

996 :sage:01/12/28 22:53 ID:???
sage

997 :sage:01/12/28 22:53 ID:???
sage

998 :sage:01/12/28 22:53 ID:???
sage

999 :sage:01/12/28 22:53 ID:???
sage

1000 :sage:01/12/28 22:53 ID:???
sage

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

271 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)