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 :あぼーん:あぼーん
あぼーん

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 :あぼーん:あぼーん
あぼーん

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 :あぼーん:あぼーん
あぼーん

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 :あぼーん:あぼーん
あぼーん

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 :あぼーん:あぼーん
あぼーん

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 :あぼーん:あぼーん
あぼーん

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 :あぼーん:あぼーん
あぼーん

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

418 :名無しさん@お腹いっぱい。:01/09/28 20:05 ID:OpN/lBYw
どれくらいの事ができたら「脱初心者」といえるのでしょうか?

419 :丸出し:01/09/28 22:09 ID:DkMaxtU.
初心者丸出しですが
変数$tmpにどんどん追記していくには
どんな関数を使えばよいのですか?
丸出しで申し訳ないですが。

420 :名無しさん@お腹いっぱい。:01/09/28 22:11 ID:???
>>419
$tmp = 'hoge';
$tmp .= 'fuga';
print $tmp; # hogefuga

421 :>419:01/09/28 22:18 ID:???
いくらなんでも、名前と全4行の本文を合わせて合計3度も「丸出し」を唱えるのは
ちょっと守りを固めすぎですよ(w

422 :丸出し:01/09/28 22:18 ID:DkMaxtU.
なるほど!
スクリプトいろいろ見てて
"."ってなんだろ?って思ってたんですが
そういう事だったんですか!
即レス感謝!ありがとう〜!

423 :丸出し:01/09/28 22:20 ID:DkMaxtU.
>421
自慢じゃないですが
ディフェンス力の強さだけは
結構高いんですよねw
どうもでした〜。

424 :395:01/09/28 22:56 ID:???
>>401
うーん。
今の私には何が何やら・・・。

でも理解できるように頑張ります。

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

425 :名無しさん@お腹いっぱい。:01/09/29 09:48 ID:???
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?

426 :名無しさん@お腹いっぱい。:01/09/29 10:11 ID:???
sleepって1秒単位しかだめなの?

たとえば1/10秒とか1/100秒って指定できないのかな?
sleep(1/10);
とかってやってみたけど無視されてるようなきがするんだけど

427 :_gunzip:01/09/29 10:15 ID:???
>>426
sleep()は秒単位です。
ミリ秒単位でsleepしたい場合はselect()システムコールを用いるか、
Time::Hiresモジュール(Perl5.7.1からは標準)を利用してください。

select(undef, undef, undef, 0.1);

or

#!/usr/bin/perl
use Time::Hires qw[ sleep ];
sleep(0.1);

428 :名無しさん@お腹いっぱい。:01/09/30 00:52 ID:sHi5SnW.
今更ですが、このスレッドには御世話になってます。
識者の皆さん、ありがとうございます。
私も皆さんに追いつけるよう、努力していきたいと思います。

429 :名無しさん@お腹いっぱい。:01/09/30 00:52 ID:???
教えてください。
HTMLファイルに書き出す時、
.=  で、追記したものを、
HTMLファイルに書き出してるんだけど、
これ以外にいい方法ってありますか?

430 :名無しさん@お腹いっぱい。 :01/09/30 03:44 ID:???
意味が解らないDEATH
print文を健作してくだサイ

431 :名無しさん@お腹いっぱい。:01/09/30 09:16 ID:dIMlyAZM
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?

432 :名無しさん@お腹いっぱい。:01/09/30 11:12 ID:???
どっから迷い込んで来たのか・・・・迷惑な話だ
>>429
同じく意味が分からんけど、ファイルに書き出すって事?

print "hogehoge";#は知ってるはず
print<<"_HTML_";
hogehoge
_HTML_ #でもいいし

print HTML <<"_HTML_";
hogehoge
_HTML_

とか結構適当に書けば色々出来るよ  :-)

433 :太田@モナー板固定:01/09/30 11:59 ID:???
質問お願いします。
A2GIFという手法で、OS依存しないAA表示を実現させようと考えています。
Windows用ツールは自作、マック用ツールはとある方に作っていただいたんですが、
できればブラウザ上で表示させたいな、などと思っています。

私はPerlとかあんまり知らないのですが(ソースとかは少しなら分かるのですが)、
とある方に作っていただいたソースがあります。しかしPerlの設置・運用に関する
知識がまるで無いので、どう活用すればいいのか分かりません(泣)
みなさんの力を貸して頂きたいのです・・・どうかよろしくお願いします。

(A2GIF)文字のコードを読んでをgifに置き換え、画像として表示させることで、
ブラウザ依存/OS言語依存無しで2ちゃんねるAAの表示が可能です。転送量が膨大に
なってしまうのが欠点ですが・・・例えば( ´∀`)を変換すると下のようになります。
<html><body>
<img src=font/18line.gif><img src=font/sjis8169.gif><img src=font/sjis8140.gif><img src=font/sjis814C.gif>
<img src=font/sjis81CD.gif><img src=font/sjis814D.gif><img src=font/sjis816A.gif><br>
</body></html>

アップ.HP http://www42.tok2.com/home/hekomuyo/
通常版   http://www.geocities.co.jp/SiliconValley-Cupertino/9474/aameasure.lzh (約200KB)
A2GIF版 http://www.geocities.co.jp/SiliconValley-Cupertino/9474/aameasure_a2.lzh (約600KB)
ソース   http://www.geocities.co.jp/SiliconValley-Cupertino/9474/aameasure_src.lzh (10KB未満)
M.A.C.用 http://www07.u-page.so-net.ne.jp/rg7/yu-ya/warez.html
Perl版.?  http://green.jbbs.net/computer/bbs/read.cgi?BBS=391&KEY=1001606806&END=100
注)「Win版のソースが汚い」というクレームは受け付けていません(苦笑)

434 :名無しさん@お腹いっぱい。:01/09/30 13:14 ID:???
>>430 >>432 ありがとうございます。

意味不明申し訳ないです。cgiファイルではなくてHTMLファイル化ということです。
出力結果部分を.htmlファイルにする方法で.=を使ってますが変なので、
良い方法をご教授願いたいと思っています。宜しくお願いします。

$logfile = "kakidashi.html";
$syuthuryoku = "オマエモナー\n";

#以下の部分を一まとめにして、$htmlに代入する方法とかあるのかな?
$html .= "<html>\n";
$html .= "<head><title>この方法は変でしょ</title>\n";
$html .= "<body>\n";
$html .= "HTMLの出力結果は、$syuthuryoku\n";
$html .= "</body>\n";
$html .= "</html>\n";

open (OUT,">$logfile") || &error('オープンエラー');
print OUT ($html);
close (OUT);

&header();
print "<a href=./kakidashi.html>出力ファイル</a>";

sub error {
&header();
print "<body>$_[0]</body></html>\n";
}
sub header {
print "Content-type: text/html\n\n";
print "<html><head><title>この方法は変でしょ?</title></head>\n";
}

435 :名無しさん@お腹いっぱい。:01/09/30 13:19 ID:Bs/Yjz32
あ、太田さん来てる。
UAに依存しないAAですか。いいっすね。

436 :435:01/09/30 13:23 ID:???
一つ一つの文字をgifにですか。
なんか効率悪そうですね。gifcat(dog)とかで繋げられないかな?

437 :名無しさん@お腹いっぱい。:01/09/30 13:24 ID:LmdMp5e6
>>433
よくわからんが、web上でCGIとして動かしたいって事?
だとしたら、gatewayのサーバー立てて、そこにCGIを設置して、
httpリクエストでAAを取得→A2GIFに渡す→結果を返す
んでいいじゃない?

438 :太田@モナー板固定:01/09/30 13:25 ID:???
えーと、そっち方面の知識がまるで無いので・・・
カウンターを繋げたりする方法でしょうか。
1行1画像くらいにできれば効率上がりそうですね。

439 :太田@モナー板固定:01/09/30 13:29 ID:???
>>437
えーと・・・どうやるのでしょう?(汗)
自分のPCではちょっと鯖立ては難しいので、
トクトクでやりたいのですが、どうでしょうか・・・。

440 :名無しさん@お腹いっぱい。:01/09/30 13:29 ID:LmdMp5e6
>>434
open (OUT,">$logfile") || &error('オープンエラー');
print OUT qq{
<html>
<head><title>この方法は変でしょ</title>
...
};
close (OUT);

441 :名無しさん@お腹いっぱい。:01/09/30 13:34 ID:LmdMp5e6
perl動いてセッション間の通信ができれば鯖はなんでもいい。
トクトクは知らんが。
それ以前に、ユーザーインターフェイスの仕様をもうちょっと煮詰めた
方がいいと思われ。
動作イメージがさっぱりわからん。

442 :太田@モナー板固定:01/09/30 13:38 ID:???
>>441今のところ考えているのは、
案1:画面上に入力フォームがあって、そこにAAをコピペ、変換ボタンを押すとA2GIF形式のhtmlが表示される
案2:URLを入力するところがあって、変換ボタンを押すとURL先の内容がA2GIF形式に変換される

案1はちょうど掲示板の入力のような感じで、
案2は確か「幼児語化計画」のようなものです。

443 :名無しさん@お腹いっぱい。:01/09/30 13:57 ID:SdkZLPb6
open(COUNT, "+<$countdata") || die "File 'countdata' Open Error.";
flock(COUNT,2);
$counter = <COUNT>;
$counter1 = ++$counter;
seek(COUNT, 0, 0);
print COUNT "$counter1\n";
close(COUNT);
flock(COUNT,8);
print "Content-type: text/html\n\n";
print <<EOF;
<HTML>
<BODY>
<CENTER>
<FONT size="5"><B>
$counter1
</B></FONT>
</CENTER>
</BODY>
</HTML>
EOF

というのでテキストカウンターを作ったのですが表示したいHTMLに
<img src="hehehe.cgi">という風にしても表示されません。
テキストのみのカウンターの場合はどのように表示させてば
いいのでしょうか?
もちろん単体でしたらうまく機能しています。

444 :名無しさん@お腹いっぱい。:01/09/30 13:59 ID:???
>>434
$html = <<"__KOKOMADE__";
<html>
<head><title>それならヒアドキュメントでいいっす</title>
<body>
HTMLの出力結果は、$syuthuryoku
</body>
</html>
__KOKOMADE__

445 :コピペ職人:01/09/30 14:35 ID:???
open (HOGE,">hoge.html");
select HOGE;
print "<html><head></head>";
print <<"_HTM_";
<body>
これselect忘れると変になるんだよなー
</body></html>
_HTM_

446 :名無しさん@お腹いっぱい。:01/09/30 14:41 ID:E6kRmxB6
>>442
案2のほうは437や441が言ってるやつね。CGIプロクシ形式。
無料レンタルサーバだとできないように設定されてることが
多いけど、トクトクはどうなんかねー。

とりあえず、案1はどのサーバでも大丈夫だからやってみれば。
いま使ってる掲示板スクリプトはどんなやつ?
ちょっと改造するだけでオーケーと思うよ。

447 :名無しさん@お腹いっぱい。:01/09/30 14:58 ID:???
>>443
image/* を吐かなければいけないCGIに text/html を吐かせて、
君は一体何をしようとしているのだ。
それじゃ表示されなくて当然よ。
あとねー、なんつーか、closeした後にflockとかわけわからん。
HTMLも不思議マークアップだし。

448 :名無しさん@お腹いっぱい。:01/09/30 15:15 ID:???
>>447
テキストカウンターらしいよ。

>>443
IMGタグでtext/htmlを出力しようとしてもね…。

449 :443じゃないけど:01/09/30 15:43 ID:WrCS3j3.
ヒアドキュメントって他にどんなのがあんの?

450 :名無しさん@お腹いっぱい。:01/09/30 15:48 ID:???
>>449
それはどういう意味ですか?

451 :名無しさん@お腹いっぱい。:01/09/30 15:52 ID:mtebbK2k
>>443
みんな不親切すぎ。俺が答えるYO!

(1) SSIが使えるサーバなら
<!--#include file="hehehe.cgi"-->
(2) SSIが使えないサーバなら
<iframe src="hehehe.cgi" width=200 height=50>ブラウザ古い!カウンタ表示不能!</iframe>

452 :名無しさん@お腹いっぱい。:01/09/30 16:00 ID:???
>>449
最初よくまちがえるんだけど、
「print<< というヒアドキュメント命令」があったり、
「=<< というヒアドキュメント代入記号」があるわけじゃないですぜ。

<<"HOGE" から HOGEまでが「ヒアドキュメント形式の文字列」で、
それをprintしたり代入してるわけ。

453 :名無しさん@お腹いっぱい。:01/09/30 16:01 ID:???
>>451
親切そうに見せといて、不親切この上ない素晴らしい回答。

454 :名無しさん@お腹いっぱい。:01/09/30 22:52 ID:5nFULihc
DBからデータ取得後にcsv形式でデータをダウソロード
させたいのですがダウソロードのダイアログにサーバ名と
ファイル名が表示されません。ちなみにファイルのダウソ
ロードは問題なくできます。
$filename="hoge.csv";
$|=1;
print "Content-type: application/x-csv\n";
print 'Content-Disposition: attachment; filename='.$filename."\n\n";
#csvファイルをダウンロードさせる
open(FH, $filename) || die;
binmode(FH);
#ファイルに適したMIMEタイプを出力
while(read(FH, $buffer, 512)){
print $buffer;
}
close(FH);
exit;

455 :太田@モナー板固定:01/10/01 03:32 ID:???
2chスレッドのポスト関係の部分を取り出して、できるだけアレンジしてみました。
いかがなものでしょう?
<form method=POST action="a2gif.cgi"><input type=submit value="A2GIFで表示" name=submit>
<br><textarea rows=5 cols=70 wrap=off name=MESSAGE></textarea></form>

>>446
回答ありがとうございます。
表面的にはなんとなく分かるんですが内部でどんな動作になっているのか
全く知らないので・・・(1)ポスト用のhtmlで上のコードを入れておく、
(2)ポスト先のcgiファイルでA2GIFに変換して表示 って感じになるんでしょうか。
質問ばかりでは始まらないので、とりあえず掲示板スクリプトを見て勉強したいと思います・・・。

モナー板のこっちのスレでもA2GIFの話をしています。
http://piza2.2ch.net/test/read.cgi/mona/989849855/l50

456 :win32:01/10/01 12:31 ID:???
Win32のPerl使うときっていちいちディレクトリを切るときに'/'を'\'
に変更しないといけないんですか?
友達に聞かれたんですけど、今Linuxな環境しかないんで。。。

識者の方、教えてくださいませ

457 :名無しさん@お腹いっぱい。:01/10/01 12:33 ID:???
んなこたあ無い。

458 :名無しさん@お腹いっぱい。:01/10/01 13:37 ID:kD.LVvDk
>456
そんなことないよ。
それはただ単に変換がLinuxとWin32で違うだけでWin32で¥を押すと
¥がでるけどLinuxとかで¥と押すと逆スラッシュに変換されるだけで
一緒ですよ

459 :名無しさん@お腹いっぱい。:01/10/01 14:13 ID:???
バックスラッシュは関係無いと思うぞ。>>458
>>457 大丈夫、俺は識者じゃ無いけどPerlforWINやACTIVEPerlは
ディレクトリの区切り子を変換してくれる。Cygwinだと先にCygwinが
面倒見てくれるから問題無し。WIN <=> UNIX互換 の場合まず気に
しなくて良いと思う。

因みにMACの : は駄目、死にます 

460 :名無しさん@お腹いっぱい。:01/10/01 14:36 ID:???
>>459
>>457 大丈夫、俺は識者じゃ無いけどPerlforWINやACTIVEPerlは

いや俺に言うたかて、とマジレス入れてみる。

461 :名無しさん@お腹いっぱい。:01/10/01 15:29 ID:???
あ、わり>>460
MACって2つ上は ::: なんだよなぁ・・・

462 :名無しさん@お腹いっぱい。:01/10/01 16:09 ID:rWEZiHhg
macは糞

463 :434:01/10/01 16:15 ID:???
>>440 >>444 >>445
ありがとうございました。
考える幅が広がりましたのでHTML化にしてみたいと思います。

464 :暇人:01/10/01 16:27 ID:???
ID : rWEZiHhg の糞レス一覧。

===== 初心者質問スレ =====
462 名前:名無しさん@お腹いっぱい。 :01/10/01 16:09 ID:rWEZiHhg
macは糞

===== aspがうとしいですが =====
4 名前:名無しさん@お腹いっぱい。 :01/10/01 12:18 ID:rWEZiHhg
>>3
とても傷つきました。
慰謝料請求しますので。

===== JAPUをドキュソと罵る =====
106 名前:名無しさん@お腹いっぱい。 :01/10/01 12:23 ID:rWEZiHhg
DQNプログラマーの素質アリですね。

どうやら2番目のasp教えてスレにレスが無い事にご立腹の様子 ワラ
みんなレスしてあげてね♪

465 :名無しさん@お腹いっぱい。:01/10/01 17:03 ID:???
コマンドラインで利用してる時にスクリプトを実行した時の
基準パスは、
1:実行者のカレント
2:スクリプトの置かれたディレクトリ
のどちらになるかは決まっていますか?
それと、これはある程度OSに依存するものなんでしょうか。
/usr/hoge/に
foo.pl、foo.txt foo2.txt
/usr/hoge/huga/
bar.txt bar2.txt
この状態で/usr/hoge/huga/からfoo.plを実行した時に
カレントディレクトリは/usr/hoge/huga/ と思って間違いないですか?

466 :名無しさん@お腹いっぱい。:01/10/01 17:05 ID:???
追加
上の状態でスクリプトから ./ をreaddirすると
bar.txt bar2.txt が読まれると思って良いでしょうか

467 :名無しさん@お腹いっぱい。:01/10/01 17:34 ID:???
テストしてください

468 :名無しさん@お腹いっぱい。:01/10/01 17:46 ID:???
>>467
テストしたから聞いています。
「家の環境じゃそうはならないぞ」と言ったご意見を頂きたいのです。
それとも全ての環境をテストしなければ質問は許されませんか?

469 :名無しさん:01/10/01 18:03 ID:???
>>468
アホはほっとけよ 疲れるだろ p

それはともかく当然俺の環境でも同じようになったよ
Linux と Cygwinだけど
つーか今まで俺のツールはそれを前提に書いてきたから通用しない環境があると困るなー

470 :名無しさん@お腹いっぱい。:01/10/01 18:13 ID:???
心配ならchdirしときましょう。
もしくは絶対パスで指定。

471 :名無しさん@お腹いっぱい。:01/10/01 18:20 ID:???
>基準パスは、
>1:実行者のカレント
>2:スクリプトの置かれたディレクトリ

Win, Unixは全て1です。

472 :名無しさん@お腹いっぱい。:01/10/01 18:53 ID:IQ6dfID2
>443
シンプルなカウンタだな
どやって使うんだ?フレームか?

473 :Petit Perl style:01/10/01 19:02 ID:???
ソースの可読性についてです。
上級者のみなさんはスパゲッチになりがちなperlのソースを書くとき
どんな事を心掛けてますか

漏れが自分ルールにしてるのは、、
変数名は5文字まで、ただし変数名の説明を入れる
ヒアドキュメントはインデントが崩れるからキライ
大域変数は大文字  くらいッス!

474 :名無しさん@お腹いっぱい。:01/10/01 19:41 ID:???
>>473
変数名は意味が通じれば多少長くてもいいと思われ。
一般に言われてる Perlプログラマへの推奨スタイルはこれ。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlstyle.html

俺がやるようにしてるのは上と,関係ある変数はハッシュにする,
作業ごとにラベルつけて{}で括るか関数にするくらいか。

475 :名無しさん@お腹いっぱい。:01/10/01 21:05 ID:1S1Hyahg
>>473
>変数名は5文字まで、ただし変数名の説明を入れる
説明ってコメントで?

というか、説明入れないとわからない変数名は最悪。

476 :名無しさん:01/10/01 21:12 ID:1nBk41eo
>ヒアドキュメントはインデントが崩れるからキライ

インデント崩したくないのに激しく同意なんだけど、
printを並べるのも、なんか見栄えはともかく
繰り返し呼ぶことのオーバーヘッドがちょっときになったり。
473はどうしてんの。

477 :名無しさん@お腹いっぱい。:01/10/01 22:11 ID:???
>>469-471
ありがとうございます。安心しました  ^^
実は自分の書いたファイル管理スクリプトを人に上げたらどうも上手く動いて無い
様なので、そういう可能性を考えたのです。PC初心者さんなんであてにならないけど。。

470さんの言う通りなんですが、例えば ls.pl ./ ってされた時
ls.plでARGVを引っ張ってきたとして、ls.plディレクトリを
基準にされちゃうと非常に困るんです。
他にも方法が有るかもしれませんが、ここは仕様を理解した方が
良いかなと思ったんで。
ありがとうございました。  m(_ _) m

478 :名無しさん@お腹いっぱい。:01/10/02 04:48 ID:ISbv0fVM
逆に>>465
>2:スクリプトの置かれたディレクトリ
を取得するほうが難しいよ。特にOS依存なくそうとすると。
実はこれ、自分じゃ書けなかったのでFindBin.pmを見たら、
やっぱ結構苦労している。

CGIを実行するときApacheが自動的にchdirしてくれるってのは
かなりありがたいことだと思った。

479 :名無しさん@お腹いっぱい。:01/10/02 07:10 ID:puwr6ecI
とほほさんのwwwsrchを使っているのですが
これってcgiファイルの文字は検索対象に入らないのでしょうか?
掲示板の書き込みとかもトップページから検索できるようにしたいので。

どなたかご存じの方は教えて下さい。

480 :名無しさん@お腹いっぱい。 :01/10/02 07:35 ID:???
>>479
検索対象ファイルに加えてやれば出来ると思うよ。
でもログそのまんまだと読み難いんじゃないかなあ。
読み出しスクリプト通した方が良くない?

481 :名無しさん@お腹いっぱい。:01/10/02 08:31 ID:???
>>480
例えばどうするんでしょうか?
(すみません、無知なもので..)

482 : :01/10/02 10:22 ID:80rCzk0o
### location
sub location{
print "Location: $url\n";
exit;
}#location END

こんな感じで飛ばすと、表示したブラウザの下に
Location: ero.cgi?zap
と表示されます。表示しないようにする方法はありますか?
宜しくおねがいします

483 :名無しさん@お腹いっぱい。:01/10/02 10:27 ID:???
下ってどこよ?

484 :482:01/10/02 10:32 ID:80rCzk0o
>>483
ブラウザの一番下(ページ内)です
urlが出たりする所じゃないです

485 :482:01/10/02 10:37 ID:80rCzk0o
>>483
あっと、解決しました
すまんですたぃ

486 :名無しさん@お腹いっぱい。:01/10/02 10:41 ID:???
そりゃただのスクリプトのバグ。
必要ないのにlocationサブルーチンを呼び出してる。
どこだか分からなかったら、適当なところにアプすれば見るよ。

487 :名無しさん@お腹いっぱい。:01/10/02 10:41 ID:???
あ、かぶった。鬱。

488 :1:01/10/02 15:21 ID:LK1d/L0I
その画像ならココ
http://www.h2.dion.ne.jp/~goldman/

489 :バイトコードの取得方法について:01/10/02 15:36 ID:ZBXcT.qc
バイナリファイルを「変数」に読み込んで
一バイトずつループ処理をする方法はありますか?

「ファイルハンドル」を用いて指定位置のキャラクタコードを
取得する方法はありますか?
(getcだと位置を指定できません)

正に初心者のなのでよろしくお願いします。

490 :名無しさん@お腹いっぱい。:01/10/02 15:47 ID:???
CGIで、渡されたフォームデータをデコードする際に、
$value =~ tr/+/ /;
で躓いています。
実データの「+」をそのまま「+」で表示し、
半角スペースのみを変換するにはどうしたらいいのでしょう?

491 :490:01/10/02 15:59 ID:???
すみません。解決しました。
デコードの順番が逆でした。
逝ってきます。

$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
$value =~ tr/+/ /;

$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;

492 :JAPU:01/10/02 17:36 ID:???
>>489
seek と getc の組合わせで解決?

seek FH, 100, 0;
$c = getc FH;

# seek の使い方は perldoc -f seek を参照。
# または "プログラミングPerl 第2版" or "Programming Perl 3rd Ed." を買う。

493 :名無しさん@お腹いっぱい。:01/10/02 17:50 ID:RaZaDOV6
すみません、>>479をもう一度教えてもらえないでしょうか?

494 :489:01/10/02 18:51 ID:???
>492
レス有難うございます。帰宅してから試してみます。

495 :名無しさん@お腹いっぱい。:01/10/02 20:05 ID:???
正規表現でどうしても解らないのですが
http://で始まる文字列を抽出したいのですが

http://www.gc-inside.com/news/20010927am2.html
のようなURLは正常に処理されるのですが
http://choco.2ch.net/test/read.cgi?bbs=tvd&key=998696750
のような=?!&が混入したURLがマッチしません
よそのサイトのを参考にしてしまったので
正規表現部分の内容を余り理解して無くて困ってます

ちなみに下がソースです

#正規表現により配列に展開される
@http = $text =~ /s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+/g;

http://choco.2ch.net/test/read.cgi?bbs=tvd&key=998696750
のようなURLでもマッチするようにしたいのですが
できればアドバイス下さい
よろしくおねがいします。

496 :JAPU:01/10/02 20:28 ID:???
& -> &amp; に変換した後だったとかいうオチ?

497 :1:01/10/02 20:29 ID:LK1d/L0I
http://www.nt.sakura.ne.jp/~rose/

498 :名無しさん@お腹いっぱい。:01/10/02 20:37 ID:W6pnxjhI
&

499 :名無しさん@お腹いっぱい。:01/10/02 20:38 ID:W6pnxjhI
&amp;

500 :名無しさん@お腹いっぱい。:01/10/02 20:52 ID:6OIJd9Gg
拡張子を一括変換するのってどうやるんでしたっけ。
(たとえば全ての拡張子を.tmpに変更する)
なんかやりかたがあったような…

501 :名無しさん@お腹いっぱい。:01/10/02 20:54 ID:gYYU4i1s
Linuxのコマンドを実行する
system("command par");
で、ユーザーの追加をperlでやろうと思うんだけど

$username = 'hogehoge';
system("useradd $username");
system("passwd $username");

とすれば確かにユーザ追加されるが、パスワードは何か?と聞かれる(当然だけど)
そこでパスワードをパラメータとして入力するにはどう記述すれば良いんですか?
$userpass = 'xxxxx';
って感じで変数にしてやりたいんですが。

502 :JAPU:01/10/02 22:39 ID:???
>>500
foreach (<*.moe>) {
($x = $_) =~ s/\.moe/.tmp/;
rename $_, $x
}
とか?

csh 系なら、
foreach f (*.moe)
mv $f ${f:r}.tmp
end

bsh系なら、for .. done で。


>>501
chpass -p CRYPTEDPASSWD userなんてのはどう?

http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/adduser/adduser.perl?rev=.
とかも参考になるかも。

503 :名無しさん@お腹いっぱい。:01/10/03 01:59 ID:VWQvA4GE
>>500
DOSなら ren *.moe *.hoe

504 :FREAKES:01/10/03 02:32 ID:iOlT3Zgg
http://www.freakes.dyn.to/
うまく掲示板のCGIが動作しません
どうしてでしょう、自分では、みれるのに

505 :名無しさん@お腹いっぱい。:01/10/03 02:38 ID:???
http://127.0.0.1/aska.cgi

506 :名無しさん@お腹いっぱい。:01/10/03 03:42 ID:???
>>504
マルチポストうざい。

507 :名無しさん@お腹いっぱい。:01/10/03 05:39 ID:xNIE/jvQ
アクセスカウンタを作ろうとしています。

しかし以下のようなスクリプトだとどうもうまく行きません。
$counterlogのファイルを作成して一度目、二度目は1、2とカウントされ、表示
もされるのですが、三回目はいきなり13となります。4回目は1214、5回目は
12131215という具合です。

sub counter {

open(COUNTER, "+<$counterlog");
$counter = <COUNTER>;

++$counter;
print COUNTER $counter;
close(COUNTER);
}

どこがおかしいのか分かりません。

よろしくお願いします。

508 :名無しさん:01/10/03 05:52 ID:xwMhor1s
printのまえにseek COUNTER, 0, 0;かな?

509 :名無しさん@お腹いっぱい。:01/10/03 06:27 ID:7VPeoMkk
gzipを使ってみたいのですが、Windowsでテストできますか?

510 :名無しさん@お腹いっぱい。:01/10/03 07:00 ID:???
>>508
投稿したあとで検索エンジンで調べてみるとtruncate(COUNTER, 0);と
seek(COUNTER, 0, 0);との組合せを発見しました。

seek(COUNTER, 0, 0);だけでもいいのか・・・。

いろいろ試してみます。

ありがとうございます。

511 :名無しさん@お腹いっぱい。:01/10/03 07:03 ID:1Z0sNt2w
>>509
Windows用のgzipをGETせよ → http://www.gzip.org/

512 :名無しさん@お腹いっぱい。:01/10/03 07:12 ID:???
>>509
『出来る』と答えりゃ良いのか?

えすぱってみると、mod_gzipかCygwin辺り?
何をしたいのか書いとらんから、さぱ〜り分らん。

> 良い回答は良い質問から
>>1 を良く読んでくれ。

513 :509:01/10/03 07:32 ID:7VPeoMkk
すいません。mod_gzipでHTML出力をしたいのです。

514 :509:01/10/03 08:46 ID:???
環境はWin2000 + Perl + ANHTTPDです。
apache for win32を入れないと駄目なのでしょうか?

515 :名無しさん@お腹いっぱい。:01/10/03 09:20 ID:???
>>514
ANHTTPDは触ったことないんですけど、
Win2000 + Apache for Win32 ならmod_gzip入れるのは簡単ですよ。

ていうか513を読んで、試しに↓からダウンロードしてみたら
あんまり簡単に動いてびっくりした。
http://www.remotecommunications.com/apache/mod_gzip/

516 :ファイルの新規作成:01/10/03 12:36 ID:???
新規でファイルを作成するにはどうすればよいですか?
まだ存在しないので open ができずファイルハンドルが
取得できません。

517 :516:01/10/03 12:41 ID:???
すみません。うまくいきました。openできないと思っていたのは
他のエラーが原因でした。

518 :えび:01/10/03 12:41 ID:tut8CQIE
>>510
seek(COUNTER, 0, 0);で良いと思います。
seek(COUNTER, 0, 0);はファイルポインタを先頭までまき戻す。
truncate(COUNTER, 0);はファイルを0バイトまで切り詰める。
という処理ですが、
カウンターファイルに新しく数値を記入する場合であれば
seekで先頭にまき戻して新しいカウントの数を上書きすれば良いと
思います。
カウンターは桁が増えても桁が減るという事はないので
以前のデータから上書きしても以前のデータの切れ端とかが
残る事はないのでseekだけで問題はないでしょう。

519 :初心者だけど検索くらいは出来る人:01/10/03 12:49 ID:???
http://www.harukaze.net/~mishima/perl/faq/newbiefaq.html#4

520 :519:01/10/03 12:50 ID:???
>>519>>516宛。
しかも解決してるし。
逝ってきます。

521 :名無しさん@お腹いっぱい。:01/10/03 12:54 ID:???
かわいそうなので逝ってらっしゃいのキスして あ・げ・る(はぁと

ブチュゥ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

522 :名無しさん@お腹いっぱい。:01/10/03 13:34 ID:6LJeEkqs
>>521
まじで背筋がゾッとしたからやめてくれ

523 : :01/10/03 14:13 ID:???
数段階の仲介を経てからでしかその知識を得られないなんて。
理想ならその業界の技術書を熟読するのが一番なの。
サバ構築だって然り。ネットとは何か?と言うこと。
書店にあるものを読んでるうちは中級どまり。
高校の微積分を学ぶときは決してニュートンやライプニッツの原書を読まないのは単に難易度の問題。
機会があれば読むべき。

524 :名無しさん@お腹いっぱい。:01/10/03 14:20 ID:???
523 は何が言いたいのか要点を纏められたし。

525 : :01/10/03 14:36 ID:???
サラサーテ、著者の飯代の為に使い物にならない偽専門書を買うな!
業界が発行してる物を無料で入手できそうなんだから!

526 : :01/10/03 14:37 ID:???
まぁ、C/C++ならJIS X 3010やANSIから入手したらいいんだよ
厨房を偽装して買いあさるな!

527 : :01/10/03 14:40 ID:???
オレはソフトにはカネは使わん!(エンターテイメントは除外)
ハードにはしぶしぶ使う。
けどアキバで部品単位でBSテレビが作れるなら
それに超したことはない
故障のたんびに悪対応の窓口は死ね!

528 :名無しさん@お腹いっぱい。:01/10/03 14:43 ID:???
スレ違い。カエレ!!

529 :名無しさん@お腹いっぱい。:01/10/03 15:01 ID:HFewZhw6
とほほさんのwwwsrchを使っているのですが
これってcgiファイルの文字は検索対象に入らないのでしょうか?
掲示板の書き込みとかもトップページから検索できるようにしたいので。

どなたかご存じの方は教えて下さい。

530 :1:01/10/03 15:11 ID:1nsRDm4c
http://www5.justnet.ne.jp/~ttp/

531 :名無しさん@お腹いっぱい。:01/10/03 15:57 ID:???
>>529
スレ違い。つかマルチポスト死ね。

532 :名無しさん@お腹いっぱい。:01/10/03 16:41 ID:???
そんなことより腹減らねぇ?

533 :丸出し:01/10/03 17:23 ID:eJHCCMAc
最近一日一食だ…。
ところで話を戻しますが、
なんかナイスタイミングで529と似てるんですけど
文字列検索する時って正規表現じゃなくて
index使う利点ってあるんですか?
これだと大文字小文字区別しない風にできないと
今の知識だと思うんですけども…?あほな事いってます?

534 :a'x:01/10/03 17:35 ID:???
正規表現よりindexの方が速い。

535 :名無しさん@お腹いっぱい。:01/10/03 17:40 ID:???
↑本に書いてあること真に受ける馬鹿

536 :a'x:01/10/03 17:43 ID:???
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
ら辺読め。

537 :名無しさん@お腹いっぱい。:01/10/03 17:44 ID:???
アホな質問かもしれませんが while ループでは
カウンタは自前で用意する必要がありますか?
$xxx みたいにあらかじめ使える変数が用意されているとか
ないですか?持っている本には出ていないのですが
あればいいなと。

538 :名無しさん@お腹いっぱい。:01/10/03 17:46 ID:???
↑Webページに書いてあることを検証もせずに受け売りをする馬鹿

539 :名無しさん@お腹いっぱい。 :01/10/03 17:46 ID:???
$xxxって何? そんなの有るのか???

540 :名無しさん@お腹いっぱい。:01/10/03 17:46 ID:???
>>537
ないよん。

541 :名無しさん@お腹いっぱい。:01/10/03 17:47 ID:???
>>538
Benchmarkやindexの使い方分からない猿  ププ

542 :名無しさん@お腹いっぱい。:01/10/03 17:48 ID:???
低レベルな争いはよせ。
>>541
そんな奴いない。

543 :名無しさん@お腹いっぱい。:01/10/03 17:51 ID:???
下らないことには盛り上がるね。

544 :名無しさん@お腹いっぱい。:01/10/03 18:02 ID:???
PCとi-mode共用の掲示板を作っているのですが、
半角カナで入力された場合、全角カナに自動的に直して
表示する環境変数を教えて下さい。バイト数をチェックすれば
いいんでしょうか?

545 :名無しさん@お腹いっぱい。:01/10/03 18:02 ID:???
#! /usr/local/bin/perl
use Benchmark;
open FH, "./seek.dat";
@lines = <FH>;
close FH;
timethese(16, {
'REGEXP ' => \&find_by_regexp,
'INDEX ' => \&find_by_index,
} );
sub find_by_regexp {
my $count = 0;
foreach (@lines) {
if (/an/) {
$count++;
}
}
}
sub find_by_index {
my $count = 0;
foreach (@lines) {
if (index($_, "an") >= 0) {
$count++;
}
}
}

Benchmark: timing 16 iterations of INDEX , REGEXP ...
INDEX : 3 wallclock secs ( 3.31 usr + 0.00 sys = 3.31 CPU) @ 4.83/s (n=16)
REGEXP : 4 wallclock secs ( 4.02 usr + 0.00 sys = 4.02 CPU) @ 3.98/s (n=16)

2万行のデータで検証。

546 :名無しさん@お腹いっぱい。:01/10/03 18:03 ID:???
結論 535 538 はただの煽り。

547 :名無しさん@お腹いっぱい。:01/10/03 18:05 ID:???
$ENV{'ZENKAKU_TO_HANKAKU'}の事ですか?
これを使えばいいですよ?
検索して頑張って下さい?

548 :名無しさん@お腹いっぱい。:01/10/03 18:05 ID:???
当たり前の常識を検証して大得意の545萌え

549 :538:01/10/03 18:06 ID:???
で、どっちが速いんだよ?

550 :名無しさん@お腹いっぱい。:01/10/03 18:09 ID:???
あほらし。このネタ終わり。
-------------仕切り直し----------------

551 :名無しさん@お腹いっぱい。:01/10/03 18:11 ID:???
>>548
まさか本当に検証されるとは思わず嘘ついて荒らそうとしていた
548=538萎え。

552 :名無しさん@お腹いっぱい。:01/10/03 18:18 ID:???
indexネタはもう終わりにしてね。
それより>>547を問い詰め(以下略

553 :544:01/10/03 18:27 ID:6STEKkdE
す、すみません。聞き方がまちがってました。
環境変数じゃなくて、置き換え演算子の事です。
よろしくお願い致します。

554 :512:01/10/03 18:34 ID:???
>>514 509
515さんが言ってるとおり、Apache入れた方が凄まじく楽なのは事実。
ただ、mod_gzip使わなくてもCGIの出力ならGZIPと併用して出来なくも
無い筈。AnHttpdは使ってないから分らんけど。
ここ見てくれ。
http//www.ibport.co.jp/~yui/cgiwork/tech/index.html
これやるなら、たぶんCygwin入れると厄介しなくてすむと思う。
つか、Apache(Win32)入れた方が早いかなぁ(苦笑

どっちかと言うと、『CGIだけど、なんか質問ある?』スレ向きな
気もしてきた…。

555 :名無しさん@お腹いっぱい。:01/10/03 19:09 ID:1VC1FzQw
>>544
Perl自体には半角全角変換の機能は(まだ)ないから、
自分でコードを書くか、出来合いのライブラリを使います。
たとえばjcode.plを使って$FORM{TEXT}を変換するなら下のとおり。

require 'jcode.pl';
jcode::h2z_sjis(\$FORM{TEXT});

556 :544:01/10/03 19:22 ID:???
>>555
ありがとうございました。
演算子を使えばできるかもと思っていたんですが、
勉強不足でした。精進します・・・

557 :555:01/10/03 20:07 ID:???
>>556
ついでに自力でコードを書く例も。

%han2zen = ( #一部のみ抜粋
'ニ'=>'ニ', 'ク'=>'ク', 'コ'=>'コ', 'ッ'=>'ッ', 'プ'=>'プ',
'ン'=>'ン', 'マ'=>'マ', 'ズ'=>'ズ', 'ー'=>'ー',
);

$s = "ニクコップン(-д-)マズー";
$s =~ s/([。-゚][゙゚]?)/$han2zen{$1}/ge; # ←ここで変換
print "$s\n";

これで大丈夫かな?? 実際には%han2zenに、
すべての半角カナ→全角カナの対応を入れてください。

558 :555:01/10/03 20:12 ID:???
>>557 は間違い。s///ge; じゃなくて s///g; でした。

559 :544:01/10/03 20:12 ID:???
>>555
重ねてありがとうございます。
早速、参考にさせていただきます。
まだまだ勉強せねばです・・

560 :丸出し:01/10/03 20:34 ID:???
なるへそ〜〜〜。
indexのが早いんですか!
ある配布cgiで検索機能があったんですけど
半角全角を一緒にして検索できる便利さを捨てて
鯖の負荷を減らす方をとったのか。
なるへそ〜〜。ありがとです。

561 :名無しさん@お腹いっぱい。:01/10/03 20:50 ID:VH/5AUng
ローカルでANHTTPとActivePerlで色々やっている者ですが
REMOTE_HOSTをgethostbyaddrでIPからアドレスに変換したのですが
変換するとpop3.norton.antivirusと表示されます。
これって何でしょう?間違ってはないと思うのですが…
識者の方でご存知のかたおられましたらお願いします。

562 :名無しさん@お腹いっぱい。 :01/10/03 20:59 ID:???
悩豚のローカルプロクシだろ、
気にスンな
気になるならセキ板でもいって「ハックされていますっ!!!!」
ってスレ立てて死んでこい  w

563 :名無しさん@お腹いっぱい。:01/10/03 22:33 ID:???
$xxx はPerlで幾つか用意されているグローバル変数と
言う意味で書いています($で始まるの色々ありますよね)。

564 :名無しさん@お腹いっぱい。:01/10/03 22:43 ID:???
だから無いって。

565 :名無しさん@お腹いっぱい。:01/10/03 22:53 ID:???
素直にfor使えば?
そのためのやつでしょ。

566 :名無しさん@お腹いっぱい。:01/10/03 23:37 ID:CQyY2Ec6
全くの初心者で、初心者ならPerlと薦められてきた者ですが、
Perlで定期的に送信フォームを押すみたいなことはできますか?
つか、初心者はその前にこれ覚えれみたいなことありましたら指摘お願いします。

567 :名無しさん@お腹いっぱい。 :01/10/03 23:38 ID:???
答え:
まず日本語を勉強してね &heart

568 :566:01/10/03 23:43 ID:???
>>567
意地悪しないでお願いします。
どこかおかしな日本語があったでしょうか?

569 :not 567:01/10/03 23:49 ID:???
>>566
> 初心者はその前にこれ覚えれみたいなことありましたら指摘お願いします。

質問の仕方

570 :名無しさん@お腹いっぱい。:01/10/03 23:50 ID:???
>566
>>1周辺を見ろ。
方言使うな。

571 :566:01/10/03 23:54 ID:???
>>569
勉強して出直してきます・・・

572 :名無しさん@お腹いっぱい。:01/10/03 23:59 ID:???
厳しいなぁ(笑
ちょっと漠然としすぎてて答えようが無いよ
この板に良書スレが有るから、そこを良く読んで自分に合った
本を一冊買って下さい。
で、それを読みながらWEBなんかも活用して勉強すればいいよ。
それといきなりCGIは薦めないな、、少しはPERL書けるようになって
HTMLも書けるようになれば自然と書ける様になるから

573 :566:01/10/04 00:21 ID:???
>>572
ありがとうございます。
全然右も左もわからないもので・・・
以前age荒らしをスクリプト組んでやってる、というのを見て、
プログラミングに興味を持ったのですが、(荒らしをしたい訳じゃないんです。断じて)
例えは悪いですが、そういうことはできるのか知りたかったんですが、
これでもまだ漠然としているんでしょうかね・・・
とりあえず、勉強して出直してきます。有り難う御座いました。

574 :名無しさん@お腹いっぱい。:01/10/04 00:24 ID:???
おう、頑張れよー

575 :名無しさん@お腹いっぱい。:01/10/04 00:30 ID:???
ま、あれだな。ゲーム作りたくなってプログラミングに興味もったけど、案外難しくて挫折な厨房もいるしな。
関係ないけどね。頑張ってね。

576 :510:01/10/04 02:08 ID:f1gid5yY
>>518
えびさん
遅くなりましたが、詳しいお答えありがとうございました。

・・・精進します・・・。

577 :名無しさん@お腹いっぱい。:01/10/04 08:23 ID:9Z2wk3j2
向上心のない善人よりも、
明確な目標を持った厨房のほうが好きだね。俺は。
つーわけで>>566みたいな奴には期待したい。

(1)ローカルマシンにPerlとWebサーバを入れる。
(2)全環境変数表示CGIを自作し、Webサーバで動かす。
(3)GETメソッドで(2)のCGIにアクセスしてみる(LWP::Simpleモジュールが便利)
(4)POSTメソッドで同じく(2)にアクセス(LWP::UserAgentモジュール)
とりあえ、以上の実験を試してみることをすすめる。

578 :名無しさん@お腹いっぱい。:01/10/04 08:41 ID:???
>>537,>>563
残念賞として"$."(現在の行番号)をあげよう。

while (<DATA>) { print "$. $_"; }
__DATA__
mona
giko

579 :509:01/10/04 09:10 ID:???
>>515,554
有難うございます。Apache for win32入れてやってみます。

580 :名無しさん@お腹いっぱい。:01/10/04 11:35 ID:nOAoqb9A
CGIで、呼び出し元のURLを知りたいのですが。
HTMLA → CGI の、HTMLAのURLです

581 :名無しさん:01/10/04 11:37 ID:???
リファラを読む

582 :名無しさん@お腹いっぱい。:01/10/04 13:23 ID:nOAoqb9A
CGIモジュールのrefererでよいのでしょうか。>>581
空白になっちゃうんです。うううむ。

583 :名無しさん@お腹いっぱい。:01/10/04 13:28 ID:???
単純に%ENVから読むのはどうよ?

584 :580/582:01/10/04 14:10 ID:???
別の環境でやったらうまくいきました。
ありがとうございました>>581 >>583 さん

585 :名無しさん@お腹いっぱい。:01/10/04 15:33 ID:???
>>557の正規表現って全然だめじゃん!
てか、えらそうに書いたの俺なんすけど。
正規表現スレ逝って修行してきます・・・。

586 :名無しさん@お腹いっぱい。:01/10/04 16:14 ID:???
perlで、いわゆるdiv演算子に相当する演算子って何ですか?
9 div 4 = 2
9 mod 4 = 1
のdivです。

587 :名無しさん@お腹いっぱい。 :01/10/04 16:31 ID:???
int (9/4)   笑っ

588 :名無しさん@お腹いっぱい。:01/10/04 16:33 ID:???
9%4    笑笑っ

589 :名無しさん@お腹いっぱい。:01/10/04 16:52 ID:4x063qa6
publicフォルダ外の、ブラウザからはアクセスできない場所にあるファイルに
Perlからアクセスすることは可能でしょうか?
出来る場合、相対パスでアクセスするのでしょうか??

590 :名無しさん@お腹いっぱい。:01/10/04 16:55 ID:???
>>587 >>588
あ。divはないんですね。
%があるのに変だなぁと思って探してたんです。

#9-(9%4)とかやってたですよ。鬱。int()でいいんだ…

591 :名無しさん@お腹いっぱい。:01/10/04 17:41 ID:???
整数計算を多用するときはintegerプラグマ使うと楽っぽい。
いまいち動作がわかってないんだが。

{ use integer; $foo = 9 / 4; }
または
use integer; $bar = 9 / 4; no integer;

592 :名無しさん@お腹いっぱい。:01/10/04 17:44 ID:???
>>589
可能である。
相対パスでも絶対パスでも。ただしURLじゃなくてOSのパス。

593 :名無しさん@お腹いっぱい。:01/10/05 00:35 ID:???
.pl と .pm の違いが良くわかりません。それぞれどういう長所があるのでしょう。

my と local の違いが良くわかりません。どう使い分けるべきなのでしょう。

594 :名無しさん@お腹いっぱい。:01/10/05 05:47 ID:???
>>593
一口には説明できないけど、まず".pl"と".pm"の表面的な違い。

●Hoge.plファイル
require 'Hoge.pl'; で読み込む。
実際はどんな拡張子でもいいが慣例として".pl"が使われる。
requireでは、この命令を実行する時点でファイルが読み込まれる。
必要なときのみrequireするようにうまくコードを書くと
無駄なメモリを使わずにすむ。

● Hoge.pmファイル
拡張子".pm"の扱いは特別で、
use Hoge ('mona','giko'); と書くのは、
BEGIN{ require 'Hoge.pm'; Hoge->import('mona','giko'); }
と書くのと同じ。
BEGINブロック相当なので、コード中のどこにuse Hogeを書いても
Hoge.pmは起動時に必ず読み込まれる。
決して実行されない位置、たとえばif (0) { use Hoge; } でもね。
さらに自動的に実行されるHoge->import()を利用して各種の初期設定が可能。
importメソッドをどう使うかは自由だけど、普通はHogeクラスを
メインプログラムから簡単にアクセスするための設定とかを書く。

#まだ言ってることワケワカだろうけど、そのうちわかる。

595 :名無しさん@お腹いっぱい。:01/10/05 11:28 ID:QBNm.OW.
シフトJISのテキストを処理して、UTF-8で出力したいのですが、
どのようにしたら良いでしょうか。
また、ゴミデータ(エディタで表示できないような文字)の
判別方法はありますか?

596 :名無しさん@お腹いっぱい。:01/10/05 11:44 ID:Cx9AZXvI
>>595
Jcode.pmを入手して使うと楽。
日本人が作ったやつだけど、CPANにあるっけ?調べてみて。

use Jcode;
my $s = "まあ聞いてくれよ、スレと関係あるからさ。\n";
print Jcode->new(\$s, 'sjis')->utf8;

何がゴミデータかというのはエディタにもよるから。どのエディタ?

597 :596:01/10/05 11:46 ID:???
Jcode.pmをインストールするにはCコンパイラが使える
環境でないとだめだったかも。。。
Windows用ならコンパイル済みのやつがある。

598 :名無しさん@お腹いっぱい。:01/10/05 11:51 ID:???
>>592
c:/bin/
こんなの?

599 :名無しさん@お腹いっぱい。:01/10/05 12:32 ID:???
>598
そんなの。unix系は"c:"なしで。

600 :名無しさん@お腹いっぱい。:01/10/05 13:07 ID:QBNm.OW.
>>596 ありがとうございます!

ゴミデータってのは、制御コードのようなものとか、
文字コードが判別できないような「F・カ」みたいに表示されて
しまうものとか。そういったデータのことです。
エディタによって表示が違うのはその通りですね(^^;

601 :名無しさん@お腹いっぱい。:01/10/05 18:48 ID:???
$data = 'hogehogeMicro$ofthogehoge';
$hash{'Micro$oft'} = "VVindovvs";
foreach(keys %hash) {
$data =~ s/$_/$hash{$_}/;
}
print $data;

この場合 "Micro$oft" に含まれる "$" がパターンと見なされて
うまく置換できません。どのような回避方法が考えられるでしょうか?
自分ではパターン文字列でメタ文字と見なされてしまう文字列を
あらかじめエスケープする置換処理を挿入しているのですが
あまりスマートとは思えません。

パターン部の変数展開を一度だけ行ってくれるといいんですが。
「o」では期待した動作が得られませんでした。

602 :名無しさん@お腹いっぱい。:01/10/05 18:51 ID:???
\Q$_\E

603 :名無しさん@お腹いっぱい。:01/10/05 19:22 ID:???
ハッシュキーが少なければ"|"でつなげた正規表現を最初に作っておくのもありだな。

$data = 'hogehogeMicro$ofthogehoge';
%hash = ( 'Micro$oft' => "VVindovvs", 'hoge' => '[ピー]' );
$re_keys = join('|', map { "\Q$_\E" } keys(%hash));

$data =~ s/($re_keys)/$hash{$1}/go;
print $data;

604 :名無しさん@お腹いっぱい。:01/10/05 23:37 ID:QBNm.OW.
>>600
Jcodeをppmでインストールしようとしたら
>Installing package 'Jcode'...
>Error installing package 'Jcode': Read a PPD for 'Jcode',
>but it is not intended for this build of Perl
>(MSWin32-x86-multi-thread)
というメッセージが出てきてしまいました。バージョン違い?
CPAN逝ってきます。

605 :名無しさん@お腹いっぱい。:01/10/06 00:32 ID:MEgHrhMk
>>604
うわーん。

http://search.cpan.org/search?dist=Jcode
>FAIL MSWin32-x86-multi-thread

ってのはWinはダメの意でしょうか。かなりしょんぼり。

606 :名無しさん@お腹いっぱい。:01/10/06 00:47 ID:???
>>605 続き
すみません。
http://openlab.ring.gr.jp/Jcode/index-j.html
にありました。

607 :名無しさん@お腹いっぱい。:01/10/06 08:38 ID:xcBMND.s
ファイルに記録する時、1人(グループ)に関する複数の
データを記録する時の区切り文字には定番だったり
慣例のものとかってあるんですか?
よく目にするのが<>だったり\tだったりしますが?
教えてくらはい。

608 :名無しさん@お腹いっぱい。:01/10/06 10:51 ID:32vtXsHY
自分のPCはWindowsなんですが、perlを書くときに
UNIXみたいに#! /usr/local/bin/perl(コマンドライン?)
というのを使える様にするにはどうすればいいんでしょうか?
ちなみに、perlソフトはActive Perlです。

教えて君初心者ですみません。。

609 :名無しさん@お腹いっぱい。:01/10/06 10:56 ID:???
>>607
エクセルとか意識するならCSVは忘れない方がいいんじゃないかな
\tはTSVって言ってCSVの親戚みたいなもんか。。
<>が使われるのは多分BBSとかのログは大抵タグがエスケープされてる
から、デリミタ混入→ミスヒット、の可能性が低くなるからだと思う

610 :名無しさん@お腹いっぱい。:01/10/06 11:09 ID:xcBMND.s
>デリミタ混入→ミスヒット、の可能性が低くなるから
なるほど!<>にはそういう意味があったんですか!
どうもありがとうございます。
TSVってのは知りませんでした。
メモ帳とかで開くとタブで区切っとけば
見やすいからだと思てた・・・。

611 :名無しさん@お腹いっぱい。:01/10/06 11:10 ID:???
>>608
入手にちょいと苦労するがむっちゃ便利なプログラムがある。
ベクターで「SOS」を検索してみ。

612 :名無しさん@お腹いっぱい。:01/10/06 11:28 ID:xcBMND.s
http://www.vector.co.jp/soft/dos/util/se028129.html
これの事ですかね?
PERLで書いたスクリプトをcなんかの様に実行形式に
コンパイルできるソフトって無いものですか?
あるにはあるけど正確じゃない。みたいな事は耳にするのですが?
どうなんでしょう?

613 :名無しさん@お腹いっぱい。:01/10/06 14:14 ID:???
>>608
Cygwin入れたらいい

これで一件落着

614 :608:01/10/06 17:41 ID:PN8fPnr6
>>613
それを入れたら良いとか本に書いてあったんですが
ダウンロードサイトに行ってみたら、どうやら金取られるみたいで..
611さんの言うのもダウンロードしたのですが
どうやってパッチを当てるかいまいちわからなくて..。

ほんと、難しいですよね...鬱

615 :名無しさん@お腹いっぱい。:01/10/06 18:51 ID:???
Cygwin有料になったのか?  笑
もっと健作白〜〜〜
何をそんなに焦っているのか? 今日納期の仕事してる訳じゃ無いだろ
実際Unixのshellに触る事は回り道でもなんでも無いんだぞ
って9xで使えたかな (・∀・;)??

616 :名無しさん@お腹いっぱい。:01/10/06 19:46 ID:???
>>614
http://cygwin.com/setup.exe
これ落とせ
んで、どっかに移動してから起動して、それで適当にサーバー選んで落としてこればいい

617 :614:01/10/06 20:26 ID:w30D7B7.
>>615-616
どうもありがとうございんます。。
どっかに移動して起動して、というのはどういうことでしょうか?
ディスクトップに解凍するのでいいのですか?

あと、大変失礼な質問なのですが
そのファイルは大丈夫なのでしょうか?
拡張子がexeなので心配で...

618 :名無しさん:01/10/06 20:36 ID:???
どうやらアナタはWINDOWSの操作に先に慣れた方が良さそうです。
まずWIN板に行ってファイル操作や圧縮解凍に付いて学びましょう

>あと、大変失礼な質問なのですが
>そのファイルは大丈夫なのでしょうか?
>拡張子がexeなので心配で...

憶測ですが、おそらく616氏はsetup.exeのAUTHORでもcygwin.comのサーバ管理者でも
無いと思われますので何がどう大丈夫なのかは分からないでしょう

619 :617:01/10/06 21:58 ID:w30D7B7.
>>618
すみません、実はP検3級のOSはAなんです(w
解凍とかもたまにUGにいくのである程度はわかるのですが
でも、やっぱり深く掘り下げると難しくて。。

一瞬ウィルスだと思ったんですがアドレスが違うみたいですね。
ちょっとexeファイルに過敏になっていたもので..。
もう少し勉強してまた、質問させていただきます。

620 :名無しさん@お腹いっぱい。:01/10/06 22:12 ID:???
解凍はたまにUGに逝くとある程度わかるんですか。名言ですね(藁

621 :名無しさん@お腹いっぱい。:01/10/06 22:22 ID:w30D7B7.
>>620
解凍するソフトの種類や拡張子の種類はわかりますです。

622 : :01/10/06 23:20 ID:???
さてはあなた、ただのワレザーですね

623 :名無しさん@お腹いっぱい。:01/10/06 23:29 ID:tXZdOs1c
perlの範疇ではないかもしれませんが…

ファイルからデータを読みだし、そのデータを含むHTMLを
ブラウザに表示させるスクリプトを書きました。
TELNETのコマンドライン上から実行すると
狙いどおりの出力をしてくれるのですが、
ブラウザ上からURLを入力して実行すると
500 Internal Server Errorがでてしまいます。
パーミッションなども確認したのですが
おかしなところは見当たりません。

何かチェックすべきところが他にあるのでしょうか。

624 :名無しさん@お腹いっぱい。:01/10/06 23:43 ID:???
Content-type?

625 :623:01/10/06 23:46 ID:tXZdOs1c
print "Content-type: text/html\n";
HTMLの直前に書きました。

626 :名無しさん@お腹いっぱい。:01/10/06 23:51 ID:???
>>623
print "Content-Type: text/html\n\n";

627 :623:01/10/06 23:51 ID:???
改行2つ「\n\n」
でした。自分で書いて気がついた。

助かった〜ありがとうございました。

628 :626:01/10/06 23:52 ID:???
ゴメンちぇく済みだったみたいね

629 :たかちゃん:01/10/06 23:54 ID:j.NzGGwA
すいません
初心者ですが、cgiを設置したのに見ると
CGI エラー - 以下のコマンドラインを実行できません : "perl C:\kujira\aska.cgi ", errorcode = 2, No such file or directory
と出るのですが、どうしてでしょうか?
お願いします
おしえてください

630 :名無しさん@お腹いっぱい。:01/10/06 23:55 ID:???
CGIスレ逝って下さい。

631 :名無しさん@お腹いっぱい。:01/10/07 02:00 ID:???
perlのスクリプトをコンパイルして実行形式にしたいです。
助けてやって下さい。

632 :名無しさん@お腹いっぱい。:01/10/07 02:12 ID:???
>631 perlcc。
CGI速くするだけなら別の方法もあるよ。

633 :名無しさん@お腹いっぱい。:01/10/07 14:43 ID:???
foreach (reverse 1 .. 10) {}だと、
1番目から10番目を逆順で処理してると思うんですが、
逆順にしてから1番目から10番目を取得するにはどうしたらいいでしょうか。

つまり、
1-30のうち
10,9,8...,2,1ではなくて、
30,29,28...,22,21と取得するということ。

634 :名無しさん@お腹いっぱい。:01/10/07 14:44 ID:jXvc6whk
>632
perlccですか!ありがとうございます。
けどやっぱcとかみたいにうまくコンパイルできないとか
言う話をちらほら聞いた事あるんですけどどうなんでしょう?
>CGI速くするだけなら別の方法もあるよ。
良かったら教えて欲しいっす!!
どんなんでしょう?

635 :名無しさん@お腹いっぱい。:01/10/07 15:15 ID:???
>>644
スライスの使えばOK.
(reverse 1..30)[0..9]

636 :名無しさん@お腹いっぱい。:01/10/07 15:18 ID:???
すまん。>>633ね。逝くわ。
あと、30から21がほしいだけなら、reverse21..30でもいいような。

637 :JAPU@愛国戦隊大日本:01/10/07 16:13 ID:???
>>633
for($i = 30; 20 < $i; $i--) としても良いです。

>>634
mod_perl, SpeedyCGI など。Perl の場合は起動と構文解析に時間がかかるので、そのコストをおさえることができます。

638 :名無しさん@お腹いっぱい。:01/10/07 16:22 ID:???
>>635
ありがとうございます。

んー。
@read[$hoge .. $moge]を逆順で処理させたくて、
$hoge = 0;
$moge = $hoge + 10;
foreach (reverse @read[$hoge .. $moge]){}
とやってみたのですが、
@readに仮に0-30のリストが入っているとして、
9,8,7,6,5,4,3,2,1,30という処理順になってしまいました。
むむむ…。一体どうすればいいのでしょう…。

639 :635=638:01/10/07 16:24 ID:???
>>637
ありがとうございます。
試してみます。

640 :635:01/10/07 16:30 ID:???
>>638
修正
> 9,8,7,6,5,4,3,2,1,30という処理順になってしまいました。
→ 9,8,7,6,5,4,3,2,1,0,30という処理順になってしまいました。

>>637
書き込んだらレスがついていたので慌ててお礼だけ書きましたが、、、

まず考えたのがそれだったんですが、作っているのが掲示板で、
リストの最後がいくつになるか判断するルーチンは今のところ無いんです。
ありがとうございました。

641 :名無しさん@お腹いっぱい。:01/10/07 16:31 ID:jXvc6whk
>637
サーバーで用いるインタープリタを変えるって事なのかな?
勉強になるです。ありがとうございました。

642 :名無しさん@お腹いっぱい。:01/10/07 16:39 ID:???
perlccはcのソースにするのかな?
実行形式にするのにはPerl2Exeってのもあるんですね。
知ってる人の方がおおいんだろうけど
自分見たいののために報告〜。

643 :名無しさん@お腹いっぱい。:01/10/07 17:09 ID:Hz5hclI2
>>640
>→ 9,8,7,6,5,4,3,2,1,0,30という処理順になってしまいました。
いったいどうすれば、そんな処理順に・・・。
それをねらってやるほうが難しい(つーか面倒)なのでは。

644 :名無しさん@お腹いっぱい。:01/10/07 17:53 ID:???
>>643
@a = (0 .. 30);
@a = reverse @a[-1 .. 9];
print "@a\n";

645 :名無しさん@お腹いっぱい。:01/10/07 21:46 ID:XxfLnDlQ
みんなファイルロックするのにどんな方法使ってます?
リネームが一番効果的っての聞いた事あんですけど。
DBMてのを使うのは無しで。

646 :名無しさん@お腹いっぱい。:01/10/07 22:17 ID:kSNrchYM
キーが二つあるハッシュで、foreachみたく要素を回すにはどうしたらいいでしょうか。
ずーと悩んでるけれど全然スマートな方法が思いつかないッす。

647 :名無しさん@お腹いっぱい。:01/10/07 22:27 ID:???
>>645
flockだけど、、evalすらしてない  w

>>646
二つしかないならループしなくて良いじゃん?
普通はkeysでkeyの配列作ってその配列をforeachしたり
eachしたり、、
@keys = keys (%hash);foreach (@keys)
while (($key,$value) = each %hash)

648 :名無しさん@お腹いっぱい。:01/10/07 22:36 ID:kSNrchYM
>>647 レスさんきゅ

でも、チョット違うかもしんない。
そういう意味でなら、キーがみっつて事になるかな。
$hashref->{1}->{2} = 3;
みたいな。

書き方はこれじゃなくても、何でもいいんで同様のことを実行できる方法ないっすかね。

649 :名無しさん@お腹いっぱい。:01/10/07 22:48 ID:???
647に書いてるやん・・・・(゚Д゚)???

650 :むぎ茶      :01/10/07 22:55 ID:???
ハッシュ使うな全部配列にしろ  (n


┐(´ー`)┌


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

651 :名無しさん@お腹いっぱい。:01/10/07 22:58 ID:kSNrchYM
$hashref = \%hash;
$hashref->{"key1-1"}->{"key1-2"} = "1-3";
$hashref->{"key2-1"}->{"key2-2"} = "2-3";

while (($key, $value) = each %hash) {
 while (($key2, $value2) = each $value->{$key}) {
  print $key, "=>", $value->{$key2}, "=>", $value2, "\n";
 }
}

こーいうことがしたいの。

652 :634:01/10/07 23:03 ID:???
>>640のような変な処理順は直りましたが、(原因は>>644でした。)
未だに当初の目的は達成できません。
>>635を参考に>>638のようにしても無理なのですが、
どうすれば良いんでしょう?

653 :名無しさん@お腹いっぱい。:01/10/07 23:04 ID:???
%hash = (
key1 => { key1-1 => 'val1-1' },
key2 => { key2-1 => 'val2-2' },
);

>>651
%$valueね。

654 :名無しさん@お腹いっぱい。:01/10/07 23:08 ID:???
おー。うごいた。そっいうことかー。
むっちゃありがとー。今夜はぐっすりねれそうだよー。

655 :名無しさん@お腹いっぱい。:01/10/07 23:11 ID:???
LWPってリジューム可能?

656 :名無しさん@お腹いっぱい。 :01/10/07 23:26 ID:???
>>652
何言いたいのか解らん、上の方で言ってるのでなんで駄目なんだ

@list = reverse (0..30);
foreach (@list){
 print "$_\n";
 last if($cc == 10);
 $cc++;
}

657 :名無しさん@お腹いっぱい。:01/10/07 23:30 ID:???
>>652
こうだと推測してみた。正解なら俺をエスパーと呼べ。
@read = (0 .. 30);
$hoge = 0;
$moge = $hoge + 10;
foreach (reverse @read[-$moge .. -1-$hoge]) { print "$_\n"; }

658 :名無しさん@お腹いっぱい。:01/10/07 23:32 ID:???
>>634
foreach (reverse @read[-10 .. -1])
はどう?

変数使うなら
$hoge = $#read;
$moge = $hoge+10;
foreach (reverse @read[$moge .. $hoge])
とか。

これは先に後ろ10個取り出してから,逆順にしてる。
>>638は始めの10個取り出してる。

659 :658:01/10/07 23:33 ID:???
あう,かぶった・・・

660 :634:01/10/07 23:45 ID:???
恥を忍んでソース公開です。。。
http://www.geocities.co.jp/MusicStar/2856/bbs.txt

661 :名無しさん@お腹いっぱい。:01/10/08 00:04 ID:pELG7ByE
>648
なんかflockだとするロック破られるとか
書いてあるの読んで気がひけるんですよね。
実際どうなのかはわからないですけど。
皆さんの方法とか教えてくれないですかね?

662 :名無しさん@お腹いっぱい。:01/10/08 00:07 ID:???
突込みどころ満載なのはいいとして・・・・

foreach ( reverse @read[$page .. $page_end] ) { これは
foreach ( reverse (@read[$page .. $page_end]) ) { こう評価される
つまりケツから10個じゃなくて頭の10個をreverseしてる

先に@read = reverse @read; とでもして
foreach (@read[$page .. $page_end] ){ こうしとけ

663 :名無しさん@お腹いっぱい。:01/10/08 00:17 ID:???
>>661
何を破られんのか解らんけど、flockしないなら
rename、simlink、mkdir、辺りの関数で実装するの普通
ここでロック論争始めるとまた色んな信者さんが出てくるから
その辺のスクリプトとか大崎さん所(perlメモ)とか見てくれ
flockよりショボイのは幾らでも組めるが***まともに機能してる***
flock以上のは組めないってのがほんとのところ

664 :名無しさん@お腹いっぱい。:01/10/08 00:24 ID:???
foreach ( (reverse @read)[$page .. $page_end] ) { こうだった、鬱

665 :名無しさん@お腹いっぱい。:01/10/08 00:54 ID:pELG7ByE
>いやロックだろ。

666 :634:01/10/08 01:01 ID:???
>>662
ありがとうございます。
さらに精進します。

みなさま。
ちょっとしつこかったです。反省。
スレ汚しスマソ。です。

恥ずかしいので>>660は削除しときます。

667 :名無しさん@お腹いっぱい。:01/10/08 01:02 ID:lKBSfyUU
http://2ch.to/~webmaster/link.cgi?http://www.taruo.net/e/?

この、自身のREFERERも出さないリダイレクタってどういう原理なんでしょう?

668 :名無しさん@お腹いっぱい。:01/10/08 01:05 ID:???
>>655
LWPにレジューム機能は存在しないもよう。
関連モジュール内で"content-range"という文字列を
探したけど該当する機能が見つからなかった。
LWPはでかいから見落としてる可能性もあるけどね。

レジュームしたけりゃ、自分で"Content-Range"ヘッダを付けて
ファイル保存処理をガリガリ書くしかないのかもしれない。

669 :名無しさん@お腹いっぱい。 :01/10/08 01:22 ID:???
デンパ?

670 :名無しさん@お腹いっぱい。:01/10/08 01:28 ID:???
>>668
見れないしスレ違いだし良くワカラナイけど
HTTP_REFERERはREMOTE_ADDRとかと違ってクライアント側で容易に書き換え
出来るわけ。
で、多分link.cgiがQUERYをラップして変わりに取りに行ってると思う訳

671 :667:01/10/08 01:38 ID:???
>>670
ありがとう
それをコードにするとどうなるでしょう?ってのは、たしかにスレ違いですね
こんなCGI探してますスレッドでもう一回聞いてみます

672 :名無しさん@お腹いっぱい。:01/10/08 14:19 ID:xLWu69kM
indexを用いたマッチ検索で大文字と小文字を区別しない
方法はどの様なのが定番なのでしょうか?

673 :JAPU@勉強中:01/10/08 15:04 ID:???
事前に lc または uc でホゲホゲ。
m//i 使っても良いと思うが。

674 :名無しさん@お腹いっぱい。:01/10/08 18:42 ID:???
>>668
そうなんですか…どうも。
とりあえずContent-Rangeとやらを調べてみます。

675 :名無しさん@お腹いっぱい。:01/10/08 20:31 ID:Kg6GidGE
>673
レスありがとです。
やっぱりindexだといったん大文字か小文字にするしか
無いんですかね?
変換のロスで正規表現の方が早くなったり。

676 :名無しさん@お腹いっぱい。:01/10/08 20:50 ID:/cLj7636
>>675
検索対象データのコピーを作って、
そっちをあらかじめ大文字か小文字に統一しとくのは?
ディスクスペースは2倍必要だけど。

677 :名無しさん@お腹いっぱい。:01/10/08 21:33 ID:???
そういうのもありですね。
けど検索対象のデータが結構ごちゃごちゃしてるんで
これ以上ファイルが増えるとちょっと(^^;

678 :名無しさん@お腹いっぱい。:01/10/08 23:35 ID:???
>>677
検索するたびにそんな多数のファイルを開いてると
I/Oに負担かかって氏ぬです。
↑いまは亡き「とほほラウンジ」方式。

679 :名無しさん@お腹いっぱい。:01/10/09 00:28 ID:???
selectってコスト高いって本当っすか
乱発するとダメ?

680 :名無しさん@お腹いっぱい。:01/10/09 01:08 ID:qw3TKOks
I/O処理について便乗質問ですが
@掲示板の全てcgiで制御する
A最近の5件ほどhtmlで表示させてそれ以降(ログの表示)は
 cgiで制御する
B書き込むたびに全てhtmlで出力(ページ数は5ページほど)させる
だとAが一番サーバに易しいですかね?

681 :名無しさん@お腹いっぱい。:01/10/09 01:56 ID:???
>>679
ん? 聞いた事ないけど、何と比べて?
>>680
HTMLは静的、CGIは動的なコンテンツを提供してるって言えばいい?
一年に3人しか書き込まなくてROMが1000万人居るなら2
リロード代わりに見た人間全員が書き込むんなら1、
3は意味解らん、なら1ページに全部吐けば良いじゃん

682 :名無しさん@お腹いっぱい。:01/10/09 02:22 ID:???
ココみたいな閑古板なら反って20スレ/PAGEの最終15記事表示くらいの方が良いと思うんだよなー

683 :名無しさん@お腹いっぱい。:01/10/09 02:23 ID:???
いやiモードのサイトなんですよ。
そんでデータファイルは別に作っといてそれから
htmlファイルとして出力しようと思ったんだけど、
書き込みされるたびにhtmlファイルをすべて作り直すのも負担になるな…と。
だけどアクセスされるたびにcgiで処理する@は論外かなと
まぁ一番一般的だけど。
んじゃ大抵の人間はログなんか読まないからTOPページだけhtmlで
出力しておくかなと思って。rom率とカキコ率で変わってくるけど
チャットじゃないから最初のページはhtmlにした方が効率が良いかと。
…何をいってるのかわからないと。
処理ごとの負担がデータ化されてるページとかあれば楽なんですけどね。

684 :名無しさん@お腹いっぱい。:01/10/09 02:47 ID:???
1週間くらい各ページにアクセス解析つけとけば?
カキコのカウントもとればなおよし。

685 :名無しさん@お腹いっぱい。:01/10/09 02:57 ID:???
つーかその辺は一般論に従うのが手っ取り早いんですよ
10年前の超オーバーヘッドなSCSIHDD使ってる鯖でHTML化とか言って
ガリガリファイル書き換えまくったら速攻でディスクビジーだろうし
結局鯖のuptimeと相談しながらってなるでしょ? それを一からやりたいなら
止めないけど・・・
で、頭の良い先人が色々考えた結果ROM比30:1ならHTMLの方が良いだろっつて
アナタが今みてるココとか紅茶板があるんすよ

686 :名無しさん@お腹いっぱい。:01/10/09 03:19 ID:???
>頭の良い先人が色々考えた結果ROM比30:1ならHTMLの方が良いだろっつて

こういうの知りたかったんです。為になるです。
>684
そうですね。最初は負荷かかっても損して得とれみたいな
かんじで統計とってみようかなと思います。
まぁ一概にはいえないんでしょうけど→30:1
参考にしようと思います。

687 :名無しさん@お腹いっぱい。:01/10/09 13:29 ID:???
10:1ぐらいだろ
書き出すhtmlのサイズにもよるが。
頻繁にアクセスするファイルはバッファに入るだろうし

688 :名無しさん@お腹いっぱい。:01/10/09 14:24 ID:???
>頻繁にアクセスするファイルは
頭大丈夫ですか?

689 : :01/10/09 15:10 ID:???
@aiueo = "123";
@aiueo = "あいう";

if(@aiueo != 0){
foreach (@aiueo){
print "$_";
}
}

配列aiueoに"123"と"あいう"を格納したいのですが、
二つ目のあいうだけしか表示されません。。。

690 : :01/10/09 15:19 ID:???
もしかして、後から配列に値を加えたい場合は
@aiueo = "あいう";
このようにすると値が上書きされてしまいますね・・・(汗
すいません。
後から加えたい場合は必ず
push @formcheck, $Name;  か、
unshift @formcheck, $Name;  でやらなきゃいけないんでしょうか?

691 :名無しさん@お腹いっぱい。:01/10/09 15:20 ID:???
>>689
pushなりunshiftなりしなさい。
push @array, $str;
# そもそも @array = $str というのはどうかと思うぞ。

692 :名無しさん@お腹いっぱい。:01/10/09 15:22 ID:???
意味不明
@aiueo = "あいう";  これで'あいう'しか入ってないでしょ?
@aiueo = ("123","あいう");
こうしとけ つーかリファレンス嫁

693 : :01/10/09 15:23 ID:???
すいません、勉強不足でした。。

694 :名無しさん@お腹いっぱい。:01/10/09 17:05 ID:???
<html>
<br>

695 :名無しさん@お腹いっぱい。:01/10/09 17:06 ID:???
ぼほほ〜〜。
タグ辞書登録してたらクリックしてもうた〜。すんません。

696 :名無しさん@お腹いっぱい。:01/10/09 18:24 ID:caK9Qd8A
変数の中にはいってる変数の名前からそれも評価するような
方法ないでしょうか?↓みたいなかんじです。

$bb="$aa";
$aa="ほげ";
print "$bb";

これだと何も出力されませんが
出力が ほげ と出るような方法は無いでしょうか?

697 :名無しさん@お腹いっぱい。 :01/10/09 18:32 ID:???
eval (print "$bb");

698 :名無しさん@お腹いっぱい。:01/10/09 18:35 ID:???
$cc = eval $bb;
print $cc;
でもいいっすね。

699 :名無しさん@お腹いっぱい。:01/10/09 18:38 ID:???
>>696
$bb='$aa'; #あとこれをシングルクォートに

700 :つーか、、:01/10/09 18:38 ID:???
1行目と2行目逆だよ 1行目で何が代入されるか考えよう

701 :つーか、、:01/10/09 18:40 ID:???
>>699
それじゃダメだって、、それならシンボリックリファレンス使わないと。。。

702 :名無しさん@お腹いっぱい。:01/10/09 18:44 ID:???
perl -e "$b=q{ok};$a=q{b};print $$a;"

703 : :01/10/09 18:45 ID:???
$bb="$aa";   # ここで$bbに$aaが入る。が、$aaは空っぽなので、$bbも空っぽのまま
$aa="ほげ";  # ここで$aaに「ほげ」代入
print "$bb";  # $bbは空なので、、、

ってこう糞親切?に書くと怒る厨房っているよね

704 :名無しさん@お腹いっぱい。:01/10/09 18:51 ID:???
まとめよう。

方法1
$bb='$aa';
$aa='ほげ';
print eval $bb;

方法2
$bb='aa';
$aa='ほげ';
print ${$bb};

705 :つーか、、:01/10/09 18:56 ID:???
ゴメソ>>699 eval論だたのね・・・

706 :696:01/10/09 19:06 ID:???
おぉぉ!この板でこんなに早くレスを頂けるとは
思とらんかたです。しかもこなにイパーイ!
なるほど!どうもです。
1行目と2行目が逆なのはこの手法を説明する
為だったんで…。これと全く同じというわけじゃないんです。
わかりにずらかったですね。スマソです。

707 :名無しさん@お腹いっぱい。:01/10/09 19:07 ID:???
似たようなシチュエーションだけど、
「文字列の中の変数名」をあとから展開するってどうやってます?
おれはこんなの。

$template = 'hello $name!';
$name = 'ほげ';
print eval '"'.$template.'"';

いちおうこれで動くけど、なんか無駄な気が。。。

708 :JAPU@勉強中:01/10/09 19:11 ID:???
$str = '$hoe';
$hoe = "sakura";
$str =~ s/(\$\w+)/$1/eeg;
print "$str\n";

ってのもアリかも。

709 :696:01/10/09 19:11 ID:???
アセンリ言語でいう(0010)とか?
みたいにそのアドレスにはいってるアドレスを参照する
ってのを知りたかったのです。
なんかいつも質問してるな…。ありがとうですです。

710 :名無しさん@お腹いっぱい。:01/10/09 19:15 ID:???
$template =~ s/\$([a-zA-Z\d\-_]+)/$$1/g;

みたいな感じか。
あえてやるなら。

711 :707:01/10/09 19:22 ID:???
>>708,>>710
あ!置換すればいいんか!
ダブルクォート内の変数展開にこだわってて見えなかった。
どもー。

712 :名無しさん@お腹いっぱい。:01/10/09 20:01 ID:???
$bb= eval $aa;
$aa= $zz;
$zz='hoge';
print eval $bb;

こういうのはできないんですねぇ。

713 :名無しさん@お腹いっぱい。:01/10/09 20:04 ID:???
$bb= eval $aa;
$aa= '$zz';
$zz='hoge';
print eval $bb;

こうか。どっちにしろできない。

714 :名無しさん@お腹いっぱい。:01/10/09 20:08 ID:???
>>711
無理に置換するよりも、最初のままの方がいいんではないか思う。

あと、
 eval(qq($template))
って書くと少しカッコイイ(w

715 :名無しさん@お腹いっぱい。:01/10/09 21:50 ID:???
Perl暦2ヶ月の初心者です。
関数のリファレンスについての質問です。

配列やハッシュならよく使っているのですが、関数のリファレンスは
どういうときに便利なのかがいまいち理解できません。

先生、ご指導お願いします。

716 :名無しさん@お腹いっぱい。:01/10/09 22:19 ID:ac7tHUi6
gzip圧縮されたページを取得した後で展開するのにお手頃なPerlモジュールはありますでしょうか。

プロバイダの個人HPなので、システム変更の自由はきかないんです。
その上、gzipも使えないので。

やはりCPANのArchive::zipを使えと言う事になるのでしょうか?

717 :>715:01/10/09 22:25 ID:???
---例えば配列やハッシュを渡すとき
&Fnc(\%data, $file);
sub Fnc {
 my ($ref_data, $file) = @_;
 my $name = $ref_data->{NAME};
 my $title = $ref_data->{TITLE};
 open(DATA, $file);
 .....
}

---例えばクラスを作るとき
sub new {
 my $class = shift;
 my $self = {};
 bless($self, $class);
 $self->_initialize();
 return $self;
}

sub _initialize {
 my $self = shift;
 $self->{NAME} = 'hoge';
.....
}

718 :711じゃないけど:01/10/09 22:28 ID:???
>714
置き換えても動作せんよ?漏れがいけないんかな?

719 :名無しさん@お腹いっぱい。:01/10/09 22:39 ID:rO0MbdjQ
>>716
ローカル環境でgzipの展開にCompress::Zlibを使ってます。
ただしUNIXサーバに入れるにはCコンパイラが必要みたいです。
(うちはWindows + ActivePerl + PPMなのでコンパイル不要だった)

720 :714:01/10/09 23:38 ID:1lvwgexc
>>718
あれれ?
$needle='This is sample text.';
$template='$needle';
print $template,"\n",eval(qq($template)),"\n";で、
$needle
This is sample text.って出ませんか?

721 :714,720:01/10/09 23:39 ID:???
改行が一部壊れた…
しかもageちゃったシクーリ

722 :名無しさん@お腹いっぱい。:01/10/10 00:19 ID:FXDqXQ2w
特定のページからリンクされた場合以外は他のページに飛ばす機能を組み込んだ掲示板を作りたいのですが
どうすればいいですか?
掲示板はネットで見つかったのですがリンクの制限が見つからなくて困ってます。

723 :名無しさん@お腹いっぱい。:01/10/10 00:29 ID:???
>720
それだとばっちし動作します。けど>>707の最後の一行と
eval(qq($template))を置き換えても動作しないです。
「文字列の中の変数名」をあとから展開
てのはその方法だとできないって事なのかな?
ちなみにeval(qq($template))のqqてのは何なのでしょうか?

724 :名無しさん@お腹いっぱい。:01/10/10 00:39 ID:???
>>722
最初にHTTP_REFERERとって特定のURL以外ならlocationで飛ばせばいいんでない?

725 :722:01/10/10 00:39 ID:FXDqXQ2w
できました。ありがとうございました。

726 :707:01/10/10 00:54 ID:1woNivdA
>>720
おれも自分で試してみたよん。
eval(qq($template)) では707はうまくいかないっす。
eval(qq("$template")) ならオーケーでした。

結局、このやりかたは評価が2回必要になる(?)ので、
正規表現展開の手間をいれても>>710の人のやりかたが速いです。
Benchmark検証済み。

727 :名無しさん@お腹いっぱい。:01/10/10 00:56 ID:???
シンボリックリンクでの参照は
my変数が見えない、strict refsでは動かない等の問題があることだけ注意。

728 :720:01/10/10 01:08 ID:fymnbEUM
>>723
(´-`).。oO(なんでこんなヘボいミスしたんだろう……)

というわけで、
eval("qq($template)")
が正解です。失礼しました。

qqについては
ttp://flex.ee.uec.ac.jp/texi/perl/perl_136.html

このへん参照するといいと思う。

729 :716:01/10/10 08:19 ID:OwjZu2K6
>>719
レスどうもです。そうですか、ドキュメントを未だちゃんと読んでいなかった
のですが、Compress::Zlibはコンパイルが必要ですか。プロバのHPなので
それも出来なくてちと悲しいです。

730 :名無しさん@お腹いっぱい。:01/10/10 11:46 ID:???
>>729
コンパイルもやろうと思えば出来ますよ。

731 :名無しさん@お腹いっぱい。:01/10/10 14:09 ID:29gVd4os
LWP::UserAgent からFORMの内容を POSTメソッドで
送信したいんですが、どのように受け渡せばいいのでしょう?

$ua->cookie_jar($cookies);
みたいに格納できるメソッドがあるのですか?

732 :名無しさん@お腹いっぱい。:01/10/10 14:48 ID:???
他人の鯖に設置してある掲示板とかのパスワード保存ファイルって(例えばpass.cgi)
CGIで読みこんだりとかできるの?それでパスクラックできねえかな。

733 :名無しさん@お腹いっぱい。:01/10/10 14:56 ID:???
「CGIで読みこんだり」ってのが意味不明

734 :名無しさん@お腹いっぱい。:01/10/10 14:58 ID:???
732には100%無理。

735 :名無しさん@お腹いっぱい。:01/10/10 16:22 ID:2.AeAxdc
>>731
POST用のデータはRequestのほうに入れとく。
my $req = HTTP::Request->new(POST => $url);
$req->content('name=hoge&text=hoge');

もしデータ内に日本語などがある場合は
use HTTP::Request::Common;
$req = HTTP::Request::Common::POST($url, [name='ほげ',text='ふが']);
を使うと、自動的にエスケープしてくれて楽。

736 :名無しさん@お腹いっぱい。:01/10/10 16:25 ID:???
>>735 訂正。[name=>'ほげ',...]でした。

737 :名無しさん@お腹いっぱい。:01/10/10 16:28 ID:???
LWP使うやつはperldoc lwpcookぐらい読んどけ。

738 :名無しさん@お腹いっぱい。:01/10/10 16:46 ID:???
>>735
ありがとうございます。
調べてみたら

$hd = HTTP::Headers->new;
foreach $key ( keys %FORM ){
 $hd->push_header( $key -> $FORM{$key} );
}
$req = HTTP::Request->new( 'POST', $url, $hd );

でもいけそうな感じだったので試してみます。

というかPOSTで渡す内容が不特定なので
[name=>'ほげ', text=>'ふげ']
だと無理ですかね。

739 :731:01/10/10 18:23 ID:???
>>738
うう、 $hd->push_header ではうまくいきませんでした。

>>735 さんの方法で上手くできるんでしょうが、不特定多数の
要素を送る必要があるのでこの方法は使えないし…。

すいません、不特定多数の要素を POSTとして送る方法を
教えていただけないでしょうか。

740 :名無しさん@お腹いっぱい。:01/10/10 19:04 ID:???
my $req = HTTP::Request::Common::POST($url, [ %FORM ]);

741 :740:01/10/10 19:06 ID:???
いやこうか。
my $req = HTTP::Request::Common::POST($url, \%FORM);

742 :名無しさん@お腹いっぱい。:01/10/10 19:37 ID:???
関数内で関数を記述していますが、同名の関数が出現した場合、
うまく動いてくれません。
何が足りないのか教えてください。

sub foo()
{
sub _getstr($)
{
my ($str) = @_;
return $str . "だよ\n";
}

my ($str) = _getstr("てきとー");
print $str;
}

sub foo2()
{
sub _getstr($)
{
my ($str) = @_;
return $str . "だもん\n";
}

my ($str) = _getstr("てきとー");
print $str;
}

&foo();
&foo2();

743 :名無しさん@お腹いっぱい。:01/10/10 20:05 ID:0t.5n9Ms
>>742
それじゃ_getstrが局所的な関数定義になってないです。
Perlは基本的に、どこで定義してもグローバル関数(笑

2つの_getsrtを別々の名前空間で定義すればオーケ。

sub foo() { package foo; sub _getstr() 以下略 }
sub foo2() { package foo2; sub _getstr() 以下略 }

744 :名無しさん@お腹いっぱい。:01/10/10 20:27 ID:???
>743さん
どうもありがとうございます。

my宣言とかできるかちょっと期待したのですが、
これは、packageの方も少し試してみて、
内部関数名を変えるかpackage使うか決めたいと思います。

(関数内でpackage書けるの知りませんでした。どうもです)

745 :名無しさん@お腹いっぱい。:01/10/10 20:42 ID:???
package使った方がいい感じなのでそうしました^^

746 :名無しさん@お腹いっぱい。:01/10/10 20:56 ID:???
#ローカル関数を使いたいのならば
local *foo = sub{ hogehoge };
my $foo = sub{ hogehoge };
#とすれば良いのではないかな?

747 :名無しさん@お腹いっぱい。:01/10/10 22:41 ID:???
>>746
それがほんとのローカル関数ですね。
743みたいなのは外から&foo::_getstr()でアクセスできるし。

748 :名無しさん@お腹いっぱい。:01/10/10 23:55 ID:???
>>741
なるほど! ありがとうございます。

749 :名無しさん@お腹いっぱい。:01/10/11 11:44 ID:???
>746さん
なるほど。こんな感じですね。
どうもありがとうございます。

sub foo()
{
my $_getstr = sub($)
{
my ($str) = @_;
return $str . "だよ\n";
};

my ($str) = $_getstr->("てきとー");
print $str;
}

750 : ◆PerlFQqs :01/10/11 15:34 ID:???
>>749
プロトタイプに注意。
#!/usr/bin/perl
sub PrintScalar($){ print shift, "\n" }
BEGIN{
*PrintScalar2 = \&PrintScalar;
$PrintScalar3 = \&PrintScalar;
}
*PrintScalar4 = \&PrintScalar;
$PrintScalar5 = \&PrintScalar;

my @hoge = qw(foo bar);
PrintScalar (@hoge);
PrintScalar2 (@hoge);
$PrintScalar3->(@hoge);
PrintScalar4 (@hoge);
$PrintScalar5->(@hoge);
PrintScalar6 (@hoge);

BEGIN{
*PrintScalar6 = \&PrintScalar;
}
__END__

751 :名無しさん@お腹いっぱい。:01/10/11 16:48 ID:kMiBAPJ6
>>750
えーと、「プロトタイプを有効にするには、BEGINブロックの中で
エリアスを作るしかない」つーことですか?

あ。念のため今perldoc perlsub見たら、そう明記されてたっす。
知らなかったー。プロトタイプあんま使わないから。

要するにプロトタイプ付きの「ローカル関数」は作れないってことなのか。

752 :751:01/10/11 16:51 ID:???
perldubじゃねーや。perlrefの"Function Templates"のとこでした。

753 :名無しさん@お腹いっぱい。:01/10/11 20:27 ID:???
プロトタイプの'&'って使ったことある人いる?
なんかサンプル見るとtry〜catch構文とか作ってて
いろんな意味でスゲーんですけど。
俺は一生プロトタイプ'&'を自分で使うことはあるまい。

754 :nullsann:01/10/11 23:27 ID:S31Vh/vQ
複数のファイルを何度もOpen/Closeさせてるんですが、
ファイルロックは一度で良いんでしょうか?

sub filecheck{
&lock;#
open IN,"$logfile";
#syori
close IN;

open FP,"> $logfile"
#syori
close FP;
.
.
.
.
&unlock;
}

mkdirのロック方式使ってるんですが・・・。

755 :名無しさん@お腹いっぱい。:01/10/12 00:30 ID:???
>>754
一度でよし。

756 :名無しさん@お腹いっぱい。:01/10/12 01:31 ID:kGkVgeeA

if ($ENV{'HTTP_REFERER'} ne 'http://許可する.com') {
print "Location: http://ばいばい.com\n";
print "\n";
}
にしたのですが、閲覧を許可する参照元をもう一つ増やすにはどうしたらいいですか?

if ($ENV{'HTTP_REFERER'} ne 'http://URL1'|'http://URL2')
だとうまくいきませんでした

757 :名無しさん@お腹いっぱい。:01/10/12 01:54 ID:???
>>756
許可するのが2つぐらいなら
「URL1ではなく、URL2でもなければ、ばいばい」というふうに
素直にコーディングするといいです。

if ($ENV{略} ne 'URL1' and $ENV{略} ne 'URL2') {
・・・
}

758 :名無しさん@お腹いっぱい。:01/10/12 10:18 ID:UFajsOUw
cgiからcgiを作るのを習作していますがエラーとなってしまいます。何か
根本的に違うのでしょうか?お教えください。

#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>CGIテスト</TITLE></HEAD>\n";
print "<BODY>\n";
#
print "<form name="form1" method="post" action="">\n";
print "<input type="checkbox" name="checkbox" value="checkbox">\n";
print "</form>";
#
print "</BODY>\n";
print "</HTML>\n";

__END__

759 :名無しさん@MZ-2000:01/10/12 10:21 ID:???
「cgiからcgiを作るのを習作しています」が根本的にワケワカラン(w
とりあえず

print "<form name="form1" method="post" action="">\n";
print "<input type="checkbox" name="checkbox" value="checkbox">\n";

この二行がだめ。

760 :名無しさん@お腹いっぱい。:01/10/12 10:24 ID:???
(´-`).。oO( " -> \" ・・・・)

761 :名無しさん@お腹いっぱい。:01/10/12 10:39 ID:DN2jVK/o
('-').。oO

762 :名無しさん@お腹いっぱい。:01/10/12 11:11 ID:VXGFJvh.
print "<form name=\"form1\" method=\"post\" action=\"\">\n";
print "<input type="checkbox\" name=\"checkbox\" value=\"checkbox\">\n";

だね。

763 :名無しさん@お腹いっぱい。:01/10/12 11:16 ID:VXGFJvh.
一個抜けた。
print "<input type=\"checkbox\" name=\"checkbox\" value=\"checkbox\">\n";
鬱だ。

764 :名無しさん@お腹いっぱい。:01/10/12 11:20 ID:???
素直にシングルクォートかひあどきゅめんとを・・・・・qqでもいいけど。。

765 :名無しさん@お腹いっぱい。:01/10/12 11:39 ID:???
>>762-763のような誤りを避ける為に
qq{<input type="checkbox" name="checkbox" value="checkbox">\n};
まぁ>>758、お前はマトモな本で基礎を勉強してから出なおしなさいってこった。

766 :名無しさん@お腹いっぱい。:01/10/12 11:43 ID:uPcFyHO2
>>756
ロジックを1行に書くのって頭が混乱しない?
効率悪いかも知れないけど、こんな関数を作るほうがいいと思う。

if (! &is_good_referer()) {

}

sub is_good_referer {
 my @kyoka = ('URL1', 'URL2');
 foreach my $url (@kyoka) {
  if ($ENV{HTTP_REFERER} eq $url) {
   return 1; # 許可するURLのどれかに一致すれば1を返す
  }
 }
 return 0; # どれにも一致しなければ0を返す
}

767 ::01/10/12 11:57 ID:e.iu2Egs
ネストは見る場合は大事と思われ。
ただ、空白2文字はちょっとな。4文字は欲しい。

768 :名無しさん@お腹いっぱい。:01/10/12 12:13 ID:Qk0xmYmc
何故にコマンドラインからだとファイルの
扱いができないのでしょうか?
cgiとして動かすか、実行形式にするしかないのですか?

769 :名無しさん@お腹いっぱい。:01/10/12 12:18 ID:ZYB0SiF6
>>768
意味わからん…。
もっと具体的に言ってくれ。

770 :名無しさん@お腹いっぱい。:01/10/12 12:19 ID:???
>>767
ラリーヲールが2文字推奨なんだっけ?

771 :名無しさん@お腹いっぱい。:01/10/12 12:20 ID:Qk0xmYmc
>769
即レス感謝です。
わかりずらいですね。DOS窓からスクリプト実行すると
file openとかしても読み取ってくれないのです。
これは何故でしょうか?

772 :名無しさん@お腹いっぱい。:01/10/12 12:26 ID:???
Winで *.pl は実行できません。

773 :名無しさん@お腹いっぱい。:01/10/12 12:27 ID:ZYB0SiF6
>>771
ありがちなのは、パス付きのファイル名を書くとき、
ダブルクォート文字列の中で"\"を"\\"としてないこと。

× "c:\hoge\fuga.txt" ←これはだめ
○ "c:\\hoge\\fuga.txt" ←これはよし。
○ 'c:\hoge\fuga.txt' ←シングルクォート使ってもよし
○ "c:/hoge/fuga.txt" ←"\"じゃなく"/"使ってもよし

774 :名無しさん@お腹いっぱい。:01/10/12 12:29 ID:???
>>771
パスが違うかパーミッションの問題じゃねーの。
とりあえず
$filename = "moe/moe.txt"
open(F, $filename) or die "$!: $filename";
としかて、なんで失敗しているのか確認スレ。

775 :名無しさん@お腹いっぱい。:01/10/12 12:37 ID:???
>>753
難しく考え杉じゃない。
わかれば簡単。で、サンプル

sub synchronized(&) {
  my $code = shift;

  lock();
  $code->();
  unlock();
}

synchronized {
  # >>754から
  open IN,"$logfile";
  #syori
  close IN;

  open FP,"> $logfile"
  #syori
  close FP;
}

776 :775:01/10/12 12:40 ID:???
すまん。セミコロンわすれた。

synchronized {
  #...
};#<-これ

777 :名無しさん@お腹いっぱい。:01/10/12 13:23 ID:PeaA6TSM
相対パスでやってるんですけど、ダメなんでしょうか?
or die "$!: $filename";
いれてやったらファイルみつからんて言われちゃいました.

778 :名無しさん@お腹いっぱい。:01/10/12 13:34 ID:???
あれ?絶対パスでもダメだ。

779 :名無しさん@お腹いっぱい。:01/10/12 13:50 ID:???
あれれ?簡単なの作ってテストしたらできた。
御迷惑おかけしました。
どうもありがとうございました。

780 :名無しさん@お腹いっぱい。:01/10/12 14:02 ID:PeaA6TSM
$var = 'myvar';
$sym = mypack::$var;
は、
$var = 'myvar';
$sym = "mypack::$var";
とは違うらしいのですが、何が違うのでしょうか?

781 :777-780:01/10/12 14:45 ID:???
うまく動作しない…。何故だぁ。
DOS窓だと
open(MAIL, ">>$docomo");って
できないんですか?追記のはずが最初の一回目しか
書き込めんですヽ(`Д´)ノ

782 :名無しさん@お腹いっぱい。:01/10/12 14:49 ID:???
すみませんまたミスってました。
なんか私の恥じをさらすスレと化してしまい
申し訳ありません。
ごめんなさい。ごめんなさい。ごめんなさい。

783 :JAPU@見知らぬ国のトリッパー ◆dcddJAPU :01/10/12 14:51 ID:???
前者はコンパイルエラーになりますが、後者はなりません。
...という違いです。

784 :名無しさん@お腹いっぱい。:01/10/12 14:51 ID:???
>781-782
ミスるのはいいから、なにをどうミスっていたか書いておいてほしい。
それを見た他の初心者が同じ事をしないですむ可能性があるんだから。

785 :名無しさん@お腹いっぱい。:01/10/12 15:29 ID:???
>784
誰もしないようなミスだったんで、、、
openする前に$docomoをforeach文で上書きしまくってました。
ちなみに相対パスだとオープンできないってのは
よくわからないままです。
他はみなさんの言うと通りやったらできました。

786 :名無しさん@お腹いっぱい。:01/10/12 15:33 ID:???
>JAPUさん
780に対するのですね。ありがとうございます。
ただそれだけなんですか。なんか深い意味があるのかと
思っちゃいました。

787 :名無しさん@お腹いっぱい。:01/10/12 15:35 ID:???
相対パスってスクリプトからの相対パス?
実行時のカレントディレクトリとスクリプトがおいてあるディレクトリは同じ?

788 :名無しさん@お腹いっぱい。:01/10/12 15:53 ID:???
スクリプトからの相対パスです。
実行時のカレントディレクトリはスクリプトの
ある所になるのでは無いのですか?

789 :名無しさん@お腹いっぱい。:01/10/12 16:05 ID:???
スクリプトが無い場所から起動してみればわかると思うけど、
実行時のカレントディレクトリが基準になるのでは。

790 :名無しさん@お腹いっぱい。 :01/10/12 16:08 ID:???
このスレでやってたよ、ログ探してみ、WIN、UNIXともカレントが正解。

791 :名無しさん@お腹いっぱい。:01/10/12 16:46 ID:???
相対パスでできました。
command.comからの相対パスなんですね。
なるほど。ありがとうございます。

792 :名無しさん@お腹いっぱい。:01/10/12 20:37 ID:???
>>791
> command.comからの相対パス
何故そう解釈出来る?
command.comからの相対パスだと、基準はC:\Windowsになってしまうでしょ。
実行時のカレントディレクトリだぞ・・・

793 :名無しさん@お腹いっぱい。:01/10/12 22:52 ID:.7AHiXCo
え?え?
違うんですか?実行時のカレントディレクトリというのは
どういう事ですか?
ちなみにcommand.comからの相対パスで
やったらうまくいったものでして。。。

794 :名無しさん@お腹いっぱい。:01/10/12 22:55 ID:???
駄目だコリャ

795 :名無しさん@お腹いっぱい。:01/10/12 23:16 ID:???
>>793のホームディレクトリ=C:\

796 :名無しさん@お腹いっぱい。:01/10/12 23:45 ID:???
ぼほほ〜〜(´Д`;)
見捨てられちゃったのですか?
意味が…わからん…。

797 :名無しさん@お腹いっぱい。:01/10/13 00:16 ID:???
s{command.comからの相対パス}
{command.comというファイルが置かれている場所からの相対パス}
こう考えなさい。

798 :名無しさん@お腹いっぱい。:01/10/13 00:37 ID:???
???(´Д`;)
ありがとうございますです。
とりあえず勉強不足過ぎという事ははっきりしました。
まぁ前からわかっていましたが…。

今日一日中このスレに常駐していた気がする。
勉強になるなぁ〜。

799 :名無しさん@お腹いっぱい。:01/10/13 19:06 ID:Z60DF3aY
http://bulknews.net/lib/archives/Image-HTML-0.01.html

これすごすぎ、gifファイルをHTMLだけで表現している。
あんまデカイ画像するとブラクラになりかねんが、

800 :名無しさん@お腹いっぱい。:01/10/13 20:38 ID:???
>>799
うひひ(w
こんな感じになるのか?
ttp://hi.sakura.ne.jp/~okada/table/mario_bs2.html

801 :名無しさん@お腹いっぱい。:01/10/13 21:10 ID:rwndiC8E
>>800
そこはまだ同色のドットをつなげたりしてるからいいっすよ。
799のやつは全部1x1ドットに分解してた(呆

#これ見るためImage::Magickインストールしちゃったよ

802 :名無しさん@お腹いっぱい。:01/10/13 21:16 ID:???

DHTMLは良いなあ・・・・
激しく無意味でイイ(・∀・)♪!

803 :799:01/10/13 23:07 ID:Z60DF3aY
すごいけど、実用性無いよね。
遊び以外で使うこと無いような。、

804 :799:01/10/13 23:29 ID:Z60DF3aY
http://r1.ugfree.to/~user03/image2html.html
試しに、某板看板をしてみました。
にしてもサイズがでかくなりますね。
33KB->3767KB になちゃう。

805 :   :01/10/14 06:40 ID:9DG4zskV
困っております。
WIN98でapache web server と active perl使ってます。
htdocsフォルダから、とあるcgiファイルをディスクトップ上に移動して、
書籍のサンプルcgiファイル(←移動させたcgiファイルと同じもの)
をhtdocsフォルダにコピペしました。
でそのコピペしたcgiファイルを実行すると、ファイルのダウンロードの画面がでてしまい、
結局そのプログラムは実行されませぬ。
なんででしょう? スレ違いな質問かもしれませんがアドバイスお願いします。

806 :名無しさん@お腹いっぱい。:01/10/14 11:32 ID:???
>>805
もともとhtdocsにあったCGIは動作してたん?
それなら後からいれたやつは拡張子が変なんじゃない?
(.cgiじゃなくて.plになってるとか)

807 :753:01/10/14 12:10 ID:NXFePnJM
>>775
なるほどー。その例はわかりやすいです。ありがと。

sub hoge(&) {…} を hoge {code}; と呼び出すつーのは
hoge(sub{code}) の省略なんだ。といまさらのように理解したおれ。

808 :名無しさん@お腹いっぱい。:01/10/14 12:18 ID:???
>「テーブルアート」という言葉自体は自分が勝手に作った
>いわゆる「造語」でありますが、従来画像ファイルを用いて
>絵を、グラフィカルなページを作っていたと思うのですが、
>これをHTMLタグだけでなんとか出来ないだろうかという
>意味あるのか無いのか分からないような取り組みをして
>みようと思ったわけです。ここではそうして作った作品を
>総称してテーブルアートと呼んでおります。「テーブル」と
>呼んでいるのはHTMLタグで絵を描く際にもっとも多く使用
>するのが<TABLE>タグと呼ばれるものである事に起因しております。

だれでも考えつくが馬鹿馬鹿しくてやらないだけだと思われ。

809 :名無しさん@お腹いっぱい。:01/10/14 12:21 ID:???
>>804
ブラウザ落ちたーよ。

810 :名無しさん@お腹いっぱい。:01/10/14 12:22 ID:???
ただ馬鹿馬鹿しくも地道に作る根性は凄いね。
おれなら元画像にビットマップを用意してCGIで
自動でタグ書き出しちゃうけど、ドット単位になるから
でかいかな。

811 :名無しさん@お腹いっぱい。:01/10/14 12:30 ID:???
>810
意味わからん。

812 :名無しさん@お腹いっぱい。:01/10/14 12:35 ID:???
>>799のリンク先から http://bulknews.net/lib/archives/ に上がってみると
「ほとんどCPANに登録してます」と書いてあるんだけど
このImage::HTMLも登録するのだろうか。

813 :蝶初審社:01/10/14 19:02 ID:/5Y8M3zo
ちょっと質問です。
$a="nanashi";
$aa="nanashisan";
の時、
print "$aa";
とすると、表示されるのはnanashia,nanashisanのどっちでしょう?

前者は$aの変数の値と文字列"a"で
後者は$aaの値です。

Javaとかだと、変数と文字列の区切りがあるのでわかりかったんですが。
よろしくお願いいたします。

814 :名無しさん@お腹いっぱい。:01/10/14 19:03 ID:THG9awFD
質問する前に試してみない理由はなんなんですか

815 :名無しさん@お腹いっぱい。:01/10/14 19:05 ID:r53mAll2
>814
ローカルでテストができずにサーバーに負担をかけるかもしれないと気を使ってる可能性もあるぞ。

>813
ローカルにサーバーを立てて試せ。

816 :蝶初審社:01/10/14 19:06 ID:/5Y8M3zo
>>814
そういうわけじゃなくて、"区切り"って無いんですか?
ということを聞きたかったんですが・・・。

817 :名無しさん@お腹いっぱい。:01/10/14 19:08 ID:???
>813,816
あるよ。
print "${a}a";
みたいに{}で変数名をかこむ。

818 :名無しさん@お腹いっぱい。:01/10/14 19:09 ID:???
$a{a}

819 :名無しさん@お腹いっぱい。:01/10/14 19:10 ID:???
 

820 :蝶初審社:01/10/14 19:30 ID:???
>>817さん
出来ました。レスありがとうございました。m(. .)m

821 :名無しさん@お腹いっぱい。:01/10/15 18:29 ID:6vdToKg4
$time=time;
@hoge=("1234567890","1234567899","1111111111")
foreach(@hoge){
if($_>$time){この要素を削除;}
}
みたいのを使いたいのですがうまい方法無いでしょうか?
私の貧脳では
foreach(@hoge){
if($_>$time){splice (@hoge,$count,1);}
$count++;
}
としか思いつきません。
こんなんあるぞというのあれば教えて下さい。

822 :名無しさん@お腹いっぱい。:01/10/15 18:34 ID:???
@hage = grep { $_ <= $time } @hoge;

823 :名無しさん@お腹いっぱい。:01/10/15 18:55 ID:6vdToKg4
>822
感謝です!!
どういう仕組みかわからないですけど使わせてもらいます。
ありがとうございました。

824 :823:01/10/15 19:32 ID:???
なるほど!
配列から$_<=$timeな要素を検索ですか!そして@hageへぶち込むと!
勉強になるですね。

825 :822じゃないですが:01/10/15 20:05 ID:???
>823-824
念に念を入れる意味で補足しておきますが、
@hoge = grep { $_ <= $time } @hoge;  # 左辺の配列も@hoge
という風に、「自分自身にぶち込む」こともできます。

826 :名無しさん@お腹いっぱい。:01/10/15 20:17 ID:???
>825
レスどうもです。
おっしゃる様に使わせてもらっとります。
ありがたや〜。(^人^)

827 :名無しさん@お腹いっぱい。:01/10/17 18:53 ID:TnUIrJkb
配列から特定の要素を取り除くにはどうすればよいのですか?

828 :名無しさん@お腹いっぱい。:01/10/17 18:55 ID:???
splice

829 :名無しさん@お腹いっぱい。:01/10/17 19:04 ID:???
すいませんもうちょっと具体的にお願いします・・・。
えらそうですいません。。

830 :名無しさん@お腹いっぱい。:01/10/17 19:08 ID:mFyYJQ/x
もうちょっと具体的に質問してください。お願いします。
「〜特定の〜」←ココんとこが特にわからん

831 :JAPU ◆JAPUTeX. :01/10/17 19:16 ID:???
828 ではないが...

perldoc -f splice で全てが解決する可能性が高いです。

@majokko = qw[mami emi pelsia yumi lala];
splice @majokko, 1, 2;
print "@majokko\n";

特定の値を持つ要素を削除したければ grep が使えます。

@majokko = qw[mami emi pelsia yumi lala];
@majokko = grep !/i$/, @majokko;
print "@majokko\n";

とか、

@majokko = grep { not 4 < length } @majokko;

とか。

----
質問するときは具体例まであげると良いかも。

832 :名無しさん@お腹いっぱい。:01/10/17 19:46 ID:???
すいません書き忘れていました。(--;;
配列から特定の要素を取り出してその要素を先頭に移すのはどうすればよいのですか?
たとえば、@hoge = qw[abc acb asd afd wer];
とあって、asdと言う値を取り出してこの配列の先頭に移すにはどうすればよいのですか?

833 :名無しさん@お腹いっぱい。:01/10/17 19:56 ID:???
http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
の677-683とか。

過去ログは貴重だな。

834 :名無しさん@お腹いっぱい。:01/10/17 20:24 ID:???
ちょっと違うんじゃない

835 :名無しさん@お腹いっぱい。:01/10/17 21:57 ID:2JY7Wh7v
2つのファイルで更新記録が古い方に書き込むことって出来ますか?
もしあるとすればどのように判断すればよいのでしょうか。

836 :名無しさん@お腹いっぱい。:01/10/17 22:00 ID:???
-M

837 :名無しさん@お腹いっぱい。:01/10/17 22:20 ID:???
stat()

838 :名無しさん@お腹いっぱい。:01/10/18 22:17 ID:lS77su3d
cgiでラジオボタンやプルダウンメニューを表示する際、
あらかじめ表示される状態を変化させる方法はどうやったらいいのでしょうか?
<select name="number">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="0"selected>0
</select>
selectedの位置を変化させるのだろうか?でもどうやって(??)もっとうまいやり方
があるのだろうか?という感じです。よろしくお願いいたします。

839 :名無しさん@お腹いっぱい。:01/10/18 22:20 ID:???
>selectedの位置を変化させるのだろうか?
はい

840 :名無しさん@お腹いっぱい。:01/10/18 22:23 ID:???
>838
俺のやり方の場合

$select[$number] = " selected";
print <<"EOF";
<select name="number">
<option value="1"$selext[1]>1
<option value="2"$selext[2]>2
<option value="3"$selext[3]>3
<option value="0"$select[0]>0
</select>
EOF

841 :名無しさん@お腹いっぱい。:01/10/18 22:24 ID:???
タイプミス発見・・・。

$select[$number] = " selected";
print <<"EOF";
<select name="number">
<option value="1"$select[1]>1
<option value="2"$select[2]>2
<option value="3"$select[3]>3
<option value="0"$select[0]>0
</select>
EOF

842 :名無しさん@お腹いっぱい。:01/10/18 22:28 ID:???
>>841
どうでもいいけど識別子をEOFにするのはおかしいような・・・

843 :名無しさん@お腹いっぱい。:01/10/18 22:51 ID:gx0MC5aQ
以下の文章から任意の範囲を抜き出したいのですが、
どのような表記をすればいいのでしょうか?
<table>の属性なども不確定です。

<table><tr><td>
<table><tr><td>
<table><tr><td> --------------- この行から
題名

〜不確定内容〜

</td></tr></table> ----------------- この行まで
〜テーブル以外の長い要素が入る〜
フッタ
</td></tr></table>
</td></tr></table>

$str =~ m#(<table[^(<td)]+<td.+?題名</table>).+?フッタ#is;
とやってみましたがダメでした。

というか [^(<td)]+ みたいな使い方って正しいんでしたっけ?
「このグループ以外の連続」をやりたいのですが。

844 :843:01/10/18 23:14 ID:W7vPTi/j
>>843
なんかわかりにくい書き方だったので補足します。
ようするに

「題名」という文字から前に調べに行って、
最初の「<table」から取得したいのです。

845 :840-841:01/10/18 23:29 ID:???
>842
すまない。
いつもはHTMLとか使ってて、でもそれだとカッコわるいかと思って
変えてみてた。(汗
そうだね、EOFはしない方がいいね・・・。

846 :名無しさん@お腹いっぱい。:01/10/19 01:02 ID:AxUzxNAn
>>843
勉強のため、いっこ考えてみました。自信ないけど(滅

my $re1 = '<table[^>]*><tr[^>]*><td[^>]*>[^<>]*';
my $re2 ='</td></tr></table>';
$str =~ /($re1(?!$re1)題名.*?$re2)/is;

847 :名無しさん@お腹いっぱい。:01/10/19 01:43 ID:LITbLOtt
>>843
こんなのも。
$first_str = '<table';
$last_str = '/table>';
$title_str = '題名';

$title_pos = index $str, $title_str;
$first_pos = rindex $str, $first_str, $title_pos;
$last_pos = index $str, $last_str, $title_pos;
$last_pos -= $first_pos - length($last_str);

print substr $str, $first_pos, $last_pos;

848 :通りすがりですが:01/10/19 01:56 ID:???
>>847
これ勉強になります、こう言うのってつい正規表現に傾倒しちゃうけど
ループに入れたりして、特定タグ内を抜き出す時とか便利そうですね、 ふむふむ...

849 :名無しさん@お腹いっぱい。 :01/10/19 06:59 ID:???
print <<EOF;
>>842
どうしてオカシイの? endが一杯になるから?
EOF

850 :名無しさん@お腹いっぱい。:01/10/19 07:10 ID:???
End Of File じゃないからってことじゃない?
別にまずくは無いけど、意味上おかしいって意味でしょ。

851 :名無しさん@お腹いっぱい。 ::01/10/19 08:00 ID:???
print '>>850 うん。でも、シンプル好き。';

852 :名無しさん@お腹いっぱい。:01/10/19 16:45 ID:iY0U/7m6
「海」=「?」のような文字参照による文字列を
シフトJISまたはUTF-8に変換する関数ってありますか?

853 :名無しさん@お腹いっぱい。:01/10/19 17:01 ID:???
>852 化けてて見えないっす。
文字参照詳しく知らんけど&harts;みたいなやつ?

854 :初心者:01/10/19 17:59 ID:???
jcode.plじゃダメなの?

855 :852:01/10/19 20:08 ID:O4d9Rk3g
ありゃりゃ。&#28023; です >>853さん
jcode.plでは変換できませんでした>>854さん

856 :名無しさん@お腹いっぱい。:01/10/19 20:22 ID:Y/1F1KjV
普通の回覧式の掲示板で、入力フォームを別にして、
入力と回覧を別にしたいのですが、どんなデコード処理を
したらいいんでしょうか? sub formにして入力画面のみの
サブルーチンを作ってみましたが、上手く入力に反映されません。

857 :名無しさん@お腹いっぱい。:01/10/19 20:32 ID:???
>856
他人のCGIの改造?
Content-typeの吐き忘れじゃないの?
何がどう上手く動かないか詳しく説明して。
「上手く入力に反映されません」なんて、こっちからしたら
なにがどう上手く反映されてないかわからないんだから。

858 :名無しさん@お腹いっぱい。:01/10/19 20:34 ID:???
てゆーか、「回覧式」ってなに?
BBSをみんなに回すの?
俺が知らないだけ?
だとしたらスマン。

859 :名無しさん@お腹いっぱい。:01/10/19 20:44 ID:???
>>855
少しは過去スレ見ろよ。以前俺が答えたんだから間違いなくある。
#!perl
use 5.6.0;
my $a = '?';
$a =~ s/?([0-9A-Fa-f]+);/pack 'U', $1/ge;
__END__
あとは自分で考えろ。

860 :859:01/10/19 20:46 ID:???
げ、"?"になっちまった。
以下全て半角
#!perl
use 5.6.0;
my $a = '&#28023; ';
$a =~ s/&#([0-9A-Fa-f]+);/pack 'U', $1/ge;
__END__

861 :名無しさん@お腹いっぱい。:01/10/19 21:16 ID:???
オコリナガラモシンセツナンダネ 860(・∀・)イイ!!

862 :856:01/10/19 22:03 ID:???
>>857-858
BBSは一覧表示型です。すみません、自己解決しました。
単なるスペルミスでした、お恥ずかしい。
どうもありがとうございました。

863 :名無しさん@お腹いっぱい。:01/10/19 22:33 ID:???
@aaaから$cccだけを取り出したい場合、
foreach(@aaa){
@bbb = split(/<>/);
$ccc = @bbb[0];
}
とするのと
foreach(@aaa){
($ccc,$ddd,$eee) = split(/<>/);
}
とするのではどっちが効率的なんでしょうか?
後者で言う$ddd,$eeeは使わないんですが。

864 :名無しさん@お腹いっぱい。:01/10/19 22:40 ID:???
>>863
その程度の差なら気にしなくていい。
微量な差が気になるならBenchmark.pmを使え。

因みに後者は
($ccc, undef, undef) = split(/<>/);
とした方が若干メモリの節約になる。若干だが。

865 :名無しさん@お腹いっぱい。:01/10/19 22:44 ID:???
>862-864
foreach(@aaa){
$ccc = (split(/<>/))[0];
}
ってのはどうなんでしょう?
変わらない?

866 :名無しさん@お腹いっぱい。:01/10/19 22:44 ID:???
ぐは、レス番ミス。
>863-864です。

867 :名無しさん@お腹いっぱい。:01/10/19 22:45 ID:???
>>863
こんなのも。
@array = qw[a<>b<>c 1<>2<>3];
@result = map { (split /<>/, $_, 2)[0] } @array;

868 :名無しさん@お腹いっぱい。:01/10/19 22:45 ID:???
>>864
なるほど。
大して変わらないなら余計な変数使わない前者の方が
ソースがスッキリしそうですね。(実際は11個の要素があるので。)

ありがとうございます。

869 :863=868:01/10/19 22:46 ID:???
と、レスしてる間に3つも…。

870 :863=868:01/10/19 22:49 ID:???
>>865
ありがとうございます。スッキリしますね。
>>867
初心者のため意味が…。
ちょっと勉強してきます。

871 :863=868:01/10/19 23:21 ID:???
>>867
なんとか理解できました。
ありがとうございます。

872 :名無しさん@お腹いっぱい。:01/10/20 16:19 ID:???
中級者 =

873 :名無しさん@お腹いっぱい。:01/10/20 19:24 ID:???
foreach(@aaa){
m/^([^<>]*)<>/;
push(@ccc,$1);
}

874 :名無しさん@お腹いっぱい。:01/10/20 21:19 ID:???
/(^<>^)/

875 :名無しさん@お腹いっぱい。:01/10/20 21:32 ID:???
>873
正規表現は遅いでしょ。
foreach(@aaa){
$ccc = substr($_,0,index("$_","<>"));
}

876 :名無しさん@お腹いっぱい。:01/10/20 21:56 ID:???
ハァ?

877 :名無しさん@お腹いっぱい。:01/10/20 23:55 ID:???
>>875
perl -v
This is perl, v5.6.1 built for MSWin32-x86-multi-thread

use Benchmark;
my $line = 'aaa<>bbb<>ccc<>ddd';
timethese(2000000, {
t_split => q{ my $ccc = (split /<>/, $line, 2)[0]; },
t_substr => q{ my $ccc = substr($line,0,index($line,"<>")); }
});
__END__
Benchmark: timing 2000000 iterations of t_split, t_substr...
t_split: 5 wallclock secs ( 4.28 usr + 0.00 sys = 4.28 CPU) @ 467180.57/s (n=2000000)
t_substr: 5 wallclock secs ( 5.14 usr + 0.00 sys = 5.14 CPU) @ 389105.06/s (n=2000000)

878 :875:01/10/21 00:07 ID:???
>877
ほぅ。
それはしらなんだ。
サンクス。

879 :名無しさん@Emacs:01/10/21 00:15 ID:Xm/NF+m9
このスレ、毎日きっちり読んでいけばかなり上達しそうな気がする・・・

880 :名無しさん@お腹いっぱい。:01/10/21 00:41 ID:???
use Benchmark;
my $line = 'aaa<>bbb<>ccc<>ddd';
timethese(2000000, {
t_split => q{ my $ccc = (split /<>/, $line, 2)[0]; },
t_substr => q{ my $ccc = substr($line,0,index($line,"<>")); },
t_reg => q{ my $ccc = ($line =~ m/^([^<>]*)<>/)[0]; }
});
__END__

Benchmark: timing 2000000 iterations of t_reg, t_split, t_substr...
t_reg: 4 wallclock secs ( 3.74 usr + 0.00 sys = 3.74 CPU)
t_split: 6 wallclock secs ( 5.12 usr + 0.00 sys = 5.12 CPU)
t_substr: 5 wallclock secs ( 5.83 usr + 0.00 sys = 5.83 CPU)



This is perl, version 5.005_03 built for MSWin32-x86-object

881 :名無しさん@お腹いっぱい。:01/10/21 01:29 ID:???
配列から重複要素を取り除く方法で、、
@aray = ('apple','orange','apple','melon','apple','orange');
@dummy{@aray} = (); ####この行
@disp = keys(%dummy);

###の左辺では何が起きているのでしょうか、@と言うのが分かりません。
$dummy{@aray}にしてみると要素数が入ってるし。。。
%dummyはハッシュですよね?  難しいです

882 :REN:01/10/21 01:37 ID:T+S0eZYV
Perlで掲示板を書いたんですが、日本語がうまく表示されないです。
jcodeはちゃんと置いてるんですが。なにかほかの原因がありますか?

ソースが必要ならtxtでアップします。

883 :名無しさん@お腹いっぱい。:01/10/21 01:39 ID:???
>>881
スライスについて調べてみれ。

スライスの例として、
@aray = ('apple','orange');
@dummy{@aray} = (1,2);
は、
$dummy{apple} = 1;
$dummy{orange} = 2;
と等価。

884 :REN:01/10/21 01:47 ID:T+S0eZYV
>>882 ソースです。どなたかお願いします。
http://www25.tok2.com/home/rensphoto/bbs-a.txt
http://www25.tok2.com/home/rensphoto/bbs-a.cgi

885 :名無しさん@お腹いっぱい。:01/10/21 01:48 ID:???
>882
まずHTMLソースを確認する。
ソースが文字化けしていなければ、文字コードの認識ミス。
METAタグとかで文字コードを指定しよう。
詳しい事はWEB製作板に。

HTMLソースが化けているとしたら、原因はそれ以外。
特定の文字だけ化けるのか全体が化けるのかにもよる。
特定の文字だけ化けるなら「予」「表」「ソ」などが使われている場所で
ないか確認。
文字化けする1文字目の後ろに「\」を入れてみる。
ただしこれはs-jis限定、eusでは起きない。

HTMLソース全体が化けるなら、CGIのソースを見せてほしい。

886 :名無しさん@お腹いっぱい。:01/10/21 01:49 ID:???
>>883さん
有難う御座います。
スライスの添え字はリストコンテキストですよね、でも
@dummy[@aray] では駄目なんですよね、これは左辺に有るからですよね。
それで、何故か連装配列になってる!
んー、難解ですぅ、、perldocかなぁ、、、

887 :名無しさん@お腹いっぱい。:01/10/21 01:49 ID:???
>884
jcode.pl置いてるだけで使ってないじゃん・・・

888 :名無しさん@お腹いっぱい。:01/10/21 01:53 ID:???
>884
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
&jcode'convert($name,"sjis");

これを$i=0;の上くらいに置こうね。

889 :REN:01/10/21 01:53 ID:T+S0eZYV
>>887
require './jcode.pl';
これじゃダメなんですか....?

890 :名無しさん@お腹いっぱい。:01/10/21 01:54 ID:???
あ、分かりましたです。。>>883さん (^_^ ;)
ハッシュスライスって言うのかぁ、、{}でハッシュスライスである事を
明示するんですね、なるほど〜

891 :名無しさん@お腹いっぱい。:01/10/21 01:55 ID:???
ダメって言われても、、、、取り合えず>>2のリンク一周しといで

892 :REN:01/10/21 01:56 ID:T+S0eZYV
>>891
今からいってきます...。

893 :REN:01/10/21 02:12 ID:T+S0eZYV
>>888
やってみましたが、どうもダメみたいです.....。

894 :REN:01/10/21 02:17 ID:T+S0eZYV
>>893
すいません、うまくいきました。
これからいろんなスレ読んで勉強してきます。
ありがとうございました。

895 :名無しさん@お腹いっぱい。:01/10/21 14:02 ID:yRzQNOPj
連想配列の keyの部分を正規表現で指定することって
できるのでそしょうか?

イメージとしては
$HASH = ( '20010930'=>'9/30', '20011001'=>'10/1', '20011002'=>'10/2');
delete $HASH{/^200110/};

みたいにまとめて消せればなぁと思いまして。
foreach $key( keys %HASH ){
 delete $HASH{$key} if $key =~ /^200110/;
}
ってやるしかないでしょうか?

896 :895:01/10/21 14:04 ID:yRzQNOPj
もうひとつ。
%HASHB = %HASH{/^200110/};
みたいな。感じのことができればいいかなと。
さすがに無理ですか?

897 :名無しさん@お腹いっぱい。:01/10/21 15:15 ID:???
>>896
CPANのTie::RegexpHashやTie::Hash::Regexがいいかモナー。
普通のハッシュより圧倒的に遅くはなるがな。

898 :名無しさん@お腹いっぱい。:01/10/21 15:29 ID:???
>>895
deleteは引数にハッシュスライスも指定できるよ。
delete @HASH{grep {/^200110/} keys %HASH};

899 :名無しさん@お腹いっぱい。:01/10/21 16:39 ID:???
>>896
必要なキーをgrepで出して,mapでそのハッシュ渡せばできる。
簡単な文でやるならforeachで一つづつ追加,かな。

900 :名無しさん@お腹いっぱい。:01/10/21 17:01 ID:MXQ9p/0K
CGI自身のローカルパスと、URLを獲得する方法ってありますか?

901 :名無しさん@お腹いっぱい。:01/10/21 17:15 ID:???
SCRIPT_FILENAME=
SCRIPT_NAME=
SCRIPT_URI=
SCRIPT_URL=
あたり。

902 :名無しさん@お腹いっぱい。:01/10/21 17:17 ID:???
>900
foreach (sort keys %ENV) { print "\$ENV{$_}: $ENV{$_}\n"; }を実行してそれらしいのを探す。
print __FILE__;
も参考に。

903 :900:01/10/22 00:14 ID:???
ありがとうございます。ばっちり獲得出来ました。

904 : :01/10/22 01:28 ID:???
正規表現で[0-9]のように、[あ-ん]のようなことをやるには
どうすればいいのでしょう?

905 :896:01/10/22 02:26 ID:???
>>898-899 ありがとうございます。
mapは今まで使ったことなかったのでこれを機会に
詳しく調べてみようと思います。

906 :名無しさん@お腹いっぱい。:01/10/22 02:28 ID:???
>>904
&jcode::tr()かな。↓が詳しいよ。
http://www.mikeneko.ne.jp/~lab/kcode/jcode.html#h2-10

907 :名無しさん@お腹いっぱい。:01/10/22 11:33 ID:VtVoe4OW
ORACLEのデータベースから何十万件のデータを読み込み、
そのデータを貯めて、次ページ、前ページでリスト表示したいのですが、
次ページで再度、同じCGIを呼ぶときに、前に読みこんだデータを保持できないのですが、
なにか方法はあるのでしょうか?
データ数が多いのと、レスポンスの関係上、ページ切替毎にDB読みこみは裂けたいという状況なのですが、
もし、何か策があったら、手ほどきをお願い致します。

908 :名無しさん@お腹いっぱい。:01/10/22 12:18 ID:???
何十万件もあるデータをメモリに貯めとく方がよっぽど負荷高い。
ファイルの書き出してもORACLEから再度取り出した方が早い。

909 :名無しさん@お腹いっぱい。:01/10/22 21:01 ID:VtVoe4OW
apacche::sessionとか、cgi::persistent等、
永続的オブジェクトの詳しいことはどこかに、書いてないですか?
永続的に保持できるとはいうものの、実際どのようにして保持するのかが、
まったくもってわかりません。どなたか、分かる方、教えてください。お願いします。

910 :名無しさん@お腹いっぱい。:01/10/22 21:10 ID:???
無名配列って何に使うんですか?
て言うかnewって何?、blessって何?
全然分かんないよぅ。。。。ウワァ〜〜ン ε===((((((;´Д`)

911 :名無しさん@お腹いっぱい。:01/10/22 21:17 ID:jrHSHu0Z
パスワードをいれないと絶対に見ることができないページって作れますか?
今は
認証.cgi→本体.cgiにして
本体でrefererをチェック認証.cgiと本体.cgi以外からだと蹴ってます。
が、キャッシュは残るし、referer偽造で軽く見られるし…
なんかいい方法ないですか?

912 :名無しさん@お腹いっぱい。:01/10/22 21:38 ID:???
>911
./htpasswordを使う。

CGIだけでどうにかするなら、有効期限を10分とか短い時間にしたcookieを食わせる手もある。
ただし利用者がcookieオフにしていたら入れなくなるけどな。
他には認証.cgiでIPを記録してそのIPでのアクセスを許可する手もあるけど、これは串利用者の場合通ってしまう可能性もある。

tu-ka,本体.cgiで認証もすればいいだけじゃ?

913 :名無しさん@お腹いっぱい。:01/10/22 21:39 ID:???
$pass = 'hogehoge';
if($hoge eq $pass){HTML表示}

これを先頭にぶち込めばいいんでないの?

914 :名無しさん@お腹いっぱい。:01/10/22 21:40 ID:???
あっラグで被ったし。。

915 :あのー:01/10/22 21:43 ID:0plXJa9e
家のWindows98で動作する
フリーウェアのDBを探してるんですが、
MySQLがベストなんでしょうか?
これよりいいのがあったらぜひ教えてください

916 :名無しさん@お腹いっぱい。:01/10/23 01:12 ID:???
PostgreSQL というのもあるが、
MySQL の方が扱いやすいと思う。

↓Linux 向けの記事だけど DB に関する部分は OS に関係ないので参考までに。
http://www.atmarkit.co.jp/flinux/index/indexfiles/index-linux.html#postgres

917 :名無しさん@お腹いっぱい。:01/10/23 01:49 ID:???
perlccを試してるんですが、linux+v5.005_03、Cygwin+5.6
WIN+Activeperl5.6 どの組み合わせでもa.outが実行出来ません(´Д`;)ウゥ..
Activeperl5.6 → ライブラリを探しに行ってあぼーん
Cygwin+5.6 → 実行するとコアダンプしてしぼーん
linux → コアダンプしてしぼーん
と言う感じです、どれも簡単なプリント文なんですが
ボクの環境は呪われているのでしょうか?
良いWeb等がありましたらご教授くださいませ。

918 :名無しさん@お腹いっぱい。:01/10/23 01:57 ID:???
因みに試したのはこんなのです...
#!/usr/bin/perl
$mes = 'This is test message';
@array = qw(dog monkey cat cow rabit);
@array = sort{$a cmp $b}@array;
print "$_\n" foreach @array;
print "$mes\n";
exit(0);

919 :名無しさん@お腹いっぱい。:01/10/23 02:13 ID:???
>>918
Perlcc でまともなバイナリを作るのは難しいみたい。
google ってみても(日本語のページでは)成功例は見ないね。

920 :名無しさん@お腹いっぱい。:01/10/23 02:31 ID:???
>>919
ありがとです(・∀・)
まだまだみたいですね>perlcc、高速化に期待してる訳では無くて
ちょっと秘匿性が上がるのと、pmをスタティックにリンクしてバイナリ化出来る?
らしいので期待してたんですが・・・ どうも5.6系は駄目みたいです
とあるWebで、何気に入れたら何気に動いたんでCGIに使ったらこれも動いた!
って書いてたんで結構枯れてるのかなと思ったんですが
色んなヴァージョン入れてみようかな・・・・とほほ
引き続き安定Ver情報が有りましたらお願い致します。。

921 :名無しさん@お腹いっぱい。:01/10/23 06:34 ID:???
5.8入れた人居ますか?
どんな感じかなぁ・・・

922 :名無しさん@お腹いっぱい。:01/10/23 08:35 ID:???
>>921
リリースされたなんて聞いてない。

923 :名無しさん@お腹いっぱい。:01/10/23 09:08 ID:???
いやアンタが聞いてなくてもさ。。。

924 :名無しさん@お腹いっぱい。:01/10/23 09:23 ID:???
Perl Versions:Stable is 5.6.1. Devel is 5.7.2.

何処に5.8があるんだよ、ボケ。Perlじゃないなら何の5.8かぐらい書こうな。

925 :名無しさん@お腹いっぱい。:01/10/23 10:07 ID:FWFaOvc8
Develって何ですか?

926 :JAPU ◆JAPUTeX. :01/10/23 10:57 ID:???
>>925
開発版。FreeBSD で言う current みたいなものです。普通の人は使いません。

>>910
多分、「プログラミングPerl (Programming Perl) 改訂版」「実用Perlプログラミング (Advanced Perl Programming)」を読むのが吉。
とりあえず端折った説明。

普通の配列は
@moe = ("motoko", "kanako");
のように変数名が付くけど、無名配列は変数名が付きません。なので、リファ
レンスを使ったアクセスのみ可能です。[...] は無名配列生成子で、無名配列
を生成してそこへのリファレンスを返します。
$ref = ["motoko", "kanako"];

で、これがどう役立つかと言えば、
@moe = (["sakura", "tomoyo"], ["motoko", "kanako"]);
のように使用して、$moe[0][1] ($moe[0]->[1] と等価) のようにアクセスし
ます。$moe[0] は ["sakura", "tomoyo"] という無名配列を差すハッシュです。
(print ref($moe[0]), "\n"; とすれば ARRAY と表示されます。) {...} とい
う無名ハッシュ生成子もあるので、同じように使えます。

927 :JAPU ◆JAPUTeX. :01/10/23 11:00 ID:???
(続き)

Bless はリファレンスを、あるパッケージのオブジェクトにします。($obj =
new HoeHoe; で HoeHoe オブジェクトを作って $obj->hoge(...) のように使
えますが、new の内部で使われます。)
下の例では HoeHoe::new が無名ハッシュへのリファレンスを返していますが、
これは bless されて HoeHoe パッケージのオブジェクトになっているので、
$hoe->value()という呼び出しが可能になっています。
ここではハッシュへのリファレンスを渡しているけど、スカラとか配列へのリ
ファレンスでもOKだよ。

#! /usr/bin/perl

$hoe = new HoeHoe("puni");
print $hoe->value(), "\n";
$hoe->value("hage");
print $hoe->value(), "\n";

package HoeHoe;
use Exporter;
use vars qw[@ISA];
@ISA = "Exporter";

sub new {
my $pkg = shift;
my $value = shift;
bless {value => $value}, $pkg;
}

sub value
{
my $obj = shift;
if(@_) {
$obj->{value} = shift;
} else {
$obj->{value};
}
}

__END__

928 :トリップガ(・∀・)イイ!!:01/10/23 12:18 ID:???
>>JAPUさん ありがたぅです

なるほぢ、Cの構造体のような感じになるんですね。
>$moe[0][1] ($moe[0]->[1] と等価)
$moe[0]->[1]の方が参照外しが分かり易そうでよかったので
これで行こうと思います。

>Bless はリファレンスを、あるパッケージのオブジェクトにします
まさにperlobjの説明にある関連付けをblessで行うんですね。
今書いて頂いたサンプルを見て色々考えてますです。
上手に使うと、参照渡しより柔軟に変数を操作出来るのかな?
OO童貞の厨房にはチト難しいです  ((汁;
取り合えずpackageを沢山作りながら勉強します。
使い方は後からにしよう!
本は金欠マンなんで再来月位になりそうですが。。。汗

実用Perlプログラミングを買おうと思います。
ありがとうです

929 :911:01/10/23 14:43 ID:ROBN75GS
レスどうもです。
もとからあった日記のCGIを
If pass eq pass {もとからあったCGIそのまま}
else えらーめっせーじ;
にしたんですが、日記の閲覧ページから書き込みページに移動しようとすると
とっぷのパスワードチェックに戻って今います。
どうしたらいいのでしょうか?
if節の中だとサブルーチンに入れないのでしょうか?

930 :名無しさん@お腹いっぱい。:01/10/23 14:53 ID:???
>929
んなこたない。
もう一度よく確認してみろ。
おそらく閲覧ページから書き込みページに移る際にパスワードを渡してないだけだろ。
パスワードが入っていないと元のCGIに辿り着けないんだろ?
だとしたらきっとパスワードを渡してないだけだ。

931 :911:01/10/23 15:46 ID:ROBN75GS
もとからあったCGIにはまったく手を加えてないのでパスワードはちゃんと渡ってるはずです。

932 :名無しさん@お腹いっぱい。:01/10/23 15:59 ID:2S5ZWxco
Perlを始めたばかりでコードの丸写しをして勉強中なんですが、
「’」と「”」を使い分ける理由を教えていただけませんか?
Perlは文字リテラルと数値リテラルなど区別がないらしいのに、
どうして・・・
単純な質問ですいません。

933 :名無しさん@お腹いっぱい。 :01/10/23 16:03 ID:???
$var = 'hoe'; print '$var';
これは貴方のの予想どうりに動きますか?

934 :名無しさん@お腹いっぱい。:01/10/23 16:07 ID:???
あー何か不親切だ
ヒアドキュメントで"_HTM_"; とかして @ を使うと死ぬのは
覚えといて下さい、今後の為に。

935 :名無しさん@お腹いっぱい。:01/10/23 16:17 ID:???
>>929
>If pass eq pass {もとからあったCGIそのまま}
>else えらーめっせーじ;

perl?
if を If と書いてるとかやってたら殺すよ?

出来るだけ正確に書けよ。

# だからと言って全部引用するなよ。

936 :932:01/10/23 16:20 ID:QI3yZ/4i
>933-934
うーん変数にシングルクォーテーションはいらないのは今試してわかりました。
ですが、他の人の書いたコードを見ると文字変数の値を代入する際に「’」や「”」
が入っていますよね?
この違いを教えていただけたらうれしいのですが・・・
933さんの簡単な例題にも時間を取られるような素人ですいませんが
よろしくお願いします。

937 :名無しさん@お腹いっぱい。:01/10/23 16:21 ID:???
>931
ちゃんと渡ってるかどうか、printして確認してみろ。
エラーが出た時の調査の一番簡単な方法だ。
「そんなはずはない」って思っている部分があったら、きっとそこが間違ってる。
思い込みをしたらエラーは見つけられない。
しらみつぶしに原因を探せ。

if(条件){書き込みフォーム}
else{パスチェック}
とあったら、その直前で条件を全部表示させてみろ。
それで9割がた解決する。
書き込みフォームの入口を調べろ。

938 :名無しさん@お腹いっぱい。:01/10/23 16:24 ID:???
>936
http://tohoho.wakusei.ne.jp/wwwperl1.htm#String
この辺。

939 :名無しさん@お腹いっぱい。:01/10/23 16:25 ID:???
>>936
$foo = 'bar';

$foo = "bar";
なら大抵どちらでも同じ。

940 :名無しさん@お腹いっぱい。:01/10/23 16:35 ID:???
>>936
んー、そんなに丁寧に聞かれると漏れも・・・(薄っぺらっ!
本家のドキュメントの何処かには、$var = "$foo"; とか return("$bar");
こう言うのは実際良く無いと書かれてます。この辺が>>936さんの悩み所?
ただ$var = "$fooさんハロー"; とかになった時に便利なんでやっぱりこの書き方
をしてしまう人が多いと思います。$var = 'ハロー'; が $var = '$fooさんハロー'
とか。結局初めのうちに色々考えながらやってる分には"で括ってエスケープ
しまくるのが手っ取り早いんだと  w
後、変数展開のコスト(' と ")に付いて良く議論されてますが、個人的には屁でも無いです
ガンガン " を使いましょう、
後初めの頃に気を付けるべきなのは、print "@array"; とprint @array; は決定的に違います
それとさっき書いたヒアドキュソメントの@、くらいかなぁ漏れが嵌ったのは

C使うなら qq とか qw も調べてみると吉かもしれませぬ。

941 :名無しさん@お腹いっぱい。:01/10/23 16:38 ID:???
print "表示";
print '表示';
前者は文字化けします。(s-jis限定)
変数がないのならなるべく'がいいと思ってます。
その前にeucを使えと言われそうですが。

942 :名無しさん@お腹いっぱい。:01/10/23 16:41 ID:???
あったあった、ココの
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq4.html
What's wrong with always quoting "$vars"? 辺り

データ型は必読ですよん

943 :名無しさん@お腹いっぱい。:01/10/23 16:50 ID:???
かなり勝手な想像...
何でもqq、でエスケープしまくり     ハヂメテノパール
 ↓
エスケプウザー(゚Д゚)、で q も使ってみる   ←この段階の配布コードが何故か多い
 ↓
qq、q とヒアドキュで良いじゃん(・∀・)♪
 ↓
ソースキレー(゚Д゚)

944 :名無しさん@お腹いっぱい。:01/10/23 16:51 ID:???
ああ化けた、、詩嚢、、

945 : :01/10/23 16:58 ID:jinEtdTY
CGIがNN6.1の場合にのみ2重起動されます。
なにか原因にこころあたりがあるかたいますか?

初回起動のあと5秒くらいで2度目の起動がかかってしまいます。

946 :936:01/10/23 17:14 ID:???
みなさんありがとうございました。
今現在ではまだ詳しい事が全然理解できていないので、
みなさんのおっしゃった事を纏めて
変数代入時は「”」
変数に代入しない2byte文字列を使うときは「’」
を使ってみようと思います。
その他色々教えていただいた事は今から調べてみます。
本当にありがとうございました。

947 :名無しさん@お腹いっぱい。:01/10/23 20:23 ID:6sXZfXmj
http://www3.ocn.ne.jp/~ayausa/webgame/DQ.html
↑みたいな風なプログラムを作るんだったら
C言語じゃできない?なにだったらいいかな?

948 :名無しさん@ほっとぞぬ:01/10/24 00:48 ID:???
多次元配列でスライスって使えますか?
以下のような場合ダメだったので

@kkk = @fff[0][3 .. 6];

949 :名無しさん@お腹いっぱい。:01/10/24 00:53 ID:???
>>948
使えるよ
@kkk = @{$fff[0]}[3..6];

950 :名無しさん@ほっとぞぬ:01/10/24 01:04 ID:???
>949
高速レス、サンクスです。
@{$fff[0]} = (2, 3, 4, 5, 6, 7, 8, 9, 0);
という代入もできるんですね。

もう一つ聞いてもいいでしょうか?
多次元配列にまとめて代入できますか?
@kkk = ((3, 4, 5), (2, 3, 4), (6, 7, 8));
だとだめでした。

951 :名無しさん@お腹いっぱい。:01/10/24 01:06 ID:???
@kkk = ([3, 4, 5], [2, 3, 4], [6, 7, 8]);

952 :名無しさん@お腹いっぱい。:01/10/24 01:07 ID:???
>>950
@kkk = ([3,4,5],[2,3,4],[6,7,8]);
ではなく?

953 :名無しさん@ほっとぞぬ :01/10/24 01:10 ID:???
>> 951、952
1次元で () で囲むので多次元でもそうだと思い込んでいました。
有難うございました。

954 :名無しさん@お腹いっぱい。:01/10/24 02:11 ID:Haoaz9Y7
$foo{bar}->[0] = 'あ';
$foo{bar}->[1] = 'い';
$foo{bar}->[2] = 'う';

というのがある状態で

foreach $hoe ( $foo{bar} )
もしくは
foreach $i ( 0 .. $#foo{bar} )

みたいな取り出し方ってできないのでしょうか?

955 :名無しさん@お腹いっぱい。:01/10/24 02:20 ID:???
取り合えずperllol辺りを良く読んだ方がいいかと・・・

956 :つーか。。:01/10/24 02:47 ID:???
>>949
のレス貰って分からないとマズイですよ
配列であれハッシュであれ、デリファレンスしたものに対して操作しましょ

957 :名無しさん@お腹いっぱい。:01/10/24 04:48 ID:6Q3D2kbA
#!/usr/local/bin/perl
print "content-type: text/html\n\n";

$g=25425425124%241;
print "$g\n";

これ実行すると0が返ってくる・・・別のサーバーに置くと14が・・意味不明。
わかる人いますか?

958 :名無しさん@お腹いっぱい。:01/10/24 04:55 ID:???
マルチポストはやめれ。
http://piza2.2ch.net/test/read.cgi/tech/991994996/505-

959 :名無しさん@お腹いっぱい。:01/10/24 05:51 ID:???
変数の初期化って特に必要無いんでしょうか?
どうもPERLの作法に慣れなくて・・・・

960 :名無しさん@お腹いっぱい。:01/10/24 06:02 ID:???
>>957
再現しないぞー て当たり前か(´Д`;)

961 :  :01/10/24 07:20 ID:WMwwHA4O
目か頭が壊れてる可能性が高いですね

962 :名無しさん@お腹いっぱい。:01/10/24 07:26 ID:???
#!/usr/bin/perl -wT

require japu;

963 :名無しさん@お腹いっぱい。:01/10/24 07:32 ID:???
>>959 その感じだとCからかい?、だとしたらPerlは不定では無い
0又は空文字列って感じ(C#って良いよね)
今の君は白百合女学園からフリースクールに転校してきたような状態なんだよ へへ

他に嵌るパターンて言うと、ループ、再帰、mod_perl環境、undumpした実行ファイル
位かな、どれも前のウンコが入っててシボーンて奴だからそんなに凶悪じゃ無いし。
勿論慣れなきゃ全部初期化してもOK、コストがどうとか言う奴はホットケ(w
書いてればそのうち慣れてくるもんだし。

**もし**宣言の事言ってるんだったら、こっちはちゃんとしよう。
常時strict縛りがお勧め

964 :954:01/10/24 09:57 ID:???
>>955
PerlLoL読みました。
参照ではなく実体で渡す必要があるから

foreach $hoe ( @{$foo{bar}} ){
foreach $hoe ( $#{$foo{bar}} ){

とやればいいのですね!
無事解決しました。ありがとうございます。

965 :名無しさん@お腹いっぱい。:01/10/24 09:59 ID:???
なんかここが「かちゅ〜しゃ」で読めなくなってる。
なぜに?

966 :名無しさん@お腹いっぱい。:01/10/24 10:00 ID:???
my $ref = func();
print $$ref;

sub func{
 my $hoge;
 $hoge = "hoge";
 return \$hoge;
}

Cでこれやると駄目だよねえ。PerlでOkな理由がわかんない・・・。

967 :名無しさん@お腹いっぱい。:01/10/24 11:30 ID:???
>>967
Perlのmy変数はCのauto変数と違い、
・スタックには積まれるわけではない。
・参照がなくなるまで実体も消えない。
と考えればよいでしょう。

968 :911:01/10/24 11:41 ID:EX0y50So
まずページを開いた時に

sub login {

if ($FORM{'pass'} ne "$pass") {
&header;
エラーメッセージ表示。
exit;
}
else{ 日記のCGIそのまま }
exit;
}

でパスをチェックして、つぎに日記CGIないのパスチェックで管理モードに移行させたいのです。
日記CGI単体での動作確認は取れてます。
どこがいけないのでしょうか?

969 ::01/10/24 11:49 ID:1tmsVagU
use strict している状態で eval() をした場合
strict がエラーになっても $@ になにも設定されません(T_T
Known Bug でしょうか?

use strict;
eval(<<'EOF;');
$X = 1;
EOF;
if(defiend($@)){
print "[$@]\n";
}

970 :名無しさん@お腹いっぱい。:01/10/24 12:13 ID:???
>>911
次のページに移動するとき
hoe.cgi?pass=password
みたいに渡してる?

971 :名無しさん@お腹いっぱい。:01/10/24 12:16 ID:???
@fff[0..1][2]
のようなスライスをすることは出来ますか?
(スライスとは言わないのかも)

972 :JAPU ◆JAPUTeX. :01/10/24 12:28 ID:???
>>969
"Bug" かどうかは分かりませんが、Perl 5.6 では $@ に "Global symbol ..."
が格納されます。

973 ::01/10/24 12:31 ID:1tmsVagU
>>972
ありがとうございます。
こちらは Perl5.005_03 です。
ふーむ どうしようかなぁ
STDERR には "Global symbol ..." が出力されるので
こいつを捕まえるのがいいのかな。

974 ::01/10/24 12:34 ID:1tmsVagU
STDERR, STDOUT を上書きして文字列として取得したり
はたまた 文字コード変換を追加したりできるモジュールとか
ありませんでしょうか?
&hogehoge(STDERR, \&buffering);
&hogehoge(STDOUT, sub { new Jcode(@_)->sjis(); });
みたいな感じで。
CPAN検索中....でも探すのヘタなんですよ(TT

975 :名無しさん@お腹いっぱい。:01/10/24 12:38 ID:???
まんまのがありますね。
http://search.cpan.org/search?dist=Tie-STDERR

976 :名無しさん@お腹いっぱい。:01/10/24 12:41 ID:VLOxIr/R
use CGI;
$cgi = new CGI;
%FORM = $cgi->Vars;

をやろうとしています。Win32上の Perl 5.6.1では出来るのですが
プロバイダにある 5.005_03 では
Undefined subroutine CGI::Vars
と言われてしまいます。

古いバージョンの CGI.pmではどのように要素を取り出したら
よいのでしょうか?

977 :名無しさん@お腹いっぱい。:01/10/24 12:47 ID:???
そろそろ次スレだな。

978 :名無しさん@お腹いっぱい。:01/10/24 13:09 ID:???
>>976
%FORM = map{ $_, $cgi->param($_) } $cgi->param();

979 :名無しさん@お腹いっぱい。:01/10/24 13:15 ID:???
$logfile
---
2
1<>dataA<>dataB<>dataC<>
2<>dataA<>dataB<>dataC<>
EOF

処理
open(NUM, "< $logfile");
@log = <NUM>;
close(NUM);
$num = shift(@log);
chomp($num);
$num++;
$data = "$num<>$a<>$b<>$c<>";
unshift(@log, "$num\n");
push(@log,"$data\n");
open(ADD, "> $logfile");
print ADD "@log";

$logfile
---
3
1<>dataA<>dataB<>dataC<>
2<>dataA<>dataB<>dataC<>
3<>dataA<>dataB<>dataC<>
EOF

という風に
unshift(@log, "$num\n");
では行頭に半角スペースが入らなかったのに
push(@log,"$data\n");
open(ADD, "> $logfile");
としたら各行の行頭に半角スペースが入ってしまいました。
全く分からないのですが、どこで半角スペースが入ってしまっているのでしょうか?

980 :979:01/10/24 13:18 ID:???
あわわ。。
半角スペース失敗。全角で書きます。
処理後の$logfile
---
3 #ここには入ってない。
 1<>dataA<>dataB<>dataC<> #ここの行頭
 2<>dataA<>dataB<>dataC<> #ここの行頭
 3<>dataA<>dataB<>dataC<> #ここの行頭
EOF

981 :名無しさん@お腹いっぱい。:01/10/24 13:23 ID:???
>>979 過去ログ見ようね
http://corn.2ch.net/php/kako/996/996075607.html の409-415

982 :966:01/10/24 13:24 ID:???
>>967
参照カウンタ持ってるのか。なるほどさんくすありがd

983 :979:01/10/24 13:33 ID:???
>>981
う…。失礼しました。
逝ってきます。

過去ログ全部取得して保存しておこう…。

984 :名無しさん@お腹いっぱい。:01/10/24 14:03 ID:???
my 新スレ立てるよー;

985 :名無しさん@お腹いっぱい。:01/10/24 14:14 ID:???
お願いします。
ってもう立ってるね。
コピペ中っぽいのでまだリンクは張らず。

986 :これが貼りたかったーー:01/10/24 14:18 ID:???
             , -―- 、
        , l[》《]|      ヽ
        / i/ i ノノノ ))))〉     / ̄ ̄ ̄ ̄ ̄
.      / i i |(リ ( | | | !    / 質問に答えてくれたみなさん
      〈ヘ|_|l| l ゝ~ lフ/|   <.  .ありがとうっ
       / | | |( ヽwliヽ |       \ このスレはおしまいだよ。
      / /! | l ヘ《~ヘii~∧ ∧     \_____
     /  /ノノ! ノ|リ〉 \/( ゚ω゚)
   / ,  ./-‐- 、/V\ハ_ヲUU
   !/ ./    / / |   ゝ つつ
   ヽ_/   ./    !    jj  \
       /               i
      〈   /        |      |'
       ゝ /    l    |   !/
        `〜‐-L__」〜'^

(´-`).。oO(新スレッドだろう・・・・
http://ebi.2ch.net/test/read.cgi/php/1003900311/l50
)

987 :名無しさん@お腹いっぱい。:01/10/24 14:19 ID:???
お疲れさまです。
今後もお世話になります。

988 :名無しさん@お腹いっぱい。:01/10/24 14:26 ID:???
新スレに書くと10までの参考URL書くスペースをつぶしてしまうので…。

新スレの>7氏宛て
かちゅ〜しゃでdat読んでました。
ごめんなさい。

989 :名無しさん@お腹いっぱい。:01/10/24 15:15 ID:???
次スレ:【Perl 】初心者コーナーPart8
かちゅ〜しゃ用リンク
http://ebi.2ch.net/test/read.cgi?bbs=php&key=1003900311

990 :キリ番ゲッター:01/10/27 09:04 ID:p/1joBiQ
1000間近スレッド発見

991 :キリ番ゲッター:01/10/27 09:05 ID:p/1joBiQ
1000狙うからな
邪魔するんじゃねーぞ

992 :キリ番ゲッター:01/10/27 09:05 ID:p/1joBiQ
俺様が1000とったら ウラビデオ 記念にさしあげます

993 :キリ番ゲッター:01/10/27 09:05 ID:p/1joBiQ



0あげ!!!!!!!!!    pupupu

994 :キリ番ゲッター:01/10/27 09:07 ID:p/1joBiQ
ウラビデオ配布場所は ここ!!!!
http://www.megabbs.com/cgi-bin/readres.cgi?bo=douga&vi=991411619&rm=100

995 :キリ番ゲッター:01/10/27 09:07 ID:p/1joBiQ
いいか
邪魔したら ウラビデオは 配布中止だ

996 :キリ番ゲッター:01/10/27 09:09 ID:p/1joBiQ
お前ら
ROMだけしておけ

カキコするな


fuck

997 :キリ番ゲッター:01/10/27 09:10 ID:p/1joBiQ
どうやら この板の住人は
俺様だけのようだ


勝ったな

998 :キリ番ゲッター:01/10/27 09:11 ID:p/1joBiQ
1000ほしいか

それとも ウラビデオほしいか!!!!!!!

999 :キリ番ゲッター:01/10/27 09:11 ID:ROzJuflR
俺様=神

邪魔するやつ=うんこ

1000 :キリ番ゲッター:01/10/27 09:23 ID:ROzJuflR
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

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

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