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

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

【Perl 】初心者コーナーPart7

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

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

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

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://corn.2ch.net/test/read.cgi?bbs=php&key=988809842&ls=50
CGIの質問はこちら【CGIだけど、なんか質問ある?part3】
http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&ls=50

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

2 :名無しさん@お腹いっぱい:01/09/12 13:04 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

[ひまぢん氏のミラー]
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/09/12 13:05 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 :名無しさん@お腹いっぱい:01/09/12 13:05 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

5 :名無しさん@お腹いっぱい:01/09/12 13:09 ID:???
文面は伝統だったのかな?・・ 漏れのBOOKMARKも適当に足しました。

6 :名無しさん@お腹いっぱい。:01/09/12 13:26 ID:qAAI57Mk
オツカレー

・Linuxの日本語マニュアル
http://www.linux.or.jp/JM/
sendmailとかgzipとかのマニュアルも読める。

7 :名無しさん@お腹いっぱい。:01/09/12 14:10 ID:???
>>1
ゴクロウサマ
               
・FreeBSDの日本語マニュアル
http://www.jp.freebsd.org/man-jp/

8 :ひきこもりたいっ:01/09/12 14:26 ID:???
前スレ930です、向こうに書こうとしたら誘導されちゃった ^^
931さん932さんどうもです。
取り合えず連装配列が簡単そうなので、これでやってみる事に
しました。
パッケージも使ってみようと思います、ありがとう

9 :名無しさん@お腹いっぱい。:01/09/12 16:35 ID:KyL5/mNU
新しくなったのでもう一度

TwnLounge Faith editionというスクリプトにクッキーを発行させたくて
悪戦苦闘しています。KENTさんのスクリプトのクッキー発行・取得の部分をとってやって見たのですが
うまくいきません。どなたか教えていただけるとありがたいです。

http://www.hpfree.com/giants/lng.txt
↑実際使っているサーバーはCGI可です。

GETできてません。
SETはできてるのかわかりません・・・

よろしくお願いします。

10 :名無しさん@お腹いっぱい。:01/09/12 17:15 ID:???
>SETはできてるのかわかりません・・・
こういう事言われるとどこから説明していいか解らんのだが。。
良く見てないが、%in はクライアントのクッキーの値でわ
それをSetしても初回訪問者の %in は常に空だから永遠に発行出来ないと
セットするのは %FORM では無いのか
何故、printの手前で手動で値を代入したりしないのか
もしperlはどうでも良いからクッキーだけ喰わせたいと言うなら
改造スレッドの方が答えが得られると思うがどうか

11 :10 :01/09/12 17:18 ID:???
何かキツイ言い方かな、多分新規発言モードとレスモードがあるんだろ
からまずは新規発言モードにFORMの内容セットしてみれ>>9

12 :名無しさん@お腹いっぱい。:01/09/12 18:27 ID:???
見てみたけど%in ($in{...}) って何?突然現れてるけど。
フォームの受け取りは %FORM だろ?1083行辺りのサブルーチンreadParamを見れ。
$in{...}を全部$FORM{...}に。


1192行からの

$c_name = $ck{'NAME'};
$c_email = $ck{'EMAIL'};
$c_hpage = $ck{'HPAGE'};

でクッキーをセットした時のキーを使ってない。

name\:$FORM{'NAME'}\,email\:$FORM{'EMAIL'}\,url\:$FORM{'HPAGE'}

でやったんだから nameとemailとurlだろ。


あとURLの入力フォームはデフォルトでhttp://が入ってるから、
クッキーをセットする前に$FORM{"HPAGE"}からhttp://を取れ。

set_cookieサブルーチン内で

$FORM{"HPAGE"} =~s/http:\/\///;


何も考えんでコピーしても動くはず無いし、進歩もしないぞ。


つかKENTのスクリプトってcookieのエンコードしてねぇの?
ダメダメじゃん。

13 :名無しさん@お腹いっぱい。:01/09/12 18:35 ID:fdeTSY12
> まずは新規発言モードにFORMの内容セットしてみれ

言葉が理解できません・・・
簡単に言うとどういうことですか?

未熟者で本当にすいません。

14 :つーか:01/09/12 18:50 ID:???
無茶くちゃだってば、
デリミタがGETとSETで違う
getとsetで使ってる名前が違う
全体に変数名が無茶苦茶
: 使いたいならエスケープすれ
getとset違うスクリプトから持ってきてんのか?
もう何が何か解らん
上手く行ってもこのままじゃ日本語は使えない

15 :名無しさん@お腹いっぱい。:01/09/12 19:18 ID:???
>>13
簡単に言う。

コピペで済まそうとするな。少しは勉強しろ。

16 :名無しさん@お腹いっぱい。:01/09/12 21:19 ID:???
てゆーか>>12ので良いべ?

17 :名無しさん@お腹いっぱい。:01/09/12 21:49 ID:SnaNq2/g
>>12 やってみましたがだめでした
http://www.hpfree.com/giants/lng.txt

> getとset違うスクリプトから持ってきてんのか?
同じスクリプトからですけど・・・

> コピペで済まそうとするな。少しは勉強しろ。
ごもっともだと思います。

今回の事が解決すれば改めて勉強をしようと思いますのでよろしくお願いします。

18 :名無しさん@お腹いっぱい。:01/09/12 22:03 ID:???
>>>12 やってみましたがだめでした
>http://www.hpfree.com/giants/lng.txt

やってねーじゃねーか。

|1192行からの
|
|$c_name = $ck{'NAME'};
|$c_email = $ck{'EMAIL'};
|$c_hpage = $ck{'HPAGE'};
|
|でクッキーをセットした時のキーを使ってない。
|
|name\:$FORM{'NAME'}\,email\:$FORM{'EMAIL'}\,url\:$FORM{'HPAGE'}
|
|でやったんだから nameとemailとurlだろ。

は無視かえ?

ノーミソ使えんなら改造なんかするな。

19 :名無しさん@お腹いっぱい。:01/09/12 22:11 ID:SnaNq2/g
urlをhpageにしたんですけど・・・

大文字じゃないと駄目ですか?

20 :名無しさん@お腹いっぱい。:01/09/13 03:30 ID:???
そもそも
> KENTさんのスクリプトのクッキー発行・取得の部分をとってやって見たのですが
自体がいいアプローチなのか?

21 :名無しさん@お腹いっぱい。:01/09/13 09:16 ID:???
12でも書かれてるが、cookieをエンコードしてない時点で駄目。
;とか入るとおかしくなる。
1つのクッキーに , 区切りでセットしてキーと値を : のに
, と : が値に入る可能性を考慮していないのも駄目。

IEからJScriptで取る場合は日本語がエンコードされてると
正常に取れないけど。(IE 5で検証)
だから2ちゃんはエンコードしてない。
そういう事情は無いのにエンコードしない。
阿呆としか思えない屑スクリプト。

22 :21:01/09/13 09:20 ID:???
日本語が変だ。

>1つのクッキーに , 区切りでセットしてキーと値を : のに
>, と : が値に入る可能性を考慮していないのも駄目。

キーと値を : で区切り、それを , で連結しているのに、
, と : が値に入る可能性を考慮していないのも駄目。

に訂正。

23 :名無しさん@お腹いっぱい。:01/09/13 16:27 ID:558g6.Uc
それじゃ、改造しなおそうかと思ってきたのですが

どこで配布されているCGIのものが移しやすいのでしょうか?

もしくわ打開策を教えていただけるとうれしいのですが・・・

24 :名無しさん@いつも空腹:01/09/13 16:39 ID:qZrCzOSM
データソートの質問です

【ソース】
------------------------------------------------------------
#ファイル読み込み
open(IN,"$datafile");
@lines = <IN>;
close(IN);

#ソートしてから重複データを削除する
@lines = sort { $a cmp $b } grep ( !$count{$_}++, @lines );

#書き込み更新
open(OUT,">$datafile");
print OUT @lines;
close(OUT);
------------------------------------------------------------

データ形式は
63,父A,30,母A,27,息子A,5,娘A,1
158,父B,55,母B,52,息子B,27,娘B,24


[家族の合計年齢],[名前],[年齢]・・・・
というcsvファイルなのですが昇順ソートすると
158→63の順になってしまい私の希望するソートができません

3桁の数字[158]よりも2桁の数字[63]を先に並べるにはどうしたらよいでしょうか?

25 :名無しさん@お腹いっぱい。:01/09/13 17:01 ID:???
$a cmp $b

  ↓

$a <=> $b

26 :名無しさん@お腹いっぱい。:01/09/13 18:27 ID:???
質問です。いま、ファイルに入力されている数字を多い順からn個抜き出して表示するプログラムを作ろうと思うのですが、
どうすればよいのでしょうか?
ちなみにデータファイル形式は、こんな感じです。
1,5,3,8,4,6
1,6,4,9,7,8
1,3,2,4,6,8

ヒントでも良いのでお願いします。

27 :19:01/09/13 18:40 ID:558g6.Uc
なんとか自分で解決しました。

みなさんありがとうございました。

28 :名無しさん@お腹いっぱい。:01/09/13 18:47 ID:SoliGA0M
>>26
ハッシュ、ソート使う

29 :名無しさん@お腹いっぱい。:01/09/13 18:54 ID:???
>>26
$n=5として、
9, 8, 8, 8, 7 か
9, 8, 7, 6, 5 のどっち?

30 :名無しさん@いつも空腹(24):01/09/13 19:34 ID:???
>25
なるほど、解決しました
ありがとう

31 :26:01/09/13 21:12 ID:???
>>29
9,8,7,6,5の方でお願いします。

32 :聖可:01/09/13 21:22 ID:t/B28ZsY
聖可

33 :名無しさん@お腹いっぱい。:01/09/13 23:06 ID:???
>>26
こんな感じ?

my $N = 5; #表示する最大数設定

#カウントする
my %count;
while(<DATA>){
foreach my $number(split /,/){
$number += 0;#数値化
$count{ $number}++;
}
}

#値でキーをソート
my @keys = keys %count;
@keys = sort {$count{$b} <=> $count {$a}} @keys;

#表示
my $junni = 1;
printf "%7s %7s\n",'number', 'count';
printf "%s\n", '='x20;

foreach (@keys){
printf "%7s %7s\n",$_, $count{$_};
$junni++;
$junni > $N and last;
}

__DATA__
1,5,3,8,4,6
1,6,4,9,7,8
1,3,2,4,6,8

34 :名無しさん@お腹いっぱい。:01/09/13 23:47 ID:???
$n = 5;
undef $/;
my %tmp;
my @big_n = (sort { $b <=> $a } grep { ! $tmp{$_}++ } split /[,\n\s]+/, <DATA> )[0..$n-1];
print join ', ',@big_n;

35 :34:01/09/13 23:49 ID:???
あ、間違った。全然意味が違うね

36 :34:01/09/13 23:58 ID:???
やけくそで一文。真似しちゃダメな例。

my $n = 5;
my %tmp;
print map { "$_ => $tmp{$_} times\n" } (sort { $tmp{$b} <=> $tmp{$a} } grep { ! $tmp{$_}++ } split /[,\n\s]+/, <DATA> )[0..$n-1];

37 :名無しさん@お腹いっぱい。:01/09/14 01:38 ID:AP7G9ZdU
テキスト中にあるタグを分解するスクリプトを作っています。
<xxx attribute="value">
というタグを
$tag->{xxx}->{attribute} = value;
という感じに変えたいと思っています。

$text = q|<img src="../pen.gif" alt="This is a pen." width=10 height=20><br>
<font size=3 color=#ff0000 face="Arial" style="text-decoration: overline underline;">あああ</font>|;

@tags = map{ m/<(.+?)>/g } $text;

for(@tags) {
@array = split / /;
$xxx = shift @array;
for (@array) {
/([^=]+?)=["']?([^"']*)["']?/i;
$tag->{$xxx}->{$1} = $2
}
}

print <<"_EOF_";
$tag->{img}->{src}  (実際の出力結果:../pen.gif)
$tag->{img}->{alt}  (This)←ここで値が切れてる
$tag->{img}->{width} (10)
$tag->{img}->{height} (20)
$tag->{font}->{size} (3)
$tag->{font}->{color} (#ff0000)
$tag->{font}->{face} (Arial)
$tag->{font}->{style} (text-decoration:)←ここで値が切れてる
_EOF_

これだと、"This is a pen."など半角スペースを含んだ時に期待通りに動いてくれません。
何か上手い方法はないでしょうか?

38 :名無しさん@お腹いっぱい。:01/09/14 20:58 ID:???
>>37
$_ = q<font size=3 color=#ff0000 face="Arial" style="text-decoration: overline underline>;

s/"//g;
s/(.*?)([\w\d-]+)=/$1,$2,/g;
my @str = split /,/;

#前後の空白削除
foreach(@str){
s/^\s+//;
s/\s+$//;
}

#display
print shift @str;
while(@str){
my $attribute = shift @str;
my $value = shift @str;
printf " %-15s: %s\n",$attribute,$value;
}

39 :名無しさん@お腹いっぱい。:01/09/14 23:06 ID:???
chmod が出来ません。
ユーザから任意の値を受け取って 666 なら
$mode = sprintf ("%04d",$mode);
chmod ("$mode","$file");
というようにしてるのですが、時々謎の(110とか)値になってしまうのですが。。

chmod (0777,"./foo/boo"); なら大丈夫なんです
手前で適当にprintしてみても 、$mode  0777 、 $file ./foo/boo
みたいにちゃんと値は設定されてるんです
evalとか使わないと駄目なんでしょか?
chmod (eval($mode),"$file"); じゃ駄目ですし

40 :名無しさん@お腹いっぱい。:01/09/14 23:28 ID:???
chmod ("$mode","$file");  ←$mode がいけないみたい
777で411になります  -_-..

41 :37:01/09/15 00:35 ID:VWrSopAU
>>38
ありがとうございました!
空白の扱いが非常に参考になります。
とても助かりました。

42 :名無しさん@お腹いっぱい。:01/09/15 00:48 ID:???
>>39
umask(000);

43 :名無しさん@お腹いっぱい。:01/09/15 01:01 ID:???
>>42
ありがとう、でもこの場合どういう風に使えばよいのでしょうか?
どうも$modeの中の値が10進表記と解釈されて0777(DEC)=>1411(OCT)
で411になっている様です
sprintf とか oct を使えば良いのでしょうか

44 :名無しさん@お腹いっぱい。:01/09/15 01:16 ID:???
うまく逝きました。。
$mode = "777";
$mode = sprintf ("%04d",$mode);
$modeoct = oct($mode);
chmod ("$modeoct","$file");
でも何故かが解らないです。。
8進数の10進表記??? 謎。。。

45 :名無しさん@お腹いっぱい。:01/09/15 01:48 ID:???
>>44
まんま、
perldoc -f chmod

46 :名無しさん@お腹いっぱい。:01/09/15 01:59 ID:???
>>45
ありがとう、
$mode = '0644'; chmod oct($mode), 'foo';
だと文字になっちゃうからヤバイよと言う事かな。。
"'0644'"は駄目なんですね、難しいです。。
perldoc知らなかったです、勉強になります、ありがとうです>>45

47 :名無しさん@お腹いっぱい。:01/09/15 11:59 ID:X3yJVM3Y
単発スレで怒られました、申し訳ないです。
自分でも頑張って探してみますが、質問します。

他のコンポーネントを使わずに、メールサーバを割り出す方法はどうすればいいのでしょうか?
例えば、hoge@hoge.comの場合、メールサーバはhoge.comだったり、mail.hoge.comだったり、
MXによって変わってきますよね?その場合はどう処理すればよいのでしょうか?

48 :名無しさん@お腹いっぱい。:01/09/15 13:09 ID:???
Net::DNS で MX みる。
tu-kahokanokonnpo-nenntottenani

49 :名無しさん@お腹いっぱい。:01/09/15 13:10 ID:???
ただの変換ミスさね。

50 :名無しさん@お腹いっぱい。:01/09/15 13:49 ID:X3yJVM3Y
>>48
>他のコンポーネントを使わずに、メールサーバを割り出す方法はどうすればいいのでしょうか?
なので、Net::DNSは使えないです、他の方法は無いでしょうか?

51 :名無しさん@お腹いっぱい。:01/09/15 13:50 ID:???
じゃあ、Net::DNSがやってることをそのままやればいい。
ソースみれ。

52 :名無しさん@お腹いっぱい。:01/09/15 14:02 ID:???
>>51
わかりました、そーします

53 :JAPU@会社作ったにょ:01/09/15 15:29 ID:???
素直に nslookup 呼び出す作戦とか。

#! /usr/local/bin/perl -wT

$addr = shift || 'hoge@fbi.gov';
$addr =~ /@([a-zA-Z0-9.-]*)/;
$domain = $1;

$ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin";

print "MX for $domain:\n";

@mx = (sort { $a->[1] <=> $b->[1] }
map { /preference = (\d+), mail exchanger = (.*)/; [$2, $1] }
grep /mail exchanger =/, `nslookup -type=MX $domain`);

print "$_->[0] (preference $_->[1])\n" foreach @mx;

__END__

54 :名無しさん@お腹いっぱい。:01/09/15 16:15 ID:???
>>53
nslookupを呼び出すのは禁止なんですよね。
困った困った。

55 :名無しさん@お腹いっぱい。:01/09/16 04:15 ID:D8MO0CAo
aa

56 :名無しさん@お腹いっぱい。:01/09/16 04:24 ID:D8MO0CAo
-wTスイッチとか use strictは、もしかしてコマンドラインじゃないと意味無しですか?
HTTPD立ち上げてブラウザからhttp://127.0.0.1/で掲示板とか作ってるんですが・・。

各所で-wT使え strict使えとか言われてるのに使えなくて困っております。

57 :名無しさん@お腹いっぱい。:01/09/16 05:14 ID:???
1 にも書いてあると思うんだが, もうちょっと「使えなくて」をちゃんと説明してくれ

58 :名無しさん@お腹いっぱい。:01/09/16 10:47 ID:mp/KUAwM
モロ、無修正画像サイト発見!

http://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/

59 : ◆PerlPiVg :01/09/16 11:57 ID:???
>>56
多分、-wT は
#!/usr/bin/perl -wT
がやりたいんだと思われ。

で、use strict の使い方と意味知ってますか。

60 :名無しさん@お腹いっぱい。:01/09/16 13:02 ID:???
>>56
というわけで、perldoc strict かな。

>>59
良いトリップですな。

61 :名無しさん@お腹いっぱい。:01/09/16 14:08 ID:VeBCjLxg
fetchmailというPOPサーバからローカルスプールへメールを
取り込むプログラムがありますが、同じようにWebベースの
メールをローカルスプールに取り込むperlスクリプトを作りたい
のですが、それを書くのに便利なモジュールとCGIとの会話に
必要な知識が載っている資料(RFCかweb)を知っていたら
教えていただけませんか。

62 :名無しさん@お腹いっぱい。:01/09/16 15:24 ID:???
>>61
そんな都合の良いもんねーよ。

もっと基本からはじめろ。

63 :名無しさん@お腹いっぱい。:01/09/16 16:15 ID:HiUGkhyw
>>62
そうでしたか。結構CPANとかには「そんな都合のいいもの」って
思うようなものもあるので、誰かが作っているかもって思ったの
です。LWPとか使って書くしかないってことですか。

>もっと基本からはじめろ。
車輪の再発明を避けようと、似たようなモジュールがないか探した
だけで、基本に戻れってことですか?

64 :名無しさん@お腹いっぱい。:01/09/16 16:21 ID:???
Webmailなんてサイトによって全然違うんでは?
LWP以上の何を求めてるのかが解りませんが
hotmail.pmみたいなのを探してるのか。。。

65 :名無しさん@お腹いっぱい。:01/09/16 17:06 ID:yvDq7DHw
>>64
たしかに違いますが、大手のinfoseek, exciteくらいなら使っている
人も多いし、webメールが面倒って思って作っているひとがいるかも
って思ったので^

>LWP以上の何を求めてるのかが解りませんが
各WEBの違いを吸収してくれるモジュールがあれば…ってことです。

>hotmail.pmみたいなのを探してるのか。。。
それってあるのですか? CPANとgoogleで検索かけても見つけ
られませんでした。

66 :名無しさん@お腹いっぱい。:01/09/16 17:40 ID:???
だから無いってば、大体本家の仕様がかわる度に(以下略
そもそも世界中に一体何千のサービスがあって(以下略

67 :名無しさん@お腹いっぱい。:01/09/16 17:45 ID:MGixgscI
>>66
了解。

68 :名無しさん@お腹いっぱい。:01/09/16 18:46 ID:9Q.bsKq2
ttp://www.f2s.comのフリースペースに
ttp://www4.tkcity.net/~elmo/accessory/wforum.htmlを設置しようと思い、
「#!/usr/local/bin/perl」のパスを「#!/usr/bin/perl」に変更し
cgi-binとbbsディレクトリのパーミッションは755に変更。
後は以下のように変更しました。
wforum.cgi(755)
wforum.log(644)
wf_admin.cgi(755)
index.cgi(755)
1.html(644)
pastno.dat(644)
index.html(644)
title.gif(644)
jcode.pl(644)
fold.pl(644)
accesslog.log(644)
code.log(644)

ですが、どうしても「500 Internal Server Error」と出てしまい動きません。
たぶんパーミッションが間違ってるのかな?と思いますが
どう変えれば良いのかがわかりません。
誰か教えて下さい、お願いします。
ちなみにFTPソフトは「Fetch3.0.3J2」を使ってます。

69 :名無しさん@お腹いっぱい。:01/09/16 18:56 ID:???
>>68
頑張ってください、と言いたい所だが。
スレ違いです。

CGIだけど、なんか質問ある?part3
http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&ls=50

70 : :01/09/16 20:16 ID:???
>>69
つーか、 use CGI::Carp してみたら助かること多いのにね。

71 :名無しさん@お腹いっぱい。:01/09/16 20:31 ID:???
>>68
KCatch.pm使ってエラーメッセージ表示できる。
続きはCGIスレでやってね。

72 :名無しさん@お腹いっぱい。:01/09/16 20:33 ID:???
http://www4.tkcity.net/~elmo/accessory/wforum_readme.txt

73 :68:01/09/16 20:53 ID:gRdNqaZI
すみませんでした。。。

74 :名無しさん@お腹いっぱい。:01/09/16 21:17 ID:iOe1OIlA
クッキーの内容によってアクセス拒否を行いたいんですが、
参考になるルーチンなどありますでしょうか。

75 :名無しさん@お腹いっぱい。:01/09/16 21:25 ID:???
 無い、以上。

76 :名無しさん@お腹いっぱい。:01/09/16 22:30 ID:???
ココは厨房の憂さ晴らし場ですか?

77 :名無しさん@お腹いっぱい。:01/09/16 22:44 ID:???
>>70
確かに。
私はKCatchじゃなくてCGI::Carp派です。

書いとくか…
BEGIN {
use CGI::Carp qw(carpout);
open FH, ">> ./error.txt";
carpout(*FH);
}

78 :名無しさん@お腹いっぱい。:01/09/17 00:52 ID:???
クッキーの内容でアクセス拒否って
クッキー切られてたら意味ない気がしたのだが

79 :名無しさん@お腹いっぱい。:01/09/17 00:59 ID:hTkiLRJk
モロ、無修正画像サイト発見!

http://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/

80 :名無しさん@お腹いっぱい。:01/09/17 00:59 ID:???
内容取れなくても拒否だろ。

81 :名無しさん:01/09/17 22:02 ID:vlnxJJbs
パターンマッチで「ラーメン」など「ー」を検出しようとすると
unmatched [] in regexp at ファイル名が表示されるんですけど
エラーをなくすにはどうしたらよいですか?

82 :名無しさん:01/09/17 22:06 ID:???
「ラ(.*)メン」で解決しました

83 :名無しさん@お腹いっぱい。:01/09/17 22:14 ID:???
頻出ネタですな。
\Q \E
quotemeta

84 :名無しさん@お腹いっぱい:01/09/17 22:34 ID:???
ファイル移動に関する質問です
$a : 移動前のファイル名
$b : 移動先のディレクトリ名
この場合、どんな風に書けばいいのか教えてください

85 :名無しさん@お腹いっぱい。:01/09/17 22:57 ID:???
>84
$c : 移動前のディレクトリ名
rename("$c/$a","$b/$a");

86 :名無しさん@お腹いっぱい。:01/09/17 23:49 ID:IPBfuQws
use File::Copy;
move($a,$b);

87 :名無しさん@お腹いっぱい。:01/09/18 05:01 ID:???
>>84
蛇足ながら。
$a,$bはsort用の特殊変数なので
普通の用途では使わないほうがいい(かもしれない)

88 :84:01/09/18 07:57 ID:???
おかげさまで解決しました

89 :名無しさん@お腹いっぱい。:01/09/18 21:30 ID:???
カレントディレクトリ名を取得するのって
どうやってやるんでしょうか?

90 :名無しさん@お腹いっぱい。:01/09/18 22:23 ID:???
>>89
use Cwd;
$dir = cwd();

91 :名無しさん@お腹いっぱい。:01/09/18 23:07 ID:???
>>90
わ。そんな簡単な方法があったのですか。
ありがとうございます。感涙です。

92 :名無しさん@お腹いっぱい。:01/09/18 23:27 ID:s6QOmheA
入力された文字列を80Byte以下に分割したいと思ってます。
(分割結果を個別で携帯メールに送る)

日本語文字列の分割はどうすればいいのでしょう?
substr使って以下のようにすると、1byteコードが入ったところで化けます。

$max_byte = 80;
$offset = 0;
for($i=0;;$i++){
@mailbody[$i] = substr($mailbody,$offset,$max_byte);
$offset +=length(@mailbody[$i]);
if(@mailbody[$i] eq ""){
last;
}
}
よろしくお願いします。

93 :名無しさん@お腹いっぱい。:01/09/19 00:24 ID:R7HmAIag
>>92
正規表現を使う
あと、@じゃなくて$な

94 :名無しさん@お腹いっぱい。:01/09/19 02:33 ID:???
>>92
つーか、日本語は2byte(または3byte)って事知ってるか?

@と$間違うレベルじゃ多分無理だろうな。

95 :名無しさん@お腹いっぱい。:01/09/19 02:47 ID:qAnhwpTs
perl6からは、初心者が@と$と%間違うのは少なくなるだろう。。。。
逆に間違う古参が出てくるだろうが。

96 :名無しさん@お腹いっぱい。:01/09/19 04:24 ID:vb9BfN1c
モロ、無修正画像サイト発見!

http://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/

97 :名無しさん@お腹いっぱい。:01/09/19 05:36 ID:xKEtyMaE
>>92
93と94の言ってることがわからなければ、たとえばこのへんを参考に。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Split

そのあと>>2-3のリンク先も全部読んでおくといいかも。
2ヶ月もがんばれば全部読めるっすよ。

98 :名無しさん@お腹いっぱい。:01/09/19 06:33 ID:???
ローカルでなが〜いスクリプト動かしたいんですけど
タイムアウトしてサーバーがみつからんです。っていいます。
なんとかしてください。

99 :名無しさん@お腹いっぱい。:01/09/19 06:42 ID:???
>>98
ローカルで?サーバーで、の間違いでしょ?
forkして子プロセスにやらせるとか
やること記述したファイル生成して、cronに拾わせるとか

100 :名無しさん@お腹いっぱい。:01/09/19 07:02 ID:???
↑ アンタ甘いな、この聞き方からしてなが〜いスクリプトってのはフェイクなんだよ
良く聞いてみたらなが〜いのはもちろんhelloperlも動かない
つーかHTMLも表示出来ん、Pingも飛ばねえってオチ   これ基本ね

101 :名無しさん@お腹いっぱい。:01/09/19 07:18 ID:???
>98
ブラウザ表示がタイムアウトになっても処理は続いてる。
画面に表示されないだけ。
表示内容を見たいだけならスクリプトの最後に表示させたい内容を
外部保存するように書き換えて、あとからそのHTMLだけ開けばいい。

102 :名無しさん@お腹いっぱい。:01/09/19 07:22 ID:???
こんな時間にレスがつくとは!!
なが〜いスクリプトってのはただ単に
入れ子になってるだけなんですけど
httpdがずっと通信してますよー。ってなってて
もうやめた。って感じで止まり、鯖見つからんかった事にしといてー。
ってなるんです。

103 :じゃ・・:01/09/19 07:24 ID:AuWg3XVU
頭でヘッダ吐いちゃえ  :-)

104 :名無しさん@お腹ごろごろ:01/09/19 14:53 ID:ZyNXuusg
Windows98+ActivePerlの環境で・・・
Perlスクリプトの設置場所とカレントディレクトリを「c:\temp」にした状態で
「c\temp\sample.txt」を「c:\temp\old\sample.txt」に移動するにはどうすれば良いでしょうか

105 :名無しさん@お腹いっぱい。:01/09/19 14:56 ID:???
>104
ログ見ろ!
>84-86

106 :名無しさん@お腹ごろごろ:01/09/19 15:06 ID:???
え°?
[[解決]]

107 :コアだんぷ:01/09/19 15:35 ID:hUyzFQTQ
みんなってどれくらいでPerlとか使えるようになったの?
例えば簡単な掲示板作れるくらいのレベルに達するのにどれくらい
かかった?
先日友人に1ヶ月くらいやってやっと簡単な掲示板作れるレベルになった
といわれてビクーリした。そいつは仕事から帰ってずっとPerlやってたみたいなんだけど
そんなにかかるの?
ちなみに俺は簡単な掲示板作れるようなレベルになるまで1週間かからなかった記憶があります。
個人差もあると思いますがだいたいどれくらいでいけるもんなのですか?

108 ::01/09/19 16:05 ID:???
Perlに割いた時間によるでしょうね
やりたいことができれば習熟度や経歴なんて関係ないよ〜

私は掲示板のアレンジは即日可能でしたが
特に目的がなかったのでその後は進歩していません

109 :名無しさん@お腹いっぱい。:01/09/19 16:06 ID:???
>107
Perl以外のプログラムを組んだ事あるかないかによる。
組んだ事がなくてもその知識があるかないかによる。
文系か理系かにもよる。

漏れは改造から入ったから、簡単な掲示板を1から自分で作ったのが
いつだったか全然覚えてない。(ぉ

110 :名無しさん@お腹いっぱい。:01/09/19 17:00 ID:tAq/5NMs
すいません。掲示板の通知機能で複数のメールアドレスを指定したいとき、
$mailto = "'x_x_x@xxx','x.x.x@xxx','xxx@xxx',"
こんな書き方で大丈夫でしょうか?

111 :名無しさん@お腹いっぱい。:01/09/19 19:09 ID:???
BBSを書いてるんですが、ログの扱いでちょっと考えてます。
2chの様に複数のスレッド(トピック)が有ってそこにレス付けて行く
BBSの場合トップソート(あげ機能)の有無に関わらずログの整理が
必要ですよね。
多くの掲示板みたいに
open (FH,"./log.txt");@log = <FH>;
ってやるのは少し気が引けます
もし while (<FH>) で何とかしたいとしたら、ここみたいに
スレッド毎にログファイルとsubject.txtみたいなテキストを用いる
しか無いんでしょうか。 ログファイルが増えるのもちょっとなぁ
と思ってるんですが・・・
 

112 :sage:01/09/19 20:42 ID:???
>110
それじゃ無理。具体的な掲示板スクリプト書いてくれ

@Mailto('Mail1@hoge.jp','Mail2@hoge.jp','Mail3@hoge.jp'); #送りたいメールアドレスを好きなだけ書く
foreach $Mailto (@Mailto){掲示板スクリプトの送信処理;}
大まかな考え方はこんな感じだと思うよ

>111
複数の方法がある場合、ナニを優先させるか明記しないとレス不可能
というかナニがしたいの?

113 :sage:01/09/19 22:59 ID:???
↑の4行目
@Mailto = ('〜以下省略〜');ですよ。「=」抜けてました(汗々)

114 :名無しさん@お腹いっぱい。:01/09/19 23:11 ID:RdNP37os
>>110のでもいいんじゃないかな?
To: mail_addr@host, nail2@host, ...
で送れるでしょ。

ただ、ダブルクオートでくくると、変数展開がまずいことにならないかな。
$mailto = '"x_x_x@xxx","x.x.x@xxx","xxx@xxx"';
の方が安心かも。

115 :114:01/09/19 23:15 ID:RdNP37os
サッキノとリケシー。
動かしているスクリプトの処理によっては、えらいことになりかねない。

116 :110:01/09/20 00:32 ID:xeOjatSc
”’x_x_x@xxx’”だとうまくいきませんでしたが
’”x_x_x@xxx”’だと出来ました。
最初は単純にカンマで区切っただけだったんですが($mailto = 'x_x_x@ne.jp,x.x.x@ne.jp,xxx@ne.jp';)
これだと最初のやつが送信されなかったんです。_ があったのが悪かったんでしょうか???
なぜだかよくわかってませんけどこれから勉強します。
112さん114さんお答えどうもありがとうございました。

117 :名無しさん@お腹いっぱい。:01/09/20 04:24 ID:tvjA6dmg
前板(現レンタルサーバ)でのチャットスレがとても勉強になると聞いたんですが
探しても見つかりませんでした。
どこで見られますか?

118 :924:01/09/20 04:48 ID:???
>>116
perlじゃなくて、sendmailの仕様の話だろ

119 :名無しさん@お腹いっぱい。:01/09/20 07:33 ID:???
2つの配列同士から同じ要素含んでないか調べるのって
どうやるんですかーー?
ちなみにgrepって検索文字に変数使えないんですか?
例えば grep ~ /$hoge/,@kensakutaisho;
みたい$hogeつかえないのですか?

120 :-:01/09/20 07:35 ID:p4cxh3HI
モロ、無修正画像サイト発見!

http://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/

121 :らすかる:01/09/20 07:50 ID:MTc8pgUs
今掲示板のスクリプト書いてるんですが
スクリプトを1つのファイルにまとめるか複数に分けるか悩んでます。
エラー処理のところなどを別ファイルにしようかと思うのですが
やはり複数に分けた方が処理は軽くなるのでしょうか?
それとも複数でも全てを1つのファイルにまとめても大してかわらないのでしょうか?

122 :名無しさん@お腹いっぱい。:01/09/20 07:56 ID:o56tunDA
web上でcgiからcgiを作るって危険なんですか?

123 :名無しさん@お腹いっぱい。:01/09/20 08:17 ID:???
map {$ck{$_}++} @a1;
@a3 = map {$ck1{$_}} @a2;

@hits = grep {$_ =~ /$hage/} @search_target;

@hits = grep {/$hage/} @search_target;

@hits = grep /$hage/,@search_target;

124 :名無しさん@お腹いっぱい。:01/09/20 09:19 ID:???
>121
ログを1ファイルで管理する場合は保存件数を制限するだろ?
複数ファイルで管理するとそれを探すステップが必要なので
入門レベルで処理の重い/軽いを気にするなら1ファイル管理がいいと思うが?

>122
作るcgiの完成度と作られるcgiの内容による

125 :名無しさん@お腹いっぱい。:01/09/20 09:34 ID:???
>>119
条件によっていろいろなので一概に言えない。
@dupe = grep {$tmp{$_}++} @array1, @array2

>>121
分けたほうが遅くはなるけど、たいして変わらない。
分けるなら読み込みのスクリプトと、書き込みのスクリプトで分ける。
2chもそうだよね。

126 :名無しさん@お腹いっぱい。:01/09/20 15:34 ID:???
$ENV{'QUERY_STRING'} = 'name=hogehoge&year=22&sex=men&pass=77777';
だったとして

@querys = split (/&/,$ENV{'QUERY_STRING'});
foreach (@querys){
  ($name,$value) = split (/=/,$_);
  $fromin{"$name"} = $value;
}

これは理解出来るとして、

@querys = split (/&/,$ENV{'QUERY_STRING'});
foreach (@querys){
  ($name,$value) = split (/=/,$_);
  $fromin{"$name"} = $value;
}
  $name = $formin{name};
  $year = $formin{year};

これは何故? 殆どの配布スクリプトがこんな感じ
なんですけど、、何で

@querys = split (/&/,$ENV{'QUERY_STRING'});
foreach (@querys){
  ($name,$value) = split (/=/,$_);
  unless ($name =~ m/^(name|year|sex|)$/){next;}
  $$name = $value;
}

これで済ませないの?

127 :名無しさん@お腹いっぱい。:01/09/20 15:48 ID:???
右へ倣え。
もしくは、盲目的「ソフトリファレンスは使うな」。
もしくは、マッチの負荷を気にしている。

つーか、ハッシュのままでいいじゃん。

128 :127:01/09/20 15:52 ID:???
ごめん。s/ソフト/シンボリック/

129 :名無しさん@お腹いっぱい。:01/09/20 16:21 ID:UtkSX9Kc
>>126
なんかスクリプトの中にパラメータを
>m/^(name|year|sex|)$/){next;}
って書くのはマジックナンバーの埋め込みみたいに
感じるんですけど。メンテナンスが面倒になりませんか?

130 :126:01/09/20 16:34 ID:???
即レス感謝〜
一番の理由はマッチングのコストなのかな、、
シンボリックリファレンスは多用すると参照先が曖昧になってしまうから
上級者さんが、使うなー って言ってるんですよね

>メンテナンスが面倒になりませんか?
これは上の例の2つ目でも同じ事ですよね 例えばaddを足したら
$add = formin{add} を足さないといけないという部分では

色んなスクリプト読んでるんですが、何故か2つめのやり方が凄く
多いんです。で、3つ目は一度も見た事無いんで、何か落とし穴でも
有るのか、それともこう言う基本部分のリファレンス?みたいなのが
どっかに有って、みんなそれをコピーして使ってるのかな
と思ったんです perlってほんと色々な書き方が有って困ってるのに
この部分だけ判子押したように同じだったんで。。。

131 :名無しさん@お腹いっぱい。:01/09/20 16:46 ID:X2sVnNMY
たしかに2番よりは3番の方がいいかも知れん。
マジックナンバー(マジックストリング?)なんてどうにでもなるし。
ただ、入力データだということをハッキリさせたいのでハッシュの方がいいとは思うが。
そんな俺は自作のCGI::Queryで$q->param("foo")だけど。

132 :ぱーるやろう:01/09/20 16:47 ID:???
E-mailアドレスとURLをチェックする正規表現教えてください。

133 :名無しさん@お腹いっぱい。:01/09/20 17:00 ID:zGNHdu/.
>>132
>>2-5のリンク先見れ

134 :119:01/09/20 17:41 ID:???
>>123
>>125
どうもありがとです。
それで試してみます。
123の矢印は省略可って事ですよね?
>>132
どっかのサイトにあったなぁ。
メアドも例外みたいのがあってそれをはじかず
変なアドレスだけをはじいていくってやつが。
ちなみに超長かった。
例外考えないと
if($email !~ /[\w\.\-\&]+\@[\w\.\-\&]+\.[\w\.\-\&]/){&error("メアド変");}
($siteurl !~ /^https?:\/\/[\w|\:\@\-]+\.[\w|\:\!\#\%\=\&\-\|\@\~\+\.\?\/]+$/i){&error("URL変");}
か?

135 :119:01/09/20 17:41 ID:???
if($email !~ /[\w\.\-\&]+\@[\w\.\-\&]+\.[\w\.\-\&]/){&error("メアド変");}
elsif($siteurl !~ /^https?:\/\/[\w|\:\@\-]+\.[\w|\:\!\#\%\=\&\-\|\@\~\+\.\?\/]+$/i){&error("URL変");}
だ。

136 :名無しさん@お腹いっぱい。:01/09/20 18:15 ID:???
Perl上級者って名乗れるのはどれくらいになってからですか?

137 :名無しさん@お腹いっぱい。:01/09/20 18:18 ID:JzJOOdyA
>>136
とりあえず自分で上級者って言わない奴。

138 :名無しさん@お腹いっぱい。:01/09/20 18:23 ID:???
>>136
Inter National Perl Coding Qualification (INPCQ)
Master クラスを取得してから

139 :名無しさん@お腹いっぱい。:01/09/20 18:27 ID:???
>>136
Perlを使いこなせるようになってから

140 :136:01/09/20 18:39 ID:???
>>138
googleで検索しましたが情報がありませんでした。
どのような資格(?)なのですか?

おしえれ。

141 :名無しさん@お腹いっぱい。:01/09/20 19:12 ID:???
初級:モジュールを理解し、汎用的なサブルーチンをモジュールに追い出す
中級:CPANにモジュールを登録し、Perl文化に貢献する
上級:Perlのコアの開発に携わる
神:ラリーウォール

142 :名無しさん@お腹いっぱい。:01/09/20 19:24 ID:???
絶対神:KENT

143 :名無しさん@お腹いっぱい。:01/09/20 19:54 ID:???
>>142
不覚にもワラタ

144 :名無しさん@お腹いっぱい。:01/09/20 20:58 ID:???
>141
げ。どうしよう。初級者じゃん俺。もっとヘボいと思ったのに俺。

145 :初心者++:01/09/20 22:18 ID:???
俺も興味有るなあ

146 :稲垣(゚д゚)ゴルォ:01/09/20 22:26 ID:???
kent 照りカット

147 :名無しさん@お腹いっぱい。:01/09/20 23:01 ID:???
>>146
ツマラン

148 :名無しさん@お腹いっぱい。:01/09/20 23:45 ID:dlBnP3mg
Perl初心者が学習用に見るなら、どのスクリプトがおすすめですか?

149 :名無しさん@お腹いっぱい。:01/09/21 01:45 ID:D8Pk/8eM
二つの配列から同じ要素を見つけて
その要素以外を記録する方法がやはりわかりません。
というかうまく動きません。
これだ!というのがあれば教えてください。

150 :名無しさん@お腹いっぱい。:01/09/21 02:05 ID:DP/oQEFM
>>149
@a = (1,2,3,4,5,6);
@b = (2,4,6,8,10);

foreach (@a) {$hash{$_} = ""}
foreach (@b) {exists($hash{$_}) ? delete $hash{$_} : print "$_\n"}
foreach (keys %hash){print "$_\n"}

ぱっとしないけど。

151 :149:01/09/21 02:16 ID:D8Pk/8eM
どうもありがとう!
今自分でアイデア出てやっとこさ作れたけどその
数倍長いよw
いや親切さん多くてうれしいですね。どうもでした。

152 :150:01/09/21 02:18 ID:DP/oQEFM
@a = (1,2,3,4,5,6);
@b = (2,4,6,8,10);

foreach (@a, @b) {$hash{$_}++}

# 重複してるの
foreach (sort keys %hash) {if ($hash{$_} >= 2) {print $_, "\n"}}

# 重複してないの
foreach (sort keys %hash) {if ($hash{$_} == 1) {print $_, "\n"}}

こっちのほうがええかも

153 :Perl上級者:01/09/21 02:55 ID:???
Perl5.005.3と5.6でなぜ結果が違うのか教えれ。

#!/usr/bin/perl

$message = "Hello";

print "子プロセスを起動....\n";
$pid = fork();
if($pid < 0){
die("子プロセスの作成に失敗しました。\n");
}elsif($pid == 0){
$message .= " World";
print "\$message = $message\n";
exit(0);
}
wait();
print "\$message = $message\n";
exit(0);

154 :Perl上級者:01/09/21 02:59 ID:???
Perl5.6
./log.plでも./log.pl > logfile

子プロセスを起動....
$message = Hello World
$message = Hello

---------------------------
Perl5.005.3
./log.pl
子プロセスを起動....
$message = Hello World
$message = Hello

./log.pl > logfile

子プロセスを起動....
$message = Hello World
子プロセスを起動....
$message = Hello

155 :名無しさん@お腹いっぱい。:01/09/21 03:05 ID:???
>>154
せめて環境くらい書いたらどうだ、ヴォケクァス君!

156 :Perl上級者:01/09/21 03:07 ID:???
>>155のアホ
HP-UXだボケ。
ま、おまえにはわからんだろ(嘲笑)

157 :_gunzip@Perl初級者:01/09/21 03:10 ID:???
>>153-154
(´-`).。oO(仮にもPerl上級者なら、考えるまでもないと思うが・・・)

158 :Perl上級者:01/09/21 03:14 ID:???
>>157
初級者はすっ込んでろ。

159 :初心者@Perlなんですが・・・:01/09/21 03:29 ID:???
ばっふぁ。

160 :_gunzip@Perl初級者:01/09/21 03:31 ID:???
>>158

(´-`).。oO(仰せのままに・・・・)

# fork()が何をするか、どういったバッファリングが行われるか
# 分かっていれば、何も難しくない。

161 :名無しさん@お腹いっぱい。:01/09/21 03:52 ID:???
>>154-160 ふーんなるほど。ひとつ賢くなった。
こんなことないとperldelta読まない俺は逝ってよしですか。

162 :-:01/09/21 04:21 ID:42yt/C9o
モロ、無修正画像サイト発見!

http://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/

163 :Perl上級者:01/09/21 04:27 ID:???
全然わからん。ちゃんと説明しろ。
素人ども。

164 :7743:01/09/21 04:41 ID:0C1HqUNw
UNIXサーバーのcドライブにアクセスしようとする奴になんかいいメッセージをおくってやる方法ねぇかな?

165 :_gunzip:01/09/21 04:46 ID:???
(0) 前提(おおまか)
標準エラー出力以外のストリームは、端末など対話的装置に対しては
行バッファリング(バッファが一杯になるか、改行文字によって書き出す)、
そうでない場合は完全バッファリング(バッファが満杯になって初めて
書き出す)を行う。

(1) ./log.pl の場合

この場合は行バッファリングが行われる。

> print "子プロセスを起動....\n"; (*1)

改行文字により、バッファが標準出力に書き出される。
後はコード通りの(思った通りの)動作をする。

#-------------#

166 :_gunzip:01/09/21 04:48 ID:???
(2) ./log.pl > logfile の場合

この場合、標準出力は端末ではないので完全バッファリングが行われる。従って、

> print "子プロセスを起動....\n"; (*1)

では標準出力に書き出されない。(->バッファへ)その後、

> $pid = fork();

fork()呼び出しによって親のプロセスイメージが複製される際、親の
バッファも同時にコピーされる。(...まあ、大抵"copy-on-write"
だろうけど)
そして、子プロセスがprint "...", exit()した際に

> 子プロセスを起動....
> $message = Hello World

...と、子プロセスのバッファが書き出され、親と子の共有するカーネル空間の
ファイルテーブルのオフセットが更新される。
そして、親は子の死を確認した後、同じくprint "..."; exit()し、更新された
オフセット値から、自身のバッファ

> 子プロセスを起動....
> $message = Hello

を書き出す。...単にこれだけ。

#-------------#

Perl5.6からはfork()の際に自動的に全てのバッファをフラッシュするよう
変更されたため、プログラム作成者の意図通りに(*1)の部分で標準出力
バッファが書き出される。(後の動作は(2)と同じ)
従って、>>153-154のような違いが生じた。

167 :7743:01/09/21 04:49 ID:0C1HqUNw
cドライブを探したがるウイルスは、どういう仕組みになってるんすか?

168 :_gunzip:01/09/21 04:55 ID:???
間違えた。
>(後の動作は(2)と同じ)
じゃない。(大体分かると思うけど)

(´-`).。oO(Zzz・・・・おやすみ >>163)

169 :Perl初級者:01/09/21 05:24 ID:???
「バッファをコピー」するからか。
なるへそ。

170 :Perl下級者:01/09/21 05:36 ID:???
>>169
Perl上級者の理解力が急に増したのかと思った。
紛らわしいハンドルつけるなゴルァ

>>164
アクセスしてくるURLと一致するファイルをサーバ上に作れば
いいんでない? "c:"で始まるファイル名で。

171 :名無しさん@お腹いっぱい。:01/09/21 05:39 ID:DP/oQEFM
ここのスレッドの住人て 他にどんな言語が使えるの?

172 :名無しさん@お腹いっぱい。:01/09/21 09:40 ID:5isnB2us
モジュールってなんですか?
どうやってインストールするんですか?
どうやって使うんですか?

なんかモジュールなんて知ってて当然みたいな説明ばかりで
基本的なところがわからない
検索したら、モジュールの作り方とか出てきて涙

173 :名無しさん@お腹いっぱい。:01/09/21 09:54 ID:aEvmZgeQ
>>171
俺は C, PHP, Ruby, Python, ASP(VBScript), ColdFusion を
全て中途半端に使える(w

んで今はJSPの勉強中。

てか一つに的絞って、まずそれを極めろって自分でも思う。

>>172
http://www.google.co.jp/search?hl=ja&q=Perl+%83%82%83W%83%85%81%5B%83%8B+%83C%83%93%83X%83g%81%5B%83%8B&lr=
モジュールの作り方ばかり出てくるか?

174 :名無しさん@お腹いっぱい。:01/09/21 09:57 ID:5isnB2us
あとCPANもよくわかんない。CPANからもってこい、CPANから
ダウンロードしろとか、なんかやっぱりCPANも常識なんですよね?
なんかすげぇバカなこときいてるんだろうなぁ…

175 :名無しさん@お腹いっぱい。:01/09/21 10:12 ID:5isnB2us
>>173
Windowsなんです。なんかモジュール?をダウンロードしたら
Makefile.PLがはいってて、perl Makefile.PLするってのまで
なんとなくわかって、で?みたいな
makeしろと言われてもmakeコマンド?なんてないし・・・

ようやく
ttp://member.nifty.ne.jp/hippo2000/perltips/module_install.htm
にたどりつきました。ちょっと前進かも?

176 :名無しさん@お腹いっぱい。:01/09/21 10:13 ID:5isnB2us
うわ。我ながらすげー頭悪い書き方してるな
でもなんかもうなにがなんだかわかんないんです

177 :名無しさん@お腹いっぱい。:01/09/21 10:14 ID:???
>>171
俺は C, PHP, Ruby, Python, ASP(VBScript), ColdFusion を
全て中途半端に使える(w

んで今はJSPの勉強中。

てか一つに的絞って、まずそれを極めろって自分でも思う。

>>172
http://www.google.co.jp/search?hl=ja&q=Perl+%83%82%83W%83%85%81%5B%83%8B+%83C%83%93%83X%83g%81%5B%83%8B&lr=
モジュールの作り方ばかり出てくるか?

178 :177:01/09/21 10:15 ID:???
なんでこんなに遅れて二重投稿(鬱

179 :名無しさん@お腹いっぱい。:01/09/21 10:30 ID:j0KdAUa.
>>174-176
皆おなじ道をたどってきたのさ。。。

WindowsのActivePerlを使ってるなら、CPANからもってくるより
ActivePerlのサイトからPPMつうのでダウンロードするほうが
簡単な場合が多いよ。
ただPPM形式になってるのはメジャーなモジュールだけだから
有名じゃないモジュールはCPANを利用するしかない。

今インストールしてみたいモジュールは具体的に何かあんの?

180 :-:01/09/21 10:56 ID:z4AV09CI
モロ、無修正画像サイト発見!

http://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/

181 :名無しさん@お腹いっぱい。:01/09/21 12:32 ID:5isnB2us
>>179
ありがとうございます。涙。

今ほしいのは、MP3ファイルのタグを操作(主に読み込み)する
ためのモジュールです。
MP3-infoってのを見つけたのは良いのですが、これを
どうすれば???みたいな状態です。
Makefile.PLがあって、Makefileを作る、ってのは成功したものの、
makeなんて持ってないよ?という

182 :a'x ◆5GIjpSRQ :01/09/21 12:48 ID:???
>>181
ActivePerlならコマンドプロンプトから

ppm install MP3::Info

ってやればOK。

183 :名無しさん@お腹いっぱい。:01/09/21 15:09 ID:5isnB2us
>>182 ありがとうございます。使っているのはActivePerlです。
さっそく実行してみたところ、
Error installing package 'MP3::Info': Could not locate a PPD
file for package MP3::Info
というエラーになってしまいました。
C:\> ppm install MP3::Info
と、
C:\> ppm
PPM> install MP3::Info
両用やってみました。

184 :名無しさん@お腹いっぱい。:01/09/21 15:18 ID:???
>>181
こちらで一覧見て調べましょう。
http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/Packages
で、PPMPackageはデリミタ(::)指定じゃないです。

見たところありますね。
ppm install MP3-Info でどうぞ。

185 :a'x ◆5GIjpSRQ :01/09/21 15:24 ID:???
>>183
むぅ。俺はそれでinstall出来たんだが。
ひょっとしてfirewallの中からのアクセス?だったら

set HTTP_PROXY=http://(Proxyホスト名):(Proxyポート)

ってやってppm使ってみて。

186 :a'x ◆5GIjpSRQ :01/09/21 15:29 ID:???
>>184
>で、PPMPackageはデリミタ(::)指定じゃないです。
そうなの?俺は :: でも出来たが・・・・。(今試したら、- でも出来た)

187 :_gunzip:01/09/21 17:35 ID:???
VineLinuxにActivePerl入れて試してみたけれど、::でおっけいだったよ。

というか、ppmは中で
$package =~ s/::/-/g;としているから、デリミタの問題ではなくてtypoか何かじゃないかなあ。

188 :名無しさん@お腹いっぱい。:01/09/21 18:44 ID:nYoU2cMw
ファイルロックではどんなのがありますか?
普通はflock使いますか?

189 :名無しさん@お腹いっぱい。:01/09/21 18:49 ID:???
うん。

190 :名無しさん@お腹いっぱい。:01/09/21 19:03 ID:TAJp9wyQ
JavaScriptで、onload=で複数のスクリプトは起動できないの?
できるとすればどうやって書けばいいの?

191 :名無しさん@お腹いっぱい。:01/09/21 19:33 ID:???
板違い。

192 :名無しさん@お腹いっぱい。:01/09/21 19:35 ID:TAJp9wyQ
失敬パールだった。

193 :名無しさん@お腹いっぱい。:01/09/21 20:36 ID:RIYGknmQ
>>184-186 わーーーーー。入った。入りました。
ありがとうございます。typoだったのかな?
とにかく嬉しい! 感謝感激です。

194 :名無しさん@お腹いっぱい。:01/09/21 20:42 ID:ziETu.IM
Apache::Sessionなんですが、
セッションのタイムアウトを実現するために、
Apache::Session::MySQLでセッションテーブルに
TIMESTAMPフィールドを置いて、cronでスクリプト走らせて
一定時間以上前のものを削除しています。
こういうようなことを、Apache::Session::DB_Fileでやるには
どうしたらいいんでしょう?

195 :名無しさん@お腹いっぱい。:01/09/21 20:43 ID:???
>>184-187 でした。番号間違い。すみません。
さーがんばるぞー!

196 :名無しさん@お腹いっぱい。:01/09/21 21:11 ID:???
>>187
PPM見たけど、s/::/-/な部分が見当たらなかった。
ポインタ示していただけるとありがたいです。

197 :_gunzip:01/09/21 22:11 ID:???
>>196
あ、もしかしたらWindows版のppm.batを見ていませんか?

$ grep "s/::/-/" -n /usr/local/ActivePerl-5.6/bin/ppm
111: s/::/-/g;
164: $package =~ s/::/-/g;
190: $package =~ s/::/-/g;

198 :a'x ◆5GIjpSRQ :01/09/21 22:42 ID:???
>>196
Win版なら
C:\Perl\bin\ppm
の107行から(バージョンにより行は多少変わると思うが)
for (@ARGV) {
s/::/-/g;
}
と有ります。ppm.batにも同様に120行から
for (@ARGV) {
s/::/-/g;
}
と有ります。

199 :-:01/09/21 23:14 ID:1DKZHaUY
モロ、無修正画像サイト発見!

http://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/

200 :196:01/09/21 23:37 ID:???
>>197-198
ありがとう。
自分、CygwinPerlでしかも入れてないんで、
PPM-*.tar.gz持ってきてその中身見てました。

201 :149:01/09/22 04:45 ID:ZYiZZlao
>>152
レスおそくなっちゃいましたけど。
わざわざありがとうです。

202 :マヌケ初心者:01/09/22 05:32 ID:gUO1IwS2
すみません
apeボードのスキンを作っているのですが
強制改行させるにはどうしたらいいのでしょうか?
幅500の別ウィンドウに板を表示させてるのですが
改行せずに書き込まれるとマヌケに横に伸びてしまいます
そんな事もしらない俺がマヌケなのは重々承知しています
どなたか教えて頂けませんでしょうか?
宜しくお願い致します

203 :名無しさん@お腹いっぱい。:01/09/22 06:05 ID:???
>>202
それってスキンでスタイルシート使うとかして、なんとかならん?
apeボードのスキンって、そういうもんじゃないんすか。よく知らないけど。

まあ諸事情でどうしてもCGIを改造する必要があるというなら、
このサイト↓などを参考に。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Fold

204 :名無しさん@お腹いっぱい。:01/09/22 09:14 ID:YFImM5JM
初歩的でごめんなさい。

Perlでスクリプト書いて、ファイル名の拡張子を
「.pl」と「.cgi」どちらにしたらいいんですか?
どちらでも一応同じ動作をするんですが・・。
何か使い分けなんでしょうか・・・・汗

205 :名無しさん@お腹いっぱい。:01/09/22 09:30 ID:???
>204
サーバーによる。
サーバーの関連付けの設定で「.pl」でCGIが起動できない所もある。
そういう事があるから、閲覧者が直接参照する方が「.cgi」で、
ライブラリとかが「.pl」なんじゃないかと俺は考えてる。
あくまで憶測。

206 :マヌケ初心者:01/09/22 09:47 ID:1q1.uifg
>203
レスありがとうございました
おっしゃる通りスキンでなんとか・・と思ったのですが
widthで幅きめても結局書き込む時に改行されなかったら
横にのびちゃうんですよ
色々調べ回って他のテスト板試してみたんですが
どれも伸びてました(w
紹介して頂いたサイト見てきます
ありがとうございました。

207 :204:01/09/22 10:02 ID:???
>205
ありがとうございます。
少しずつ勉強したいと思います

208 :名無しさん@お腹いっぱい。:01/09/22 12:11 ID:EJpCVqks
<list>
<data>〜</data>
<data>〜</data>

</list>
というデータをXML::Generatorで作ろうと思っています。
与えられたデータ1行→<data>〜</data>に変換、で、
print "<list>"\n
while(<>){
my $xml = new XML::Generator;
$xml->data(…);
}
print "</list>"\n
のような処理を考えたのですが、これで良い物でしょうか?

不安なのは、while()の中でnewして良いのかなぁ?
freeとかってしなくてよいのかなぁ?という点です。
#根本的にかっちょわるいことしてたらやだなぁとも思う

209 :名無しさん@お腹いっぱい。:01/09/22 16:17 ID:???
>>208

ガベージコレクターがあるので問題なし。
ちなみに new なら delete でしょ?

210 :名無しさん@お腹いっぱい。:01/09/22 16:24 ID:EJpCVqks
>>209
なるほど。そうだったのですか! それなら安心です。
そして、newに対応するのはdeleteなのですね。恥。

211 :-:01/09/22 16:41 ID:X9qGQ5PU
その画像ならココ
http://members.tripod.co.jp/bingo852/

212 :名無しさん@お腹いっぱい。:01/09/22 16:43 ID:???
ディレクトリ下(含サブディレクトリ)にある全ての*。htmlを
パス名付きで取得するにはどうやるんでしょうか???

213 :名無しさん@お腹いっぱい。:01/09/22 16:44 ID:???
>>212 自分の番号をアドレスに入れようとして失敗

214 :名無しさん@お腹いっぱい。:01/09/22 16:58 ID:u4MHoQsY
モジュールがインストールされているかどうか調べるのって
どうやるんでしたっけ?

perl -e 'use LWP::UserAgent;'
とかやってエラーなければインストールされてるって判断して
いいんでしょうか?

215 :名無しさん@お腹いっぱい。:01/09/22 17:55 ID:bcGEWw7s
今WindowsにPerl入れて勉強してるんですが
Windows上で動かしているとflockとか使用できませんよね
flock以外にもWindows上だと使用できないものってありますか?

216 :名無しさん@お腹いっぱい。:01/09/22 17:56 ID:???
たくさんあるんじゃない

217 :名無しさん@お腹いっぱい。:01/09/22 18:12 ID:UPWBdois
>216
Windows上のPerlとかでsubstrとかって使えんの?

218 :名無しさん@お腹いっぱい。:01/09/22 18:18 ID:.Ro0S1Bw
大文字小文字を区別しないでソートする処理を
一行で書くにはどうすればいいですか?

219 :名無しさん@お腹いっぱい。:01/09/22 18:22 ID:???
>>211
use File::Find;
find sub { push @list, $File::Find::name }, ".";

>>214
perl -MLWP::Simple -e 'print $LWP::Simple::VERSION'
perldoc LWP::Simple
等。

>>215
WinNT/2000ではflock使える。
環境限定されるものは他にもある。

>>217
問題無い。

220 :名無しさん@お腹いっぱい。:01/09/22 18:23 ID:B3IfreL6
>>217
やってみればいいじゃん

221 :名無しさん@お腹いっぱい。:01/09/22 18:29 ID:???
>>211
use File::Find;
find sub { push @list, $File::Find::name if /\.html$/ }, ".";

>>218
map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [$_, lc] } @list;

222 :名無しさん@お腹いっぱい。:01/09/22 18:34 ID:???
>.221 ありがとう。想像してたよりムズカシー

223 :名無しさん@お腹いっぱい。:01/09/22 19:38 ID:u4MHoQsY
htmlから <img src="〜">を探してリストにするというスクリプトを
作ろうとしているのですが、長いページになると止まってしまいます。
正規表現で扱える文字長って最大値が決まってるのでしょうか。

while( $str =~ /(<img [^>]*src="?)([^"]+)("?.*?>)/isg ){
 $tag1 = $1;
 $img = $2;
 $tab2 = $3;

 $str =~ s/$tag1$img$tag2//i;

 print $img. "\n";
}

1行1行処理すれば問題ないのですが、
<img
src="〜">
というようなものもあるので

224 :223:01/09/22 19:48 ID:u4MHoQsY
>>223
すいません

while( $str =~ /(<img [^>]*src="?)([^"]+)("?.*?>)/isg ){
じゃなくて
while( $str =~ /(<img[ \r\n][^>]*src="?)([^"> ]+)("?.*?>)/isg ){
ですね。最初の<imgから最後までひっぱってた。^^;

馬鹿長いページでエラーが起きるのは同じです。
 

225 :名無しさん@お腹いっぱい。:01/09/22 19:50 ID:???
>>219 >>221
ありがとうございます!!! 感激っす!

226 :名無しさん@お腹いっぱい。:01/09/22 21:01 ID:???
>>223
それの原因はわかんないけど
タグ抜き出しツールを作るならHTML::Parserつーのも便利。

use strict;
my $file = "hogehoge.html";
my $parser = MyParser->new;
$parser->parse_file($file);

package MyParser;
use base 'HTML::Parser';
sub start {
my ($self, $tag, $attr, $attrseq, $text) = @_;
if ($tag =~ /img/i) { $text =~ tr/\r\n//d; print "$text\n"; }
}

227 :名無しさん@お腹いっぱい。:01/09/22 21:29 ID:???
>>226
おぉ、そんなものがありますか。感謝です。

ついでといってはなんですがディレクトリを扱うのに便利な
モジュールってありますでしょうか。
たとえばサブディレクトリを一度に削除できるようになるやつとか。

通常だと最下層から順番にやっていかなきゃいけないから。(´∈ ` )

228 :名無しさん@お腹いっぱい。:01/09/22 21:43 ID:???
>>227
use File::Path;
rmtree($root, 0, 0);

229 :名無しさん@お腹いっぱい。:01/09/23 00:45 ID:SMJO237A
>>228
なるほど、File::Pathでしたか。
せんきゅですっ!

230 :_gunzip:01/09/23 01:07 ID:???
>>223-224
についてコメントした方がいいかな...どうだろ。

231 :まなぶくん:01/09/23 01:13 ID:???
もちろんですっ!

232 :名無しさん@お腹いっぱい。:01/09/23 01:25 ID:???
>>230
色んなアプローチを示すのは良い事だと思うが。

233 :_gunzip@眠い:01/09/23 01:47 ID:???
あ...寝るところだった。

>>223-224さんの言う
>長いページになると止まってしまいます。
というのは、およそ二つの原因があるんじゃないかと。

例えば、下のスクリプトが何故"*"ではなく"**"と表示するのか...とか。
-------------------------------------------
#!/usr/local/bin/perl

our $string = "<<tag>tag>";

while($string =~ /<tag>/g){
    $string =~ s/<tag>//;
    print "*";
}
print "\n";
-------------------------------------------

234 :_gunzip@ぼけ:01/09/23 01:51 ID:???
>例えば、下のスクリプトが何故"*"ではなく"**"と表示するのか...とか。

...って当たり前だな。眠いけどまとめてみます。

235 :名無しさん@お腹いっぱい。:01/09/23 02:00 ID:uXqIVwdQ
$/ = "<";
s/^img //i and push @imgs, /src="?([^"\s])"?/i while (<>);
とか。

236 :腐ったソース大好き:01/09/23 02:02 ID:uXqIVwdQ
$/ = "<";
while (<>) {/^img /i and push @imgs, /src="?([^"\s]+)"?/i }


237 :まなぶくん:01/09/23 02:09 ID:???
んー、、ラストインなんちゃらでしたっけ
この手のは何時も試行錯誤で結果オーライなんだよなー
_gunzipさんはエンジンのソース読んでるんだろな・・・
(´-`).。oO(あたまいたい。。。)

238 :まなぶくん:01/09/23 02:10 ID:???
あ、糞レスだ。 ありがとッス、考えて見るッス
(´-`).。oO(ってまた糞レスだ。。)

239 :名無しさん@お腹いっぱい。:01/09/23 02:24 ID:???
すみません。みなさん。
アパッチでperlを動かすには
どのような設定が必要なのでしょうか?

240 :名無しさん@お腹いっぱい。 :01/09/23 03:10 ID:???
漠然としすぎ、つーかしばらくコマンドで遊べよ。
そんな感じで追加質問が延々と続くパターンはたまらんよ
簡単に言うと
httpd.confってファイル弄ってexecCGIするんだ
検索すれ

241 :名無しさん@お腹いっぱい。:01/09/23 03:35 ID:???
>>239
Apacheで[Perl]が動くって・・・。
別にPerlがインストールされていればApacheの有無に関係ないですけど。
CGIならスレ違いだかんね。

# ここんとこperlの質問で良い感じに流れてる気がする。

242 :名無しさん@お腹いっぱい。:01/09/23 03:51 ID:EZbM3lIs
>239
検索すればすぐに出てくるからおとなしくgoogleでも逝ってなさい

243 :239:01/09/23 05:41 ID:???
具体的に言うと
httpd.confの
設定はどうすればいいか?
です。

でもここはperl言語についてのようなので、スレ違いのようですな。

244 :名無しさん@お腹いっぱい。:01/09/23 06:18 ID:???
みなさん。
ありがとうございました。
httpd.confにExecCGIをつけて動きました。

ありがとうございました。m(_ _)m

245 :名無しさん@お腹いっぱい。:01/09/23 11:43 ID:IRukl05.
Windows上のPerlで下記の簡単なスクリプトを動かそうとしているのですが
動きません。間違ってはないと思うのですが・・・
unlink("*.*");
rmdir("*.*");


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

<html>
<head>
<title>デリート</title>
</head>

<body>
<BR><BR><BR><CENTER>
消しちゃいました〜(゚▽゚=)ノ彡☆ギャハハ!!
</CENTER>

</body>
</html>

EOF

exit;

上の方にもありますがWindowsME上のPerlではunlinkが使えないって
ことはないですよね?
それともunlinkとかrmdirに*って指定できないんですか?
とっても初心者な質問ですがお願いします。

246 :245:01/09/23 12:19 ID:IRukl05.
補足ですが下部のHTML部分は付け足しただけですので実際に使うときは
HTML部分はありません。

247 :名無しさん@お腹いっぱい。:01/09/23 12:46 ID:???
ワイルドカードなんて使えたっけ?

248 :名無しさん@お腹いっぱい。:01/09/23 12:56 ID:???
globなら使えるけどね。他は無理でしょ。

249 :名無しさん@お腹いっぱい。:01/09/23 13:11 ID:???
というわけで>>245
unlink(glob('*.*')); または unlink(<*.*>);
に修正しる。

250 :_gunzip:01/09/23 14:34 ID:???
while() 内はboolコンテキスト(スカラーコンテキストの一種)で評価されるため、
m//gは前回マッチした位置をmagicメンバ(これはリンクリストとして実装されている。)に記憶しておき、次回からはそのオフセットから検索を開始する。
マッチに失敗するか、文字列の内容に対する破壊的動作(代入その他)が行われた場合などは、オフセットを文字列の先頭に巻き戻す。
このことを知っていれば、
-------------------------------
our $string = "target string";

while($string =~ /target/g){
    my @a = ( $string =~ /another/g );
}
-------------------------------
が無限ループになることがすぐに分かる。

例えば、>233のスクリプトで実際のところ何が起こっているかというと、
(下の[][]..[]はメモリ内のイメージ。('\0'は除く)offsetはSv-PVMGのIVスロットの値、
lengthはlenメンバ、matchはmagic.mg_lenメンバのこと。)
--------------------------------------------------------
| $string = "<<tag>tag>";
--------------------------------------------------------

$string = ['<']['<']['t']['a']['g']['>']['t']['a']['g']['>']
| offset = 0 #バッファ領域内の文字列開始オフセット
| length = 10 #文字列の実際の長さ
| match = -1 # $stringに対するマッチの開始オフセット

% メモリ確保のオーバーへッドを抑えるためにPerlは予め余分に
% バッファを確保するが、ここでは割愛する。
-------------------------------------------------------

-------------------------------------------------------
| while($string =~ /<tag>/g){ # 一回目のループ開始
-------------------------------------------------------

$string = ['<']['<']['t']['a']['g']['>']['t']['a']['g']['>']
| offset = 0
| length = 10
| match = 7 #次回のマッチ開始位置が更新される

% $string の2-6文字がマッチしてリターンする。
-------------------------------------------------------

251 :_gunzip@今頃起きた:01/09/23 14:36 ID:???

-------------------------------------------------------
| $string =~ s/<tag>//;
-------------------------------------------------------

$string = ['<']['<']['t']['a']['g']['<']['t']['a']['g']['>']
| offset = 5 #更新される。上の6セル目に注目。
| length = 5 #当然短くなる。
| match = -1 #オフセットがリセットされる

% s///による置換。
% s///によって部分文字列が削除される際、Perlはマッチした個所の
% 文字列における位置を調べて、バッファを移動させる量が少ない方を採る。
% この場合、マッチしなかった先頭文字の'<'を5バイト後ろにずらし、
% バッファ先頭からの文字列開始オフセットを5に設定する。
% また、マッチの開始オフセットがリセット(-1)され、次のwhile()
% ループのマッチは、文字列の先頭位置から始めることになる。
-------------------------------------------------------

-------------------------------------------------------
| while($string =~ /<tag>/g){ #二回目のループ開始
-------------------------------------------------------

$string = ['<']['<']['t']['a']['g']['<']['t']['a']['g']['>']
| offset = 5
| length = 5
| match = 5 #次回オフセット(文字列終端)

% matchの値に従い、**文字列の先頭から**検索を開始し
% マッチは(始めの予想に反して)成功する。
------------------------------------------------------

252 :_gunzip:01/09/23 14:38 ID:???
よく寝た....もう昼じゃん。

>>223さんの「非常に遅くなる」というのは、理由が二つ考えられるけど、
((( っていうか、なぜs///の部分が入っているのかなあ.....。
....もしかして、while($string =~ /pattern/g) だと、前回マッチした部分文字列が
残っているので、次回もその部分がマッチし無限ループになるのではないかと思ったのかな?
それで、s///でその部分を取り除いておかなくては、と考えたのだろうか?
もしそうなら、m//gはスカラコンテキストでは前回のマッチ位置を記憶しておいて
次回はそこから検索開始するので,while()内にいれても特に問題はないってことは
知っておいて欲しいな。 )))

>長いページになると止まってしまいます。
から思うに、(余計な)s///の副作用(*注)で毎回検索開始位置がリセット(上の例参照)
されるため、毎度文字列の初めからマッチを開始せねばならず、また、置換に伴う
バッファの移動も大量に行われるようになる。その結果、ファイルが大きくなるにつれて
莫大な時間がかかるようになる、というのが原因の一つ。

(*注) $stringへのs///, 左辺substr(),代入などの破壊的操作だけではなく、
単なるm//gパターンマッチだけでもwhile()内のm//g検索オフセットはクリアされる。

253 :_gunzip@昼飯:01/09/23 14:51 ID:???
他の原因として考えられるのは、
$strに対して、さらに何か手を加えている。#-->無限ループ
| pos($str) = 0 #オフセットを明示的にリセット
| substr($str,0,0) = "hoge"
| $str .= "text"
while()ループ内のs///に'g'修飾子が付いている。#->無限ループ
$str内に'\n', '\w', '\G' 等のキャラクタがあり、s///の所でなにか副作用でも起こしている。
#-->データ見ないことには判断できない。

けつろん
while($string =~ /PATTERN/g)ループの中での$stringの扱いには少し注意して欲しいなあ、
ということです。(単なる読み出しは全く問題なし)
っていうか、>>223の場合は6行めのs///を削除すればいいだけのような。
(結局言いたいことはこれだけ.....)

--------------------------------------------
ちなみに、自分はHTML::LinkExtorモジュールの利用を勧めておきますね。

#!/usr/bin/perl

use HTML::LinkExtor;

HTML::LinkExtor->new(\&ext)->parse_file('./index.html');

sub ext
{
     my($tag, %attr) = @_;
    if( lc($tag) eq 'img' ){
         print $attr{src} , "\n";
    }
}

254 :_gunzip:01/09/23 14:57 ID:???
順番狂ってる....。

our $string = <<'END_OF_STRING';
<img src="/usr/local/pixmap/title.png">
<img
src="./cap.gif">
END_OF_STRING

while($string =~ /<img[^>]+?src\s*=\s*["']?([^'" >]+?)[ '"]?>/gis){
    print $1, "\n";
}

255 :名無しさん@お腹いっぱい。:01/09/23 17:20 ID:???
>>250-254
なるほどねぃ。
ためになる話をありがとう。

256 :名無しさん@お腹いっぱい。:01/09/23 20:53 ID:???
なる!_gunzipイイ(・∀・)♪

257 :名無しさん@お腹いっぱい。:01/09/23 21:48 ID:???
_gnuzip = この板最強

↑ですか?

258 :名無しさん@お腹いっぱい。:01/09/23 22:14 ID:???
このスレッドのpart2ぐらいからいるね。最初はAA貼ってて痛い人だたけど。

259 :名無しさん@お腹いっぱい。 :01/09/23 22:29 ID:???
痛い人とはなんだ (´Д`;)
実際_gnuzip JAPU両氏のお陰で厨房な俺は随分勉強になってるぞ
特に、コンパイラ読んでるらしい発言はメチャクチャ参考になるよ
Efectiveの脱線話読んでるみたいでとっても いい(・∀・)

260 :223:01/09/24 01:22 ID:39bTpAKQ
>>252
あ、 s///; っていらないんですか。
無限ループるかと思ってました。ありがとうございます。

HTML::LinkExtor調べてみます!

261 :名無しさん@お腹いっぱい。:01/09/24 01:29 ID:o1YS9rTQ
スレ違いは重々承知ですが、
このスレに主に住んでいるのでここで質問させて下さい。
作ったページを表示するとエンコードが西ヨーロッパに
なってしまいます。
<HTML lang="ja">
などと入れても問答無用です。
ちなみにブラウザはIEです。
何か良い方法はあるのでしょうか?よろしくお願いします。

262 :名無しさん@お腹いっぱい。:01/09/24 01:31 ID:???
>261
どこに住んでいようと関係ない。
然るべきスレに逝け。
このスレに引き篭もるな。

263 :名無しさん@お腹いっぱい。:01/09/24 01:41 ID:???
引越し準備ととのいましたぁ〜〜;;
いってきまふ・・・。

264 :名無しさん@お腹いっぱい。:01/09/24 01:57 ID:???
いい場所がみつから〜ん!

265 :名無しさん@お腹いっぱい。:01/09/24 02:22 ID:???
みつかった。
それにしてもこの板人すくなぁ〜…。

266 :名無しさん@お腹いっぱい。:01/09/24 02:34 ID:???
漏れも西ヨーロッパになるなあ、気にしないけど w
実際の所HTMLだけで文字コード100%指定するのって不可能なんだよね
charsetの手前でブラウザがコード決め撃ちしちゃったらそれまでだったりして・・
昔はS_JISならheadより手前に<!---あ--->なんておまじないも有ったけど
CGIだったらHTTPヘッダでContent-type指定してやればマシになるのかなぁ
漏れは中国語サイトを良く見るんでaccept-languageをch-1.0とかしてるのが
悪影響と思ってるけど。。。
激しくすれ違いだからSAGE

267 :名無しさん@お腹いっぱい。:01/09/24 02:43 ID:???
CGIだと仮定してみる。
Content-Type: text/html; charset=Shift_JIS
等。
スレ違いだが、まぁ。

268 :名無しさん@お腹いっぱい。:01/09/24 02:51 ID:???
htmlの最初のほうにコメントでその文字コード特有の文字を入れておくとか。
gooのホームページはそうだよね。

でもすれちがいなので下げ。

269 :名無しさん@お腹いっぱい。:01/09/24 02:59 ID:08MV7o4s
その割にgooは文字化け率高いけどな。
トップのスレを下げてもしょうがないのであげ。

270 : :01/09/24 03:32 ID:???
仕様に適合した UA なら head 内の charset 指定すればいいはず.
もちろん文書中でそれより前に漢字とか使っちゃダメだけど.
ttp://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/charset.html#doc-char-set

関係ないのでやっぱりさげ.

271 :名無しさん@お腹いっぱい。:01/09/24 04:03 ID:???
それを出すならこっちもだろう。

charsetパラメタの勧め: HTMLにおける文字符号化スキームの明示方法
http://www.fxis.co.jp/DMS/sgml/cafe/saloon/html_correct_charset.html

272 :もち米100%:01/09/24 06:54 ID:???
ちょっと漠然としていますが、エラー処理について質問です。
編集前の状態
ファイルA=>0
ファイルB=>0
編集後の状態
ファイルA=>1
ファイルB=>1

こんな感じの処理をする時にファイルBの編集中に例外やSIGTERM喰らって
処理が中断してしまった時ファイルAを0に巻き戻すような処理を行いたいのです。
つまりファイルAとBの時系列の同一性を保ちたいんですが(これって何って呼ぶん
だったかな、、んー)
イメージ的には2chだと、パラメータの汚染チェックが通れば次々ファイルを処理
して行く訳ですが、最終段階のindex.htmの書き換え中にコケてしまうような状態です
例えばショッピングカート等、お金の絡むプログラムだと、これが致命的な欠陥に
なると思うんですが、、中々自分では上手く行きません。

参考になる考え方や本なんかは有りますでしょうか。

273 :もち米100%:01/09/24 07:18 ID:???
んー われながら解りにくい日本語だ。。(-_-...
2chだと あるスレにカキコがあると
datに追記→subject.txt書き換え→テンポラリHTML書き換え→index書き換え
これだけ作業する訳ですが、どれかの更新中にこけてしまうと
それぞれのファイルは不整合をおこしてしまいます。

これを、全ての工程が成功して初めて書き換える、と言う感じで行いたいのです。
今の所テンポラリに書き出して一気にrenameする位しか考えが及びません。

274 :名無しさん@お腹いっぱい。 :01/09/24 07:59 ID:???
知らん、以上。

275 :名無しさん@お腹いっぱい。:01/09/24 10:37 ID:EJKgIokw
一週間でマスターするCGIというのをやっているのですが

アンケートをとるCGIでenquete.datに書き込んでくれません
line11は $data = "$form{'name'}$form{'mail'}\n----------\n\n";
line16は print ENQ $date;
なのですが
これってどういう意味なんでしょうか?

C:\1week\saturday>perl -cw enquete.pl
Name "main::data" used only once: possible typo at enquete.pl line 11.
Name "main::date" used only once: possible typo at enquete.pl line 16.
enquete.pl syntax OK

276 :名無しさん@お腹いっぱい。:01/09/24 11:05 ID:???
ホンヤク白〜〜〜 と言いたいがwcしてるのは感心
mainパッケージの$dataが一回しか使われてないけど、タイポしてんじゃ無いの?

my ($data,$date);

277 :名無しさん@お腹いっぱい。:01/09/24 11:41 ID:RCKEta/A
ありがとうございます
すいませんタイポってなんですか?

278 :名無しさん@お腹いっぱい。:01/09/24 12:01 ID:???
>>277
typo == "typographical error"
ようするに文字の打ち間違い。

279 :名無しさん@お腹いっぱい。:01/09/24 12:12 ID:???
>>272-273
Temporary -> Rename
ってのが簡単に実装出来る手段だというのは間違い無い。
参考になる本は、ム板の参考書スレにあった気がするぞ。

280 :名無しさん@お腹いっぱい。:01/09/24 12:16 ID:W/gfguRs
>>272-273
>テンポラリに書き出して一気にrenameする
これで良いんじゃない・・・?
最後に一連のrenameするときだけシグナルをトラップして
中断されないように配慮すれば。

281 :名無しさん@お腹いっぱい。:01/09/24 12:50 ID:mlN0ge2E
>>278
ご指摘のとうりただの打ち間違いでした

( ´Д⊂ヽううー、ありがとうございました
またヨロシクお願いします

282 :名無しさん@お腹いっぱい。:01/09/24 12:51 ID:???
Win32::OLEを使ったExcelのデータの作成・加工を行おうとしています。

セルへのデータ入力の一括入力は、以下のような方法で可能なのですが、
  @data = (
    [ qw(dataA1, dataB1, dataC1) ],
    [ qw(dataA2, dataB2, dataC2) ],
    [ qw(dataA3, dataB3, dataC3) ]
  );
  $Worksheet->Range("A1:C3")->{Value} = \@data;
セルに入力されているデータをURLの一部として持つHyperlinkを
同様にセルに一括挿入する方法が分かりません。

現状、A1:A3のデータを元にHyperlinkを挿入する際、
  for (my $i = 1; $i <= 3; $i++) {
    $Worksheet->Hyperlinks()->Add(
        $Worksheet->Range("A${i}"),
        "http://www.z.com/" . $data[$i - 1]->[0] . "/");
  }
のようにループを回して処理しているのですが、
データ数が多くなると分単位で時間がかかってしまう点が難点です。

Hyperlinkが定数であれば、下記の一括挿入が可能なのですが、
URLの一部にセルのデータを使用した場合のHyperlinkの
効率的な挿入方法はないものでしょうか?
  $Worksheet->Hyperlinks()->Add(
      $Worksheet->Range("A1:A3"), "http://www._.com/sample/");

VBA寄りの内容かもしれませんが、ご存知の方がありましたら、
ご助言頂ければ幸いです。

283 :名無しさん@お腹いっぱい。:01/09/24 12:52 ID:???
Win32::OLEを使ったExcelのデータの作成・加工を行おうとしています。

セルへのデータ入力の一括入力は、以下のような方法で可能なのですが、
  @data = (
    [ qw(dataA1, dataB1, dataC1) ],
    [ qw(dataA2, dataB2, dataC2) ],
    [ qw(dataA3, dataB3, dataC3) ]
  );
  $Worksheet->Range("A1:C3")->{Value} = \@data;
セルに入力されているデータをURLの一部として持つHyperlinkを
同様にセルに一括挿入する方法が分かりません。

現状、A1:A3のデータを元にHyperlinkを挿入する際、
  for (my $i = 1; $i <= 3; $i++) {
    $Worksheet->Hyperlinks()->Add(
        $Worksheet->Range("A${i}"),
        "http://www._.com/" . $data[$i - 1]->[0] . "/");
  }
のようにループを回して処理しているのですが、
データ数が多くなると分単位で時間がかかってしまう点が難点です。

Hyperlinkが定数であれば、下記の一括挿入が可能なのですが、
URLの一部にセルのデータを使用した場合のHyperlinkの
効率的な挿入方法はないものでしょうか?
  $Worksheet->Hyperlinks()->Add(
      $Worksheet->Range("A1:A3"), "http://www._.com/sample/");

VBA寄りの内容かもしれませんが、ご存知の方がありましたら、
ご助言頂ければ幸いです。

284 :名無しさん@お腹いっぱい。:01/09/24 12:56 ID:???
すみません、一部誤りがありました。

(誤)
  @data = (
    [ qw(dataA1, dataB1, dataC1) ],
    [ qw(dataA2, dataB2, dataC2) ],
    [ qw(dataA3, dataB3, dataC3) ]
  );

(正)
  @data = (
    [ qw(dataA1 dataB1 dataC1) ],
    [ qw(dataA2 dataB2 dataC2) ],
    [ qw(dataA3 dataB3 dataC3) ]
  );

よろしくお願いします。

285 :名無しさん@お腹いっぱい。:01/09/24 13:16 ID:4RAmdUns
>>284
URLの配列を作ってから一括代入するのはどうすか?
@cells = map { [ map { 'http://www.xxx.com/' . $_ } @$_ ] } @data;
$Worksheet->Range("A1:C3")->{Value} = \@cells;

286 :名無しさん@お腹いっぱい。:01/09/24 13:56 ID:???
>テンポラリに書き出して一気にrenameする
~~~~~~~

笑える。

287 :名無しさん@お腹いっぱい。:01/09/24 13:57 ID:???
>テンポラリに書き出して一気にrenameする
           ~~~~~~

288 :名無しさん@お腹いっぱい。:01/09/24 14:50 ID:???
>>285
レスありがとうございます。
舌足らずで、説明不足だったようです。どうもすみません。

実現したい内容は、セル自身はURLそのものではなくリンクの一部を表し、
それを使ったリンクを同じセルに埋め込みたいということです。

例えば、URLの一部になるセルのデータとしてISBNや2chのスレIDなどが入っており、
その隣に書名なりスレ名なりが入力されているような状況を想像下さい。
そして、該当リンクへジャンプするとAmazonや2chに実際に飛んで、
具体的な情報が見れるような使い方を考えています。

実際に考えている使用方法では、セル自身のデータがCGIのquery情報を保持しており、
それ自身が意味を持った値ですので、
セルの値にHyperlinkを直接もつというのは避けたいところです。

引き続き、情報お待ちしております。

289 :名無しさん@お腹いっぱい。:01/09/24 15:54 ID:GhpSecZ2
htmlのformとcgiでアンケートをつくっているのですが
<form method="post" action="enquete.cgi">

"送る"を選ぶとなぜか
"次の場所からダウンロードするように選択しました"
となってcgiのテキストを開こうとします
本のCDからデータをコピーしたので打ち間違えではないのですが、、、

何が悪いのでしょうか?

290 :名無しさん:01/09/24 15:56 ID:1qyod3pU
>>289サーバにアップロードしてないとか

291 :名無しさん@お腹いっぱい。:01/09/24 15:58 ID:???
適切なMIMEが設定されていない、とか。

または、IEの場合、*.cgiのファイルをテキストエディタ等に関連付けしてある状態で、
Content-Type: text/plainのCGIにアクセスすると、ダイアログが出るという状況が確認されています。

292 :名無しさん@お腹いっぱい。:01/09/24 15:58 ID:???
>289
ヘッダの情報が間違ってるとか。

293 :名無しさん@お腹いっぱい。:01/09/24 16:13 ID:GhpSecZ2
ありがとうございます

>>290
ローカルなのですがApache/htdocsに入れました
>>291
*.cgiはメモ帳のアイコンになってますこれがまずいのでしょうか?
>>292
ヘッダってどこのことですか?

294 :名無しさん@お腹いっぱい。:01/09/24 16:27 ID:???
>>293
> *.cgiはメモ帳のアイコン
ですね。関連付けを外したら直るかと。

ヘッダとは、Content-Type: text/plain とかのこと。

295 :名無しさん@お腹いっぱい。:01/09/24 16:53 ID:bJzfeBUI
>>294
ありがとうございます
それでどうやって関連付けを外すのですか?
申し訳無い

Content-Type: text/htmlというのならcgiデータに書いてあります

296 :名無しさん@お腹いっぱい。:01/09/24 17:17 ID:???
text/htmlなのかい。
どうしましょ。

関連付けはwin板ですかね。

297 :名無しさん@お腹いっぱい。:01/09/24 17:43 ID:???
変更しなくて良い。
Wクリックでメモ帳で編集出来るようになってるだけだから。。。

298 :名無しさん@お腹いっぱい。:01/09/24 17:44 ID:AOw736z6
パスワードを暗号化してクッキ〜に保存するにはどうすればいいのですか?
暗号化のやり方がわからない・・・

299 :名無しさん@お腹いっぱい。:01/09/24 17:53 ID:???
>>295
それ良く聞くけど、関連付けは関係無いと思うぞ。
インターネットの(外の)サーバのCGIではそんな風にならないんだろ?
だったら99%httpdの設定だって、WINは知らないけどApacheのconfファイル
見てみ。
>>298
$cryptpass = crypt ($plainpass,salt);
で$cryptpassをURLエスケープする

300 :-:01/09/24 17:57 ID:qSV25GfU
俺、このHP大好き!
http://members.tripod.co.jp/bingo852/

301 :名無しさん@お腹いっぱい。:01/09/24 18:01 ID:???
実際text/plain吐かれるとダイアログは出るぞ。
text/htmlなら何ら関係ないけど。

>>300
よく飽きないね。いい加減ウザイ。

302 :名無しさん@お腹いっぱい。:01/09/24 18:06 ID:???
>>301
そっか・・漏れデバッグの時plainで吐いてるけどなった事無かったから ゴメソ
じゃtext/html出してる前提で
httpd.confを触ってみて、多分Option辺りだと思うから。。

303 :295:01/09/24 18:10 ID:bJzfeBUI
ありがとうございます

フォルダオプション-ファイルタイプで削除して
*.cgiがwinのアイコンになったのですが
"送る"を押すとブラウザにcgiデータのテキストが出てきてしまいます

>>299
httpd.confというのは本に書いてあるように設定したのですが、、、

304 :名無しさん@お腹いっぱい。:01/09/24 18:20 ID:???
>>295
とりあえず、そのCGIは具体的に何するんですかね?

掲示板のようなCGIだと仮定してみる。
普通にtext/htmlを返すのが問題無いとして、
余程変にいじってないApacheならば問題ないはずだが。

305 :295:01/09/24 18:22 ID:bJzfeBUI
httpd.confの変更点

ServerName 127.0.0.1・・・Servername new host.name下に書き足し
Options FollowSymLinks ExecCGI・・・ExecCGIを書き足し
Options Indexes FollowSymLinks ExecCGI・・・MultiViewsをExecCGI
AddHandler cgi-script .cgi・・・#を削除

perl、cgiのみだと動くのですが、
html、shtmlに組み込むとまったく動きません

306 :295:01/09/24 18:26 ID:bJzfeBUI
>>304
htmlのformを使って書き込まれた内容を
cgiを使ってdatファイルに書き込むというモノなのですが、、、

307 :名無しさん@お腹いっぱい。:01/09/24 18:28 ID:???
datに書き込む処理が終わった後、そのdatが表示されるようになってない?
もしくはdatに飛ばしてるとか。

308 :名無しさん@お腹いっぱい。:01/09/24 18:28 ID:???
組み込むって <!---exec** しようとしてるのカー(゚д゚lll)

309 :295:01/09/24 18:41 ID:EJKgIokw
<FORM method="POST" action="enquete.cgi">htmlは問題無いと思うのですが
----enquete.cgiの内容----
#!C:/Perl/bin/perl
# ライブラリ
require 'cgi-lib.pl';
# デコードサブルーチン
&ReadParse(*form);
# ライブラリ
require 'jcode.pl';
# 文字コード変換サブルーチン
&jcode'convert(*form,'sjis');
# 連想配列から値だけを取り出し、区切りのハイフンを追加
$data = "$form{'name'}\n$form{'mail'}\n$form{'sex'}\n$form{'age'}\n$form{'kansou'}\n\n----------\n\n";
# 追加書き込みモード
open(ENQ, ">>enquete.dat") || die "File 'enquete.dat' Open Error.";
#flock(ENQ, 2);
print ENQ $data;
#flock(ENQ, 8);
close(ENQ);
# -----ここから出力 -----
print "Content-type:text/html\n\n";
print << "END_OF_HTML";
<HTML>
----お礼のページが開くようです----

310 :295:01/09/24 18:46 ID:EJKgIokw
一週間でマスターするCGIって本なので基本的な設定が間違っているのだと思います

データは付属CDからコピぺしたので動くはずなのですが、、、

311 :名無しさん@お腹いっぱい。:01/09/24 19:16 ID:???
つーかhello.cgiで実験すれ、print "Content-type: text/html\n\n<html><h1>hello";
<html><body><FORM method="post" action="hello.cgi">
<input type=submit value="post実験></FORM>
これPOST

生でCGI開いてGET、おかしかったらHTTPDの設定が悪い
検索したら、出てきた。

http://www.shoeisha.com/book/errata/er_detail.asp?bid=1222
http://www.google.com/search?q=WIN+CGI+EXEC+APACHE&hl=ja&lr=lang_ja

312 :名無しさん@お腹いっぱい。:01/09/24 19:34 ID:AOw736z6
>>299
アドバイスありがとうございます。
が・・・全くわかんないです。
簡単なプログラムのソース書いていただけないでしょうか?
お願いします。

313 :名無しさん@お腹いっぱい。:01/09/24 19:49 ID:???
#!/usr/local/bin/perl
print "Content-type: text/html\n\n<html><h1>Hello";
↑ これhello.cgiで保存
<html><body><FORM method="post" action="./hello.cgi">
<input type=submit value="post実験"></FORM>
↑ これhello.htmlで保存
ボタン押しても、直接CGI開けても「Hello」が見えないと駄目
で、何が悪いかと言うと大体Apacheの設定が悪いかWINの設定が悪い

お小言言わせて貰うとさ、「一週間でCGI」←このタイトルからしてダメ
●HTMLが書ける。
●自宅で試すならHTTPDの設定が出来る。
●Perlのプリント文が書ける。
これ3つとも出来ないとまともに動かない、だから一つづつマッタリと
遊びながらやった方が簡単なんだよね。
だから、どかっっとソース貼られてもアドバイスのしようが無い
「結局ドキュメントルート見えてませんでしたっ」とかも良く有る
で上の感じだと多分HTTPDの設定が間違えてるっぽいから
googleのリンクで調べてちょってわけ

314 :名無しさん@お腹いっぱい。:01/09/24 19:56 ID:???
俺も上で結構付き合ってきたけど、
>>311にソースが既に書いてあるのに、>>312見て愕然。

ちなみにスレ違いだったな。
http://corn.2ch.net/test/read.cgi?bbs=php&key=1000804655&ls=50

315 :312:01/09/24 20:00 ID:AOw736z6
>>314
スマソ。漏れは下のほうに答えたんです。
パスワードを暗号化してクッキ〜に保存するソースを知りたいんです。

316 :ほれ:01/09/24 20:15 ID:???
http://www.google.com/search?hl=ja&q=perl+crypt%8A%D6%90%94&lr=lang_ja
http://www.google.com/search?hl=ja&q=%83N%83b%83L%81%5B+%83G%83%93%83R%81%5B%83h&lr=lang_ja

317 :315:01/09/24 20:31 ID:AOw736z6
>316
ありがとうございます。
暗号化する方法はわかったんですが、どうやってクッキーの保存、読み出しと組み合わせればいいんですか?

318 :もち米100% :01/09/24 20:44 ID:???
>>279-280
ありがとうございます、やっぱりお手軽なのはリネームになりますか。
ショッピングカートとかこんな感じのトランザクションをどうやって保証してるんだろう
例えば最悪のタイミングでSIG{TERM}投げられたらどうしようとか、
2chのdjはsubjectの書き換えで0バイト読み込みしちゃってると思うんですが
考え出すときりが無いですよね。

取り合えずム板の参考書スレを読み直してみます。 レス感謝〜

319 :むぎ茶      :01/09/24 20:55 ID:???
パスワード掛けなければよい  (n

┐(´ー`)┌


┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶      ┃
┃mugicha@360.cc  ┃
┗━━━━━━━━━┛

320 :名無しさん@お腹いっぱい。:01/09/24 21:18 ID:???
一日見ない内に糞スレ。

321 :名無しさん@お腹いっぱい。:01/09/24 21:58 ID:.PROECLA
超初心者な質問なのですが
require'jcode.pl';
&jcode'convert(*data,'sjis');

print"Content-type:text/html\n\n";
if($data eq "hehehe"){

print<<EOF;
<html>
<head>
<title>ビィンゴー!</title>
</head>
<body>
正解じゃい!!<BR>
文句あるんか?
EOF

}

print<<EOF;
間違ってる
</body>
</html>
EOF
exit;

というのを作りました。
間違ったパスを入れるとちゃんと動くのですが、正解を入れると
正解の文字と間違った時の文字の両方が出てきます。
何か間違ってますか?

322 :名無しさん@お腹いっぱい。:01/09/24 22:07 ID:???
>321
if(){}else{}を使おう。
条件分けというものを一から勉強しなおした方がいい。

323 :322:01/09/24 22:14 ID:???
>321
一応ヒント。
・正解の時にだけ出すHTML
・間違いの時にだけ出すHTML
・正解でも間違いでも必ず出すHTML
を自分で理解しよう。

間違ったパスを入れた時も、ちゃんとは動いてないぞ。
HTMLソースを見てみな。

324 :名無しさん@お腹いっぱい。:01/09/24 23:52 ID:???
むぎを見たのも久しい気がする。

325 :321:01/09/24 23:52 ID:.PROECLA
>322
すいません。勉強しなおして解決することができました。
elseで解決しました。また1箇所構文が間違っていてそれも修正して
うまく動作するようになりました。
ありがとうございました。

326 :名無しさん@お腹いっぱい。:01/09/25 16:02 ID:rq8B7jsc
書き込むほどのことではないのですが
質問しようと思いブラウザを開きましたが、やはり質問する前にもう一度見直してみようと思い
2時間掛けて見直したらどうにか直りました。
何度か見直していたのですがやはり見落としがありました。
どうでもいいことなのですが・・・

327 :名無しさん@お腹いっぱい。:01/09/25 16:04 ID:???
どうでも良すぎる。

328 :名無しさん@お腹いっぱい。:01/09/25 16:13 ID:???
カレントディレクトリのファイル一覧@filesを最終更新順に並び替えるのってどうすればよいでしょうか?

329 :名無しさん@お腹いっぱい。:01/09/25 16:27 ID:???
@file = sort { (stat $a)[9] <=> (stat $b)[9] } @file;

330 :名無しさん@お腹いっぱい。:01/09/25 16:28 ID:???
>>326
構文チェックしよう。
perl -wc hoge.pl

>>328
@files = map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [$_, (stat)[9]] } @files;

331 :329:01/09/25 16:34 ID:???
@file → @files

332 :名無しさん@お腹いっぱい。:01/09/25 16:40 ID:???
>329
statを呼ぶ回数が多くなって効率が悪い?・・・

333 :329:01/09/25 16:55 ID:???
#! /usr/local/bin/perl
use Benchmark;
timethese(96, {
'329' => \&prog329,
'330' => \&prog330,
} );

sub prog329 {
opendir(DIR, './');
my @files = readdir(DIR);
closedir(DIR);
@files = sort { (stat $a)[9] <=> (stat $b)[9] } @files;
}
sub prog330 {
opendir(DIR, './');
my @files = readdir(DIR);
closedir(DIR);
@files = map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [$_, (stat)[9]] } @files;
}

--------------------------------------------------------------------------------------------

Benchmark: timing 96 iterations of 329, 330...
329: 2 wallclock secs ( 1.54 usr + 0.51 sys = 2.05 CPU) @ 46.83/s (n=96)
330: 1 wallclock secs ( 0.56 usr + 0.17 sys = 0.73 CPU) @ 131.51/s (n=96)


結構差が出るな。

334 :名無しさん@お腹いっぱい。:01/09/25 17:05 ID:???
ちなみにファイル&ディレクトリ数が 26個あるディレクトリで計測。

CPU Pentium200MHz
RAM 224MB
HDD 知らん
OS Vine Linux 2.1
Perl 5.6.1

335 :名無しさん@お腹いっぱい。:01/09/25 17:44 ID:???
@files = map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [$_, (stat)[9]] } @files;

このソート方法、良く見るんだけど未だに理解出来ない。。。
どっか解説してくれるサイトなあい?

336 :名無しさん@お腹いっぱい。:01/09/25 17:51 ID:???
>>335
右から見ていけば分かりやすいかと。

337 :名無しさん@お腹いっぱい。:01/09/25 17:56 ID:vAuR/uTY
map の使い方がやっとYO!

338 :名無しさん@お腹いっぱい。:01/09/25 17:57 ID:zsF862DA
@files = sort {(stat $b)[9] <=> (stat $b)[9]} @files;
と一緒でしょ。やってることは。

339 :名無しさん@お腹いっぱい。:01/09/25 17:57 ID:???
げ、329と一緒じゃん。。

340 :名無しさん@お腹いっぱい。:01/09/25 17:59 ID:???
$ck{$_} = (stat)[9] foreach @files;
@files = sort { $ck{$b} <=> $ck{$a} } @files;

こっちの方が早い

341 :名無しさん@お腹いっぱい。:01/09/25 18:41 ID:???
benchとったけど微妙だな。
まぁお好みで。

342 :名無しさん@お腹いっぱい。:01/09/25 18:45 ID:TUKvDv4A
ENVってどれくらい種類あるの?

343 :名無しさん@お腹いっぱい。:01/09/25 18:47 ID:???
>>342
環境による。

344 :名無しさん@お腹いっぱい。:01/09/25 18:47 ID:???
>>342
自分で調べろ。
keys %ENV

345 :名無しさん@お腹いっぱい。:01/09/25 18:49 ID:???
( ´_ゝ`) フーン

346 :まげ:01/09/25 22:27 ID:???
ちんこがかゆいので
自動チンコかきそふとを作ってください

347 :名無しさん@お腹いっぱい。:01/09/25 23:27 ID:???
家の外にアイスクリームを置いて下さい。
暫らくすると蟻が沢山寄ってくるのでそれをパンツに突っ込んで下さい。
上級者向けだけど・・・・頑張って!!

348 :名無しさん@お腹いっぱい。:01/09/26 07:22 ID:TfbH1r3A
HTTPではじまる環境変数ってどれくらい種類あるの?

349 :名無しさん@お腹いっぱい。:01/09/26 08:46 ID:???
>>348
自分で調べろ。

350 :JAPU:01/09/26 09:12 ID:???
無限にあります。

351 :らくだ:01/09/26 15:40 ID:???
でかいプログラムを書くと自分の作った関数がどこで呼ばれているかが把握できなくなりませんか?
そういうときに簡単に関数の呼び、呼ばれリストが作成できるツールってないのかな?

352 :名無しさん@お腹いっぱい。:01/09/26 15:46 ID:???
関数作る際自分でメモっとけ。

353 :らくだ:01/09/26 15:55 ID:???
なんか開発ツールとかないのかな?
JavaのForteとかJbuilderみたいな。

354 :名無しさん@お腹いっぱい。:01/09/26 17:11 ID:???
>>351
全文検索

355 :らくだ:01/09/26 17:13 ID:???
>>352
てめぇの厨房CGIと違って関数100個以上もあるんだよ。

#!/opt/bin/perl5
print "352 逝っとけ\n";

356 :名無しさん@お腹いっぱい。:01/09/26 17:15 ID:???
>>355 煽りウザイ。死んどけ。

357 :名無しさん:01/09/26 17:20 ID:mymJ1qjA
どこで呼ばれてるかの確認ってひつようかしら

358 :名無しさん@お腹いっぱい。:01/09/26 17:25 ID:???
>>357
まぁ必要だから聞いてるんじゃない?

つーか関数100個以上・・・・。

モジュールとかに分けろよ。

そっちがよっぽど厨房ゲフンゲフン

いやその前に関数多けりゃどうって話じゃねーだろ。

359 :名無しさん@お腹いっぱい。:01/09/26 17:31 ID:???
grepで一発ジャン。
馬鹿ばっかだな。

360 :名無しさん@お腹いっぱい。:01/09/26 17:39 ID:???
質問の本質をわかってない馬鹿発見。

361 :名無しさん@お腹いっぱい。:01/09/26 17:40 ID:???
コテハン糞レスの法則

362 :名無しさん@お腹いっぱい。:01/09/26 18:00 ID:???
一部を除いて、どうしてこんなにレベルが低いのだろう。

363 :らくだ:01/09/26 22:15 ID:???
>> 358,359
モジュールでも共通度が高いと意味がない。
厨房SEはとりあえず黙って逝ってください。

あとgrepじゃ、全体が把握できないでしょ?
君は厨房UNIX使いだから逝っといてね。

364 :名無しさん@お腹いっぱい。:01/09/26 22:18 ID:SfAEbkLc
>>351
プロファイラで代用するのは?

(1) hoge.plを実行してプロファイルtmon.outを作成
perl -d:Dprof hoge.pl

(2) tmon.outを解析して関数呼び出しのツリーを表示
dprofpp -t

ただし、あくまでもプロファイラの機能の一部なので、
実際に呼ばれた関数を記録して表示するだけ。
351の意図するところと多少違うとは思う。

365 :名無しさん@お腹いっぱい。:01/09/26 22:32 ID:???
共通度が高いのはモジュールとして一番望ましいんじゃねーの?
困った君だね。

366 :名無しさん@お腹いっぱい。:01/09/26 22:41 ID:???
「共通度が高い」という用語の共通度が低いのでは?>そこのふたり

367 :名無しさん@お腹いっぱい。:01/09/26 23:12 ID:???
ややこしくなってきたけど納得。>>366

368 :当方へたれ:01/09/26 23:18 ID:???
使ったことないが,これなんかはどうだろう。
http://www.bekknet.ad.jp/~bero/docj/module/03/index.html

関数呼び出しリストならPerlで書けそう。
へたれには無理だが。

つーか関数が把握できなくなるような設計はヘボだと思う。
strict使ったり,パッケージ分けやプロトタイプ宣言とか
スコープ狭くしたりすれば,あるていどはマシになるかと

369 :名無しさん@お腹いっぱい。:01/09/27 01:01 ID:wv3pEXiA
解答者を質問者が煽るというのが最近の流行りなのか?

370 :名無しさん@お腹いっぱい。:01/09/27 01:14 ID:???
>つーか関数が把握できなくなるような設計はヘボだと思う。
激しく同意。

>解答者を質問者が煽るというのが最近の流行りなのか?
らくだ氏は明らかに精神を病んでおられるので・・・・

371 :名無しさん@お腹いっぱい。:01/09/27 02:55 ID:Mu4f6YjE
sentence for (;;;);

な書き方ができないのを今始めて知った。

なぜだ。何か問題があったのか。

372 :1:01/09/27 03:00 ID:SujucJS2
その画像ならココ
http://www.f2.dion.ne.jp/~impact14/

373 :名無しさん@お腹いっぱい。:01/09/27 03:01 ID:???
>>371
forに修飾子はありません。
for修飾子が成立する時はforeachとして解釈されます。
よって()の中はリスト値でなければいけない、と。

374 :371:01/09/27 03:27 ID:Mu4f6YjE
>>373
さんきゅう ふぉー ゆあ かいんどねす

そういえば、
print for(1..10);
みたいなことはできるんだよな。なるほど納得。

でも、senetense for(;;) で使ったときに、なんか不味いことでもあるんかなぁ。
見栄え上というか、他の意味と取り違えやすくなったりとか?

375 :373:01/09/27 03:40 ID:???
確信あるわけではないけど。

修飾子の時は sentense for 1..10 みたいに書ける。
というか、自分は(1..10)みたくカッコ付けないです。
んで、(;;)の場合はカッコ無いと死んでしまう。

結局構文解釈上の問題なのかな?と。
# 多いに外している可能性があります。
# 識者の補足/説明希望。

376 :名無しさん@お腹いっぱい。:01/09/27 14:58 ID:199fgLMY
>>353
ActiveState社からVisual Perlが出ています。ただし有償ですけど。
ActivePerlは無償なんだけど、Debuggerは有償なんですね、ここ。

377 :Perlあまちゅあ:01/09/27 15:34 ID:n78xCnwc
すいません、コマンドラインで<STDIN>時に「キーボードから入力する文字数」を制限するのは、
どうすれば良いのでしょう?

(例えば、コマンドラインで、パスワードを入力するときに、8文字なら8文字と決まっていて、
9文字目は入力しても、画面には表示されない。)

OS非依存が良いのですが、依存せざるを得ないのであれば、Win依存でお願いします。
(キーが押されたってことを検出できれば、それをループでまわせるとは思うんですが、
 C言語のgetche や kbhitに相当するPerl関数がわからないんです。。とほほ。。。。)

厨な質問ですみません。(「CGIに依存しないPerlの話題一般」とのマルチポストでスンマソン)

378 :名無しさん@お腹いっぱい。:01/09/27 15:43 ID:???
( ´,_ゝ`) あっそー

379 :名無しさん@お腹いっぱい。:01/09/27 17:02 ID:???
Jフォンから、写真添付メールを送ると、
そのまま掲示板に掲載することのできるCGIはありませんか?

380 :名無しさん@お腹いっぱい。:01/09/27 17:14 ID:???
>>379 shine

381 :名無しさん@お腹いっぱい。:01/09/27 17:27 ID:088OSBr6
ENVのHTTP_X_LOCKINGとHTTP_FORMってなんですか?
色々調べてみたのですが不明です。

382 :むぎ茶      :01/09/27 18:09 ID:???
色々調べたのにそんな事も分からない君に乾杯  (n

┐(´ー`)┌


┏━━━━━━━━━┓
┃('Д')y ─┛~~  ┃
┃むぎ茶       ┃
┃mugicha@360.cc   ┃
┗━━━━━━━━━┛

383 :名無しさん@お腹いっぱい。:01/09/27 18:32 ID:2d.Y65Hw
HTTP::Cookiesについて質問です。
LWP::UserAgentを使ってPDA用中継サーバーを実験で作っています。

サーバーから送信されたcookieを受信して
$cookie_jar->save( $file );
でファイルに書き出すことはできたのですが
内容を要素毎に取り出す方法がよくわかりません。

要素毎に取り出してクライアントのブラウザに登録したいのですが
どのようにしたらいいのでしょうか?

初心者スレッドでする質問でもないような気がしますがほかに
いいスレッドがなかったのでここに質問しました。

384 :Mr.ちん:01/09/27 18:43 ID:Va6tTvlc
申し訳ありません。
質問があります。


CGI単体で指定フレームにリンクを飛ばせるものですか?

HTMLのMETAとか
Javascriptのlocationとかを吐き出させる方法以外で。

できるか、できないかだけでも教えてください。
宜しくお願いします。

385 :名無しさん@お腹いっぱい。:01/09/27 19:00 ID:???
意味不明。

386 :名無しさん@お腹いっぱい。:01/09/27 19:12 ID:???
( ´,_ゝ`) あっそー

387 :名無しさん@お腹いっぱい。:01/09/27 19:21 ID:???
>>383
HTTP::Cookieって使ったこと無いけど、どんな風にcookieがファイル
に書き出されるの?
書き出されたファイルを見れば分かりそうなもんだと思うのだが。

388 :名無しさん@お腹いっぱい。:01/09/27 20:00 ID:???
>>377

Cで出来ることがわかっているなら、Cでやったら?
このあたりは環境依存は仕方ない気がする。
モジュールあさればあるんだろうけど。

> h2xs -An Win32::Getch

## Getch.xs

#include <conio.h>

MODULE= .. PACKAGE = .. PREFIX = _

int
_getch

int
_getche

int
_kbhit

## Getch.pm

our @EXPORT = qw(getch getche kbhit);


> perl Makefile.PL
> nmake
> nmake install
> perl -MWin32::Getch -e "print chr(getch) while $c++ < 8

389 :名無しさん@お腹いっぱい。:01/09/27 20:17 ID:???
つーかHTTPヘッダ云々は下のサイトでたいていは解決する。ちゃんと調べろ
http://dir.yahoo.co.jp/computers_and_internet/internet/world_wide_web/HTTP/

390 :名無しさん@お腹いっぱい。:01/09/27 21:01 ID:???
>>389
どれに対するレスなのかまったくワカリマセン。

391 :名無しさん@お腹いっぱい。:01/09/27 22:56 ID:???
>>385 >>386 >>389
どれに対するレスなのかまったくワカリマセン。

392 :名無しさん@お腹いっぱい。:01/09/27 23:04 ID:???
>>390 >>391
( ´,_ゝ`) あっそー

393 :383:01/09/27 23:05 ID:???
$cookie_jar->as_string
でできました

394 :377:01/09/28 02:51 ID:AKSYR8.c
>388さん、親切にありがとう。

やっぱり、教えていただいたみたいに、C関数呼び出すしかないのかな〜。
んでもありがとう。とりあえず、これで良しとします。
CPANもちょと逝てきます。

395 :名無しさん@お腹いっぱい。:01/09/28 07:17 ID:WAa6BHU6

$scalar = @array;
だと$scalarには@arrayの長さが代入され、
($scalar) = @array;
だと@arrayに入っている最初の要素が代入されます。

配列変数がどのようなものかは大体理解できました。
でも・・・。

$scalar = localtime;
print "$scalar\n";

とすると
Fri Sep 28 06:14:13 2001
という現在の結果が帰ってきます。

連想配列の場合、$scalarが括弧で括られているかそうでないかで結果が違うの
に、
$scalar = (localtime)[0];
($scalar) = (localtime)[0];
は同じ結果(秒)が帰ってきました。

$scalar = localtime[0];
とすると

この場合は[]にどんな数字を入れても
Thu Jul 13 20:14:04 1978
という結果が帰ってきます。

localtime()って配列関数の一種ではないのでしょうか?
どういう仕組みになっているのか把握できず、混乱しています。

よろしくお願いします。

396 :名無しさん@お腹いっぱい。:01/09/28 10:47 ID:B/jfCTJo
aとbというファイルがあってaのファイルがロックされているときは
bのファイルに書き込むというのを考えているのですが
aがロックされているとき(またはbのファイル)という定義は
どのようにすればいいのでしょうか?
それともただ単にaファイルに書き込みできずにエラーとなったら
bファイルに書き込むという風にするしかないのでしょうか?

397 :JAPU:01/09/28 10:59 ID:???
use Fcntl qw[:flock];

if(not flock FH, LOCK_EX|LOCK_NB) {
print "ロック中\n"
}

flock は advisory lock なんで、ロックでも操作できます。なので、そういう場合は flock で調べるしか無いです。

LOCK_EX ... exclusive lock
LOCK_NB ... do not block (ロックが成功するまで待たない)

398 :396ではないが:01/09/28 11:25 ID:Qms.AdhU
上の式はFHというファイルがロックされてたらロック中とプリントする
ってこと?
初心者なものでifでこういうの初めてみました。

399 :JAPU:01/09/28 11:48 ID:???
FHというファイルハンドルがロックされていれば「ロック中」と表示します。

400 :396:01/09/28 12:08 ID:Aoj3kwsY
>JAPU
ありがとうございます。まさかこんなに早くレスがつくとは思いませんでした。
ifでこんな風にもできるんですね。まだまだ修行がたりないようです。
なかなか使える感じです。
ありがとうございました。

401 :名無しさん@お腹いっぱい。:01/09/28 12:48 ID:d/jxwhAU
>>395
localtimeは「スカラーコンテキスト」で評価されるとスカラー、
「リストコンテキスト」で評価されるとリストを返すから。
これで前半3つは理解できるはず。

で、最後の localtime[0]は、localtime([0])のカッコ省略形とみなせる。
つまりlocaltimeに [0]という引数を渡しているわけ。
[0]というのは無名配列へのリファレンスなので、
数値として評価すると何かの数値(そのアドレス?)が得られるんでしょう。

実際の[0]の値は↓これで見れるはず。
print [0], "\n"; #[0]をリファレンスとして表示
print [0]+0, "\n"; #強引に数値化して表示

402 :名無しさん@お腹いっぱい。:01/09/28 12:58 ID:???
ハッシュ変数のキーの数を調べるにはどうすればいいですか?

403 :名無しさん@お腹いっぱい。:01/09/28 13:13 ID:Aoj3kwsY
>402
keysでいいんじゃない

404 :名無しさん@お腹いっぱい。:01/09/28 13:18 ID:LKBMQiGk
>JAPU
open(FH, "a") || open(FH, "b")||die "File 'data' Open Error.";
aがダメならbをFHとしてopenとかでも良くない?

405 :JAPU:01/09/28 13:22 ID:???
open(FH, ">a") || open(FH, ">b") || die "File 'data' Open Error.";
ってことですか?
ロックされていても open 自体は成功しますが...
flock はあくまでも advisory lock なんで。

406 :404:01/09/28 13:34 ID:LKBMQiGk
ロックされててもopenできるの?
ではロックされてても追加で書き込みとかできるってことですか?
すいません。初心者なもので・・・

407 :むぎ茶     :01/09/28 14:10 ID:???
:ではロックされてても追加で書き込みとかできるってことですか
頭大丈夫か?(n


┐(´ー`)┌


┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶      ┃
┃mugicha@360.cc  ┃
┗━━━━━━━━━┛

408 :名無しさん@お腹いっぱい。:01/09/28 14:13 ID:PZbmJOfw
openはできるけど書き込みはできないんじゃない?

409 :名無しさん@お腹いっぱい。:01/09/28 14:27 ID:???
>>403
kyesだと真偽しか返ってきません。
一回keysで展開してカウントする以外にありますか??

410 :名無しさん@お腹いっぱい。:01/09/28 14:31 ID:???
>>408
openできる。
読み書きもできる。

ロックはできない。

だと思ふ。

411 :名無しさん@お腹いっぱい。:01/09/28 14:42 ID:???
>>409
それしかないと思うけどー。
よく見る例。 $n = scalar(keys(%hash));

412 :名無しさん@お腹いっぱい。:01/09/28 15:00 ID:PZbmJOfw
>410
flock中のファイルはopenも出来て書き込みも出来るの?
それじゃロックの意味がないんじゃない?
カウンターとかでflockよくみるけどあれはファイルを同時アクセス
とかでなるべく壊さないようにロックするんでしょ?
じゃなきゃロックに意味がないよ〜

413 :名無しさん@お腹いっぱい。:01/09/28 15:05 ID:???
>>412
もう少し考えてから発言する事を要求する。

414 :JAPU:01/09/28 16:32 ID:???
あー 言い方が悪かったかな。

flock ってのは「このファイルは俺が使うから誰も触るなよ」
って宣言するだけです。礼儀正しい人は「もう触ってもいいよ」って言われるまでは触りません。礼儀正しくない人は構わず触っちゃいます。ただそれだけです。つまり、単なる紳士協定。OK?
# これ以上簡単な説明は出来ないよ。

----
あと、共有ロック (LOCK_SH) に関して蛇足。
これは「共有ロックの人だけは何人同時に触っても良いよ」ってロックです。読み取りのみが必要な場面で使います。
排他ロック (LOCK_EX) する場合は共有だろうが排他だろうが1人でもロックしていればロックできません。

415 :名無しさん@お腹いっぱい。:01/09/28 16:53 ID:3TgAXZr.
flock(FH,2)
flock(FH,8)

416 :名無しさん@お腹いっぱい。:01/09/28 16:54 ID:IDlsq36I
さすがPerl初心者コーナー>JAPU

417 :名無しさん@お腹いっぱい。:01/09/28 17:44 ID:???
何がしたい?(w>415

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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)