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

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

【Perl 】初心者コーナーPart6

1 :undefさん:2001/07/26(木) 00:40 ID:???
初めて来た方、初心者はまずこのスレッドから始めよう。
尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
案外答えはもう書かれているかもしれない。

2 :undefさん:2001/07/26(木) 00:40 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
【Perl,CGI】参考書籍 http://tako.2ch.net/test/read.cgi?bbs=perl&key=970166109

[総合]
□Perl Com: http://www.perl.com/pub/
□CPAN.com: http://search.cpan.org/
□ActivePerl: http://www.activestate.com/

[お薦め]
 ・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

[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

[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/

3 :ちょこら:2001/07/26(木) 00:44 ID:IoXCn0Pg
>>1
ごくろうさまです。

4 :名無しさん@お腹いっぱい。:2001/07/26(木) 00:48 ID:???
↑しまた。名前消し忘れた。。。

5 :名無しさん@お腹いっぱい。:2001/07/26(木) 00:56 ID:???
>>1
ご苦労様。

ところで、前スレの956さん
TAB区切りとか言いながら$dataは半角スペース区切りになってるよ。
などと無駄なツッコミを入れてみたり。

6 :名無しさん@お腹いっぱい。:2001/07/26(木) 04:33 ID:34foWq2Y
ハイマ(バーチャ)から、他鯖のファイルを読み込むCGI書いたんだけど、
「〜が見つかりません」となってしまう。

これって、ダメなの?

$htmlfile = "http://〜〜〜/temp.html"; # 他鯖のアドレス

if(!open(HTML,"$htmlfile")){
print "<html>$htmlfileが見つかりません</html>\n";
exit(0);
}

7 :名無しさん@お腹いっぱい。:2001/07/26(木) 04:39 ID:???
>>6
ダメに決まってる。
つーか初級ネット逝け。もう戻って来るな。

8 :名無しさん@お腹いっぱい。 :2001/07/26(木) 06:47 ID:JG2uz2mw
配列の中に幾つかの要素が入っています(数は不明)、
この@hairetsuの中の要素を全て変数に入れたいのですが
方法が解らないです。
$yousosuu = @hairetsu
ってして不明な要素数を得たのですが、そこからが解らないです。
初心者以前の問題でしょうか。

9 ::2001/07/26(木) 06:53 ID:JG2uz2mw
変な日本語でゴメンナサイ、
@hairetsuの中身が、、1<>2<>3<>4<>5<>6<>7<>8<>9<>10
ってなっている時に
$youso1 = 1
$youso2 = 2
と言う風に代入したいのです、数が不明だとどうすれば良いのかが
解らないのです。

10 :名無しさん@お腹いっぱい。:2001/07/26(木) 07:01 ID:???
>>8
my @array = qw(aa bb cc);
my $str = '';
map { $str .= $_ } @array;
print $str; # aabbcc

こういうことじゃなくて?

11 :名無しさん@お腹いっぱい。:2001/07/26(木) 07:10 ID:???
>>8=9
別に取り出さないで$hairetsu[0]って使うのではダメなの?

12 :ちょこら:2001/07/26(木) 07:16 ID:pAced2Jk
$yousosuu = @hairetsu;
が前提なら

for($i=0;$i<$yousosuu;$i++){
  $varname = 'youso' . $i;
  $$varname = $hairetsu[$i]
}

でどうだ。まあこの例だと$youso0から始まるがいやならいじってくれ。

13 :初心者名無しさん:2001/07/26(木) 08:07 ID:D05Jcn/w
>>8
これでも……たぶん
foreach (@hairetsu) {
  $num++;
  ${youso.$num} = $_;
}

14 ::2001/07/26(木) 08:25 ID:JG2uz2mw
ヤター!!(^ ^ ) 皆さんありがとうございますぅ
ちょこらさんと初心者名無しさんの方法で上手く行きました。
未知の数値の扱い方がわからなかったんです。
と言うよりfor文の使い方が解って無いのか (汗)
皆さんカコイイです! ありがとうございました あげっ!! (^ ^ )

15 :ちょこら:2001/07/26(木) 09:15 ID:???
ああ。>>13の方が断然スマート。
勉強になります。精進します。

16 :名無しさん@お腹いっぱい。:2001/07/26(木) 10:16 ID:fwGjG1C6
自作CGIの配布を考えているのですが、
実行時、鯖にどれくらい負担がかかるのかチェックしたく思ってます。

なにかいい方法ありますか?

17 :名無しさん@お腹いっぱい。:2001/07/26(木) 10:36 ID:???
use Benchmark;

使い方は

perldoc Benchmark

負荷チェックはローカルで。

18 :ほげ:2001/07/26(木) 11:33 ID:???
>>9
で、代入したあとどうやって使うの? >>11も書いてるけど、
また $i に数字をいれて print ${youso.$i} ってやるだけなら、
配列のまま $hairetsu[$i] を使う方が分かりやすいと思うよ。

19 :名無しさん@お腹いっぱい。:2001/07/26(木) 12:19 ID:OUMdOt/2
時間<>タイトル<>名前<>コメント
という構成のログがあって、それをハッシュ%INに入れたいんですが、

qw($IN{'TIME'} $IN{'TITLE'} $IN{'NAME'} $IN{'COMMENT'}) = split /<>/;

今こんな感じにやってるんですが、
もっと上手い方法はありませんでしょうか?

20 :_gunzip:2001/07/26(木) 12:27 ID:???
>>19
@IN{ qw[ TIME TITLE NAME COMMENT ] } = split /<>/;

21 :名無しさん@お腹いっぱい。:2001/07/26(木) 12:31 ID:OUMdOt/2
>>_gunzipさん
はーなるほど、@INを使うのか…
ありがとうございました!

22 ::2001/07/26(木) 12:34 ID:???
えっと、${youso.$i}の中身が実はCSVファイル(と言うより初めに読み込んだファイル)なんです。
今ずっと過去ログを読んでいたんですが、偶然にも前スレの952さん
と同じ目的のような気がするです。
.csvの中身を並べ替えて区切り文字を","から"<>"に変更したいのです。

それで、今度は${youso.$i}(中身はa,b,c,d,eとかの5つの要素が入ってる)
をもう一回配列に入れようとして芯でるです (^ ^;)
基本的に考え方が間違えてるのかなぁ、、、、
今リンクを一杯開けて勉強中    (^ ^ )

23 ::2001/07/26(木) 12:37 ID:???
アア、、やっぱり電波な日本語だぁ (^ ^ )
もっと精進して出直して来るっす。 失礼します 

24 :名無しさん@お腹いっぱい。:2001/07/26(木) 13:11 ID:20lkItDU
jcodeを使用せずに、
文字コードがshift_jisかどうかを判断するにはどうしたらいいですか?

25 :_gunzip@出掛けますが:2001/07/26(木) 13:26 ID:???
>>21
>20 のは、ハッシュのスライスです。スライスについては、
http://www.effectiveperl.com/EP.02.pdf
のItem2辺りを参照するといいと思います。

>>22-23
無理して言葉で表現しようとせずに、元のデータと、自分が期待する結果を両方示して、
「このような事を実現するには、どんなデータ構造にして、どのように処理すべきか」
って聞いた方がいいと思う。

例えば、(こーゆー事じゃないかと勝手に想像)

Aoki,54,Nagano
Terui,95,Hokkaido
Maeda,23,Osaka
(続く)

というデータがあり、これを二番目の項目の数値で昇順に並び替え、","を <> に変換して

Maeda<>23<>Osaka
Aoki<>54<>Nagano
Terui<>95<>Hokkaido

のように書き出したいが、この場合どんなデータ構造でデータを格納し、
どんな手法でそれらをソートすればいいのか?

環境: 自分でコンパイルしたPerl5.7.2+VineLinux

・・・のような感じ。(ん....なんか変だが)

26 :16:2001/07/26(木) 14:22 ID:???
ありがとうございました!>>17

27 ::2001/07/26(木) 14:27 ID:???
_gunzipさんありがとうございます。
ハイっ、その通りです。全部聞いちゃうと凄い量になるのかなと
思ってしまって... (^ ^;)

1,2,3,4,5
aoki,M,1985_01_08,220,157
egawa,F,1984_09_11,170,142
saitou,M,1983_11_22,247,167
yokomori,M,1986_07_15,195,150
.
. 続く(行数は分からないです)

と言うファイルの内容を...

1<>2<>3<>4
aoki<>M<>Highscore---220<>Average---157
egawa<>F<>Highscore---170<>Average---142
saitou<>M<>Highscore---247<>Average---167
yokomori<>M<>Highscore---195<>Average---150
.
.  続く...

こんな風に並べ替えて少しの文字列を加えたいのです。
それで、Vine2.15+perl5.005_03な環境でWEBのフォームにtextを
貼り付けて、変換結果を再びtextareaに表示しようとしたのですが
受け取りと出力は出来たものの、肝心の処理が上手くいかない
のです。

28 :21:2001/07/26(木) 16:45 ID:rFKr7cVw
わざわざ参照サイトまでありがとうございます。
今日偶然にもEffectivePerl買ってきたので合わせて勉強したいと思います。
スライス慣れれば便利そうですね。

29 :名無しさん@お腹いっぱい。:2001/07/26(木) 18:21 ID:???
>>8
ベタに処理しただけだが、参考にでも。

open FILE, "< $file" or die;
my $cut = <FILE>;
print join('<>', 1,2,3,4)."\n";
while (<FILE>) {
chomp;
my @data = split /,/;
$data[3] = 'Highscore---' . $data[3];
$data[4] = 'Average---' . $data[4];
print join('<>', $data[0],$data[1],$data[3],$data[4])."\n";
}
close FILE;

30 :undefさん:2001/07/26(木) 21:13 ID:20lkItDU
初めまして。
テキストファイルのリストをソートしてはき出したいのですが、
いい方法が思いつきません。

とりあえず、私が考えた物、、
ファイルが大きくなると問題あるです。。。



open(IN,"list.txt") || die;
my @list = <IN>;
close IN;

open(OUT,"sort_list.txt") || die;
foreach(sort @list){
print OUT;
}
close OUT;

31 :30:2001/07/26(木) 21:15 ID:???
あ、修正。

open(IN,"list.txt") || die;
my @list = <IN>;
close IN;

open(OUT,">sort_list.txt") || die;
foreach(sort @list){
print OUT;
}
close OUT;

32 :名無しさん@お腹いっぱい。:2001/07/26(木) 23:30 ID:???
ネタだとは思うが…
俺なら
my @list = sort <IN>;
と読み込むな(ファイルがメモリに収まるくらい小さいのであれば)

もしくは、書き込むときに
print OUT sort @list;
とかね(まぁ、やり方は何通りもあるから)。

ちなみにファイルがでかい場合は、DB使うからそもそもこんな問題考えない(藁

33 :名無しさん@お腹いっぱい。:2001/07/27(金) 01:00 ID:???
>>32
どこらへんでネタだと思ったのかわからないけど、
ただ短くするだけなら、print OUT sort <IN>; だろ。
何の解決にもならんけど。
さいごの行については同意。
>>31
http://www.amazon.co.jp/exec/obidos/ASIN/4894712369
前にちらっと見たこの本にそんなような内容が書いてあった気がする。Cだけど。

34 :32:2001/07/27(金) 06:15 ID:???
>>33 何の解決にもならんけど。

↑書き方はいろいろできるけど、結局この辺の理由で(藁
あと、最近夏休みに入ったせいか、宿題っぽい質問が多いからね

>>31へ蛇足
|| → or,foreach → forに慣れた方が良いと思われ

35 :名無しさん@お腹いっぱい。:2001/07/27(金) 09:17 ID:Q5S7zu8k
|| -> or はともかく、for と foreach は等価だからどっちでもかまわんと思うが...

36 :名無しさん@お腹いっぱい。:2001/07/27(金) 09:30 ID:???
好き嫌いの問題と思われ。

37 :名無しさん@お腹いっぱい。:2001/07/27(金) 09:48 ID:PIHalO2g
くだらない質問ですいません。
スクリプト言語は理論的に空行はつめたほうが
実行が速くなるのでしょうか。

38 :名無しさん@お腹いっぱい。:2001/07/27(金) 09:55 ID:???
少なくとも人間が体感できるほどの差はありません。

39 :名無しさん@お腹いっぱい。:2001/07/27(金) 10:00 ID:???
理論的には速くなりますでしょうか?

40 :JAPU:2001/07/27(金) 10:35 ID:Q5S7zu8k
まぁ、気になるなら試してみぃ。

41 :34:2001/07/27(金) 10:40 ID:???
>35,37
forの方がforeachより字数が少ない(藁

42 :名無しさん@お腹いっぱい。:2001/07/27(金) 11:13 ID:???
字下げしねえとperlタンも読みにくいんじゃねえか ヲ

43 :名無しさん@お腹いっぱい。:2001/07/27(金) 16:13 ID:???
http://www2s.biglobe.ne.jp/~cru/library/lq/index.html
http://dream.lib.net/room/cgi/e_acsdeny.html

の二つを、1つの掲示板に使う場合、どういう風に書けばいいでしょうか?
何回やっても、どちらか一方しか作動しないので質問しました。

44 :名無しさん@お腹いっぱい。:2001/07/27(金) 16:40 ID:???
こらまた、厨房臭いCGIだな。
片方が弾けば次が動作するわけねーじゃん。

つか2つ使う意味あんの?

45 :名無しさん@お腹いっぱい。:2001/07/27(金) 17:06 ID:???
>>44
44ですが、下の奴を主に使ってたんですが、Proxy制限が使えないんですよ。(機能はあるのに)
だから、上のProxy制限に優れてる奴と二つ使えれば問題ないかなと思ったんですが、
どうやらうまく行かないらしいみたいなので、もういいです。ありがとうございました。

ところで、
http://dream.lib.net/room/cgi/e_acsdeny.html
このスクリプトが、きちんとProxy制限できれば良いんですが、
どうしたらいいんでしょうか?どなたかご教授ください。

46 :30:2001/07/27(金) 19:01 ID:OFQPU1uA
>>32さん、>>33さんサンクスです。

まとめるとこんな感じですか?
でも、サイズがでかくなると問題です。

open(IN,"list.txt") or die;
open(OUT,">sort_list.txt") or die;
print OUT sort <IN>;
close IN;
close OUT;

何かいい方法ないですかね?
(DBを使用しないで、、)

system 'sort list.txt > sort.txt';
とかやっても無駄ですか?


> || -> or
この違いって何ですか?
調べたら、優先順位が低くなるってありました。
ただ打ちやすいから、|| をつかってたのですが、、、

47 :名無しさん@お腹いっぱい。:2001/07/27(金) 22:03 ID:???
>46
自分でマージ・ソートでも自分で作ってみたら?
昔からあるソート法だよ。

48 ::2001/07/27(金) 23:31 ID:???
>>29さん、レス遅れました。
カコイイやり方有難う御座いますぅ (^ ^ )
何とか上手くいったのでご報告ですぅ、結局最初に読み込まれたcsvファイル
を\nをデリミタにして配列に入れて、その要素をもう一回配列に入れてから
からヘコヘコと加工してpushしました。 50行くらいになっちゃった  ^ ^ )
>>13さんや>>29さんの カコヨイやり方で挑戦中

49 :名無しさん@お腹いっぱい。:2001/07/28(土) 00:25 ID:???
結構過去のログまで読んだのですが見つからなかったので質問いたします。

プログラムが大きくなったのでソースファイルを分割して、

main.pl
require 'sub1.pl';
require 'sub2.pl';

のようにしたとき、

1.use strict;をmain.plで宣言すると、requireで呼び出した
sub1.pl sub2.plにもその宣言が適用されるのでしょうか?

2.main.plで宣言したグローバル変数はsub1.pl sub2.plでも
適用されるのでしょうか?

50 :名無しさん@お腹いっぱい。 :2001/07/28(土) 02:01 ID:???
米鳥にカウンター設置したいんですけど
誰かご教授してもらえませんか?
<img src="/bin/counter">これをHTML
にくみこむだけでなんとかなると思ってたのですが・・・

51 :名無しさん@お腹いっぱい。:2001/07/28(土) 02:41 ID:???
>>49
結構過去の過去ログを読むのはいい心がけだけどさ、なんで過去ログにないのか考えること。
そのくらい自分でちっちゃいプログラムを書けば簡単に試せるから誰も質問しないんだよ。

52 :JAPU@今日も観鈴ちんを探しにマクドナルドへ...:2001/07/28(土) 06:25 ID:???
>>46

典型的な例:

1. open MOE, "misuzu.txt" || die;
2. open MOE, "misuzu.txt" or die;

ここで、
1. は open MOE, ("misuzu.txt" || die);
2. は (open MOE, "misuzu.txt") or die;
と解釈されるので、おそらく 1. は期待した動作じゃないだろう...
みたいな話。

もちろん、括弧で括れば全く問題ないので、|| で全て書いても良いです。
個人的には or を使うのが好きです。

# The Perl motto is "There's more than one way to do it."
ZZ

53 :名無しさん@お腹いっぱい。:2001/07/28(土) 07:01 ID:???
>>52 個人的には or を使うのが好きです。

同意。

Perlの上級者は極力()や&、$_を書かないでコーディングするから、
Perl初心者からみると訳のわからないスクリプトに見えることがありますよね。
でも、それを自分で考えて解くのも楽しいし勉強になります。

よく、メールの署名欄に簡単なスクリプトが書いてあって、それを実行すると
結構驚くスクリプトが沢山あります。自分でも書いてみたいけど、スマートな
ものが書けないので未だ署名欄は名前だけ(w

54 :49:2001/07/28(土) 11:53 ID:???
>>51
なるほど。
私が試したところによれば、

1.適用されない
2.適用される

と言う結果が得られたような気がするのですが、あっているのでしょうか?

55 :名無しさん@お腹いっぱい。:2001/07/28(土) 16:42 ID:???
randで乱数を作成できますよね?
非常に偏りが大きいのですが、回避方法はありますか?

56 :名無しさん@お腹いっぱい。:2001/07/28(土) 16:45 ID:zGTvO/Jw
 文字列の囲みのクオートってダブルとシングルがありますが、
理論的にはどちらを使ったほうが高速ですか?
 自分のところで試してみたところ、1/10〜1/20程度の差が出、
どちらかが常に速いということはありませんでした。

57 :名無しさん@お腹いっぱい。:2001/07/28(土) 16:58 ID:???
>>55
毎回srandしてない?

58 :名無しさん@お腹いっぱい。:2001/07/28(土) 17:06 ID:m51BRqkY
>>55 種をtimeにしてる?

59 :名無しさん@お腹いっぱい。:2001/07/28(土) 19:56 ID:???
俺の種を使ってくれ。

>>56
変数の判定をやらない分シングルの方が早そうだけど、知らん。
死ぬほど巨大なスクリプトじゃないと差は出ないんじゃないの?

60 :55:2001/07/29(日) 02:15 ID:???
プログラムの初めの方で
srand();
としてから使ってます<rand
後はsrandは宣言していません。
種は指定無しでtimeになるようなので指定無しにしています。

61 :JAPU@観鈴ちんげっと:2001/07/29(日) 02:40 ID:???
種を省略した場合、最近のバージョンではもっと良い値が使われるよん。
詳しい話は perldoc 読んでね。

62 :名無しさん@お腹いっぱい。:2001/07/29(日) 03:45 ID:???
あと、最近のバージョンではsrand()自体を省略して構いません。

63 :名無しさん@お腹いっぱい。:2001/07/29(日) 04:08 ID:???
どうして偏りが大きいと思ったんだろうか。
調べ方に偏りがあるとは思わないのかね。

64 :名無しさん@お腹いっぱい。:2001/07/29(日) 04:57 ID:???
>>63
禿同

65 :55:2001/07/29(日) 16:21 ID:???
私の調べ方はrand(100)をfor文で10000繰り返し、
エクセルにてその値の分布を表にしました。
その結果、0〜10と90〜100の範囲が他の範囲に比べて2割ほど
大きな値となりました。

・・・・偏り大きい調べ方ですか・・ね?

66 :名無しさん@お腹いっぱい。:2001/07/29(日) 17:20 ID:???
>>65
20,000 回では?50,000 回では?100,000 回では?1,000,000 回では?
という具合に調べればわかると思うんだけど….

67 : :2001/07/30(月) 01:43 ID:???
perlでエラーが出て、エラーメッセージで何行目に
エラーが出てるよ!と教えてくれる時は間違いが探しやすいんですが、
最終行のみにエラーが出てるよ!と出た時に途方にくれます。
そういう時は文法的には間違ってないけど、処理の流れが
おかしいと言うことなのでしょうか?
また、こういう時にエラーを判断するコツがあれば、アドバイス
いただけないでしょうか?

68 :名無しさん@お腹いっぱい。:2001/07/30(月) 03:22 ID:???
>>67
"や'の閉じ忘れの可能性が高い。

69 :名無しさん@お腹いっぱい。:2001/07/30(月) 03:45 ID:???
Linxu上でのsystem()についてです。

$status = system("$command", "$str");
とすると、$statusに数字が入りますが、
この数字の意味するところがよく分かりません、というか知りません。
成功か失敗かは0と1(256)なので分かりますが、他の値、
2とか9等にはどういう意味があるのか知りたいです。

調べようにも何をきっかけに調べればいいのか思いつかないので
知ってる方、おねげぇします。

70 :名無しさん@お腹いっぱい。:2001/07/30(月) 03:46 ID:???
>>69
system("$command $str");
のミスです。。。

71 :名無しさん@お腹いっぱい。:2001/07/30(月) 06:05 ID:GER1kc7.
DB_File使用時に最適なロック方法について教えてください。

CGI&PerlポケットリファレンスのdbmopenのTipsを参照すると、
『DBMファイルをロックする機構はDB_Fileモジュールに用意されています』
と書いてあったのですが、なかなか方法がわからないでいます。

今のところ、下記のドキュメントは発見しましたが、
英語がわからない上に、use DB_File::Lockの記述で即エラー(*1)になります。
http://www.perldoc.com/cpan/DB_File/Lock.html
*1) BEGIN failed--compilation aborted

ローカル環境はmac OS X perl v5.6.0 built for darwin
公開用サーバーはlinux
使えるモジュールはこんな感じだそうです。(モジュールについての知識はあまりないです・・)
http://web.arena.ne.jp/suite/support/manual/cgi-cgi/perlmodule/index.html

よろしくお願いします。
足りない情報があれば追記します。

72 :名無しさん@お腹いっぱい。:2001/07/30(月) 06:46 ID:???
>>71
> use DB_File::Lockの記述で即エラー
DB_File::Lockがインストールされていないからでしょう。
別のロック機構を試すべきかと。

73 :1:2001/07/30(月) 09:43 ID:Aj8f98qc
>>72
レスありがとうです。
根本的な認識ミスってことですか?(恥)
DB_File::Lockって、DB_Fileモジュールさえあれば使えるのかと思っていました・・
リファレンスに書いてあったのと上記のLock機構が
同じものを指してるのかは不明ですが、
DB_Fileを使うなら、これがおすすめ!っていう方法があったらよろしくお願いします〜

やっぱり普通にflockとか・・なオチになりそうですが(泣)

74 :71:2001/07/30(月) 09:45 ID:Aj8f98qc
名前入力ミスりました〜!^^;
71==73です、よろしくです。

75 :72:2001/07/30(月) 09:47 ID:???
>>71
DB_Fileのドキュメントを見ると、flockを使用しているようですね。
DB_Fileを使ったことがないので、オススメとかはないのですが、
自分はファイルロックの必要がある時は、renameを使った方法を用いてます。
これだと環境に依存しないので。

76 :JAPU@オートレスポンダの作者をいじめるのはやめよう (笑):2001/07/30(月) 11:16 ID:???
> Linxu上でのsystem()についてです。

惜しい。

> $status = system("$command", "$str");
> とすると、$statusに数字が入りますが、
> この数字の意味するところがよく分かりません、というか知りません。

system の返り値、すなわち $? の値は wait(2) が返す値なので、
$? >> 8 が exit value
$? & 127 がどのシグナルで殺されたか、
$? & 128 がコアダンプしたかどうか
を表す。

perldoc -f system
perldoc perlvar
man 2 wait
って感じ?

77 :名無しさん@お腹いっぱい:2001/07/30(月) 12:02 ID:???
$i = 3;

という風に、変数に数字が入っていて、
この数字が奇数か偶数かを判断するには、
どうしたらいいでしょうか?

78 :名無しさん@お腹いっぱい。:2001/07/30(月) 12:06 ID:???
$i % 2

79 :hage:2001/07/30(月) 14:49 ID:???
if($i & 1) {
print "odd\n"
} else {
print "even\n";
}

80 :名無しさん@お腹いっぱい。:2001/07/30(月) 17:09 ID:312.Yf8o
rmdirでやるとどんな感じ?<DBファイルロック機構

81 :名無しさん@お腹いっぱい。:2001/07/30(月) 19:26 ID:t7BVDL/M
前スレ見ましたが載ってないみたいなので質問します。
"ー"が入ってる文字列をgrepかけるとエラーが表示されます。
対処法はありますか?

@a=("あ","あー","あーー");
@b=grep('ー',@a);

82 :81:2001/07/30(月) 19:28 ID:t7BVDL/M
@b=grep(/'ー'/,@a);

83 :71:2001/07/30(月) 20:55 ID:Ydf2hNHw
■DB_Fileのロックについて
>>75
renameですか!使った事ないです〜。
・・・flockが使える環境だとしたら、実際どちらがおすすめでしょうか?

>>80
おお、rmdirもはじめて聞きました(恥)
ちょっと調べてきますね。もっかい質問するかもしれません。。

84 :T女の竹田:2001/07/30(月) 21:00 ID:???
>>81
うーん、ログ見てもわかりにくいけど、やっぱりFAQ。

「正規表現の中でシフトJISを使うときは、m/\Qマッチさせたい文字列\E/
のように\Qと\Eではさむ」
シフトJISは2バイト目にメタ文字(正規表現で特別な意味を持つ文字、
この場合は'[')が含まれることがあるので\Qでエスケープするわけ。
(\Eはその終わり)

ちなみに似たような問題で、'―'とかは'―\'にしないとダメ(この場合は
2バイト目が'\')。

自分は昔二つともつまずきました^^;
FAQスレとかあったほうがいいかな?

85 :T女の竹田:2001/07/30(月) 21:07 ID:???
余談だけど、昔書いたスクリプトを見ると
s/\+|\\|\(|\)|\[|\]|\{|\}|\^|\$|\*|\?|\./\\$&/g;
みたいなのがあったり(恥)

86 :69:2001/07/30(月) 21:33 ID:CEolkqW6
>>76
なるほどです。
$? だったんですね。
perldoc perlvar 初めて使いました。てへ。

でも"$? & 127"のANDしてる値自体の
一覧みたいのはあるんしょうか?

例えばPerlがuseやrequireで
外部ファイルを取り込めなかった場合(等?)は512とか。

87 :72:2001/07/30(月) 22:27 ID:???
>>71
flockが良いかどうかという話は、今までにもいろんなところで議論されていて、
結局は本人の好みの問題になると思います。
が、あえて自分の意見を述べさせていただくと、
自分の場合flockだと失敗することが多かったと思うので、rename使ってます。
その辺の話はPerlメモがオススメです。

88 :71:2001/07/31(火) 01:38 ID:???
>>80
調べました〜!・・テストはまだです。
せっかくなので、いろいろ試しにやってみようと思います^^
>>72
なるほど。しっかり動作確認してから運用した方がいいですね。
Perlメモみてきます!

うう、いろいろ見てまわってるうちに、どんどん分らない事が増えてます。
そもそも、DB_FileとバークレーDBの関係がよくわかっていません。
DB_FileさえあればバークレーDBも使えちゃうってことなんでしょうか。
それとも、またそれ専用のモジュール等が必要とか・・?
ttp://member.nifty.ne.jp/hippo2000/perltips/db_file.htm
[$X =] tie %hash, 'DB_File', [$filename, $flags, $mode, $DB_HASH] ;
この先頭の [$X =] もあるとどういう利点があるのか不明なのです。

こんなわたしに丁度いいリファレンスサイトとか解説書がありましたら
どうか教えてくださいませ。。

89 :JAPU@腹痛:2001/07/31(火) 04:13 ID:???
> でも"$? & 127"のANDしてる値自体の
> 一覧みたいのはあるんしょうか?

use POSIX; すると、この辺の定数使えるようになるみたいだ。
SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK
SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM
SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT
SIGKILL SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM
SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK
SIG_DFL SIG_ERR SIG_IGN SIG_SETMASK SIG_UNBLOCK

あとは、man 2 signal とか、/usr/include/sys/signal.h とか参照?

> 例えばPerlがuseやrequireで
> 外部ファイルを取り込めなかった場合(等?)は512とか。

なにか勘違いしている?

90 :69:2001/07/31(火) 04:52 ID:zN5/REcM
>>89
またしてもありがとうございます。
ここら辺あたれば何か分かりそうな気配・・・

>なにか勘違いしている?
いえ、勘違いではないです。
やってることが簡易shellみたいなもので
実行後、エラーの返値を見ても実際は何が起きたのか
さっぱり分からないので何とかしたいなぁ、と。
故に返値一覧があったら楽でいいなぁと思った次第です。

91 :81:2001/07/31(火) 05:48 ID:q2wDcpy6
>>84
竹田様
お手数おかけしました。お忙しい所ありがとうございます。
本当に嬉しいです。ありがとうございました。

92 :JAPU@夏ですねぇ...:2001/07/31(火) 14:02 ID:???
何をやりたいのかさっぱり理解できん...
もうちょっと整理して質問しよう。

93 :名無しさん@お腹いっぱい。:2001/07/31(火) 14:54 ID:???
Perl では EUC を使おうよ ヽ( ´ー`)ノ

94 :名無しさん@お腹いっぱい。:2001/07/31(火) 17:31 ID:???
>>69
絶対勘違いしていると思われ。
JAPUたんに一票。

95 :69:2001/07/31(火) 23:11 ID:???
そう言われると勘違いしているのかもしれないに一票。

96 :名無しさん@お腹いっぱい。:2001/08/01(水) 00:48 ID:???
あはは、、もうちょっと出来たら書き込んでね ^_^

97 :名無しさん@お腹いっぱい。:2001/08/01(水) 07:50 ID:kOCX6RGE
FTPで削除できないファイルが生成されてしまったのですが、(人様のCGI使用)
unlinkで削除出来ますでしょjか?

98 :名無しさん@お腹いっぱい。:2001/08/01(水) 09:06 ID:???
>>97
削除できます。

99 :JAPU@千影たん:2001/08/01(水) 18:58 ID:???
別に69たんを責めているわけじゃないので、勘違い無きよう...

とりあえず質問するときは、「具体的な目的」も併記すると吉かもしれない。
「○○をしたときに、云々...」という質問の仕方でも悪くはないけど、
実はそれよりもうまい方法を教えてもらえるかもしれないぞ。

100 :名無しさん@お腹いっぱい。:2001/08/02(木) 00:28 ID:DguDE1y6
キャストのやり方おしえろやゴルァ!

101 : :2001/08/02(木) 00:46 ID:8xHqzTcA
/usr/libディレクトリと/usr/site/libは何を基準に分かれてるんですか?

102 :名無しさん@お腹いっぱい。:2001/08/02(木) 02:08 ID:???
/usr/binと/usr/local/binが分かれてるようなもの

103 :名無しさん@お腹いっぱい。 :2001/08/02(木) 03:43 ID:GB8M4TIE
2つの同じフォーマットのファイルAからBへのバックアップを考えています。
ファイルA,B共

postday#sing#cast#part#add
postday#sing#cast#part#add

と言った形式なのですが、無差別に追記して行くと内容が重複してしまうので
postdayをキーにして、ファイルBの最後の要素のpostdayとファイルA
のpostdayを比較、一致しなければそのままファイルBに追記、
一致する要素が有ればそこまでをpopして、ファイルBに追記したいのです。

バックアップの参考になりそうなスクリプトを見てみたのですが、
アレンジする事が出来ないでいます。

104 :名無しさん@お腹いっぱい。:2001/08/02(木) 03:50 ID:???
>>103
単純にバックアップを取るのであれば、File::Copyでも使えばいいかと思いますが。

105 :103:2001/08/02(木) 03:58 ID:GB8M4TIE
>>104さん
レス有難う御座います。掲示板のログのような(実際は少し異なります)
小さなログファイルAを大きなファイルBにバックアップしたいのです。
ファイルAは保存期間や容量が小さい為に効率的にファイルBに保存したい
と考えています。

106 :103:2001/08/02(木) 04:06 ID:GB8M4TIE
やっぱり自分で考えなきゃ駄目ですね、
ファイルBを読み出して最後のエントリの日付"postday"を"$saisyuu"で得る。
ファイルAを読み出す。
$saisyuuとファイルAの"postday"を比較
重複しなければそのままファイルBに追記。
$saisyuuと一致する行がファイルAにあればそこまでを削除して、ファイルBに追記。

これで上手く行かないか挑戦してみます。 有難うございます

107 :104:2001/08/02(木) 04:34 ID:???
>>103
一例として。
statでファイル更新時間を取って、異なれば書き込み、とか。

my @file = qw(A B);
if ((stat $file[0])[9] != (stat $file[1])[9]) {
#...
}

108 :名無しさん@お腹いっぱい。:2001/08/02(木) 04:38 ID:???
#!/usr/bin/perl
http://www.megabbs.com/program/index.html

109 :>>103:2001/08/02(木) 04:40 ID:P5Z/J3iM
効率悪いけどこれじゃダメ?何MBもあるわけじゃないんでしょ?

# A を読み込み
open A,"a";
@aaa=<A>;
close A;

# B を読み込み
open B,"b";
@bbb=<B>;
close B;

# @aaa と @bbb の非共通部分を @ccc へ
for(@bbb){
@ccc=grep(!/$_/,@aaa);
}

# @bbb と @ccc の共通部分を @ddd へ
for(@bbb){
@ddd=grep(/$_/,@ccc);
}

# @aaa と @ddd を書き込み
open C,">a";
print C @aaa , @ddd;
close C;

110 :名無しさん@お腹いっぱい。:2001/08/02(木) 14:11 ID:RSuVRy4c
えー、ちょっと訊きたいんですが、

サブルーチンの中でサブルーチンを実行し、
そのサブルーチンの中でも別のサブルーチンを呼んで…

という風にサブルーチンを入れ子にしていくと内側の階層の深いサブルーチンの
挙動がおかしくなっていくというか、時には動かないなんてことはあるんでしょうか?

ためしにある処理をそのまま書いてちゃんと動いたものを
サブルーチンとして{}で囲んで書いただけでおかしくなりました。

環境はWin+ANHTTPDなのですが、もしやWinPerlだけの症状なのでしょうか?
どなたかご存知の方いらっしゃいましたらお願いします。

111 :名無しさん@お腹いっぱい。:2001/08/02(木) 14:17 ID:???
>>110
多分サブルーチンの書き方に問題があると思われ。

112 :名無しさん@お腹いっぱい。:2001/08/02(木) 14:17 ID:???
>>110
そのスクリプトを出してくれ。
ありがちなものとしては、同じ名前のサブルーチンが他に存在してるとかかな?
w2k+ANHTTPDだけど、普通に動いてるよ。

113 :110:2001/08/02(木) 14:23 ID:VO0DTrjQ
すばやいレス感謝です。

>>111
各サブルーチン単体では全て期待通りに動作します。
入れ子にしていった場合にのみおかしくなるんです。

>>112
全部出すと相当長いのでちょっとここに出すのは勘弁です。
改めて確認してみたらおかしくなってるところは3重くらいになっているだけでした。

簡略化した形で書けたらあとで貼ります。

ありがとうございます。

114 :名無しさん@お腹いっぱい。:2001/08/02(木) 14:28 ID:???
>>113
myのせいでサブルーチンの結果が外に出てないというオチもないよね?

115 :110:2001/08/02(木) 14:36 ID:VO0DTrjQ
>>114
いや、全部returnで明に結果を返してます。
#そういうことですよね?

116 :110:2001/08/02(木) 14:53 ID:???
んー。いろいろ削ってみたんですが、
関係するサブルーチンは6個ほど、200行くらいになってしまいます。
ここに晒すのはちとためらわれます。。。。

うーむ。。

117 :名無しさん@お腹いっぱい。:2001/08/02(木) 15:00 ID:???
>>116
どっかにアップしてURL出せば?

118 :名無しさん@お腹いっぱい。:2001/08/02(木) 15:00 ID:???
>>110
推測でしかないが。
引数渡しに失敗している可能性。

119 :110:2001/08/02(木) 15:11 ID:VCBoAI72
皆さんレスいただいて本当にありがとうございます。

例えばですね。

print $hoge;
print &Foo;

これで正常の出力が得られるのですが、これを

&Hoge;

sub Hoge{
    print $hoge;
    print &Foo;
}

と書くと何も出力されないのです。
こんなのってありなんでしょうか?

&Foo;の中でも複数のサブルーチンを呼んでます。

120 :名無しさん@お腹いっぱい。:2001/08/02(木) 15:32 ID:???
>>119
それで挙動がおかしくなるなんて聞いた事無いが。

121 :名無しさん@お腹いっぱい。:2001/08/02(木) 16:01 ID:IfHUjzJo
あまりにも初心者すぎて書き込むのに気が引けるのですが・・・

カタカナの語尾の長音を取るように置換したいのですが
(「コンピューター」→「コンピュータ」)
どのようにしたら良いでしょうか?

122 : :2001/08/02(木) 16:02 ID:8xHqzTcA
多分、死にたくなるような単純なミスでは?

123 :110:2001/08/02(木) 16:23 ID:???
>>120
だから困っているのでつ。
実は最初の状態でも
内側で呼んでいるサブルーチンの挙動が微妙に変なのだが…

>>122
そうなのかなあ…。

おれ、この間もそれやったんだよな…
そうだとしたらつくづくヴォケ野郎だな、、俺…。

124 :名無しさん@お腹いっぱい。:2001/08/02(木) 16:45 ID:mjquR9Og
ラージオブジェクトの説明が詳しくのってる
ところありますかね。
実際の使用例とか・・・。
PHPとPostgresqlで・・。

125 :名無しさん@お腹いっぱい。:2001/08/02(木) 16:57 ID:???
>110
出来ればサブルーチンを見せて欲しいが。
というかuse strictで引数渡しもちゃんとして書こうよ。

126 :ちんちんの長さ12.5cm:2001/08/02(木) 23:08 ID:8xHqzTcA
------
use strict;
my $key;
foreach $key (keys(%ENV)) {
#処理...
}
------

---
use strict;
foreach my $key (keys(%ENV)) {
#処理...
}
------
では、体感できない範囲でも速度違いますか?

127 :名無しさん@お腹いっぱい。:2001/08/02(木) 23:09 ID:SuLp4aV6
jcode.plの使い方で分からないことがあり、投稿することにします。

#!/usr/bin/perl -w

require 'jcode.pl';

$text = "あいうえお";

$code = &jcode::getcode(*text);

print "$code\n";

こういうスクリプトを作って実行すると、以下のようなエラーが出てしまいます。

[madjack@cluster /home/madjack]% ./perltest.pl
Can't locate jcode.pl in @INC (@INC contains:
/usr/lib/perl5/5.00503/ppc-linux /usr/lib/perl5/5.00503
/usr/lib/perl5/site_perl/5.005/ppc-linux
/usr/lib/perl5/site_perl/5.005) at ./perltest.pl line 3.

何がおかしいのでしょうか?

128 :名無しさん@お腹いっぱい。:2001/08/02(木) 23:37 ID:I9vB6MGk
110ではないです。
use strictってどういった使い方をするんですか?
シェルでやってみたら、今まで動いてたスクリプトにエラーチェック(?)
が沢山でてきてしまいました。
125さんの引数渡しって言葉にも混乱してるんです。
すみません、余裕のある方教えて下さい。

129 :名無しさん@お腹いっぱい。:2001/08/03(金) 00:14 ID:eb2ym/zs
POP3サーバから「ウィークリーまぐまぐ」の重たいメールだけを削除
したいですが、何か簡単なスクリプトありませんか?

130 :名無しさん@お腹いっぱい。:2001/08/03(金) 00:15 ID:eb2ym/zs
>>129
サブジェクトにWeekly Mag2が入ってるのを削除

131 :名無しさん@お腹いっぱい。:2001/08/03(金) 00:44 ID:???
>>126
違うよ。上のほうが速い。

>>127
@INCにjcode.plが無いと言われてる。
エラーメッセージは英語だから読まないというのは止めましょう。
これくらい調べれば読める範囲なので。
で、requireに問題が。
パス無しで指定すると@INCを探しに行くので、
'./jcode.pl'等と実際に置かれている場所を指定しましょう。

132 :名無しさん@お腹いっぱい。:2001/08/03(金) 00:48 ID:???
>>128
use strictと宣言することによって、
コンパイル時にレキシカル宣言されていない変数があると、エラーになります。
グローバル変数が使えなくなるというわけで。

引数渡しってのは、&sub_routine($hoge, $fuga);
みたいにサブルーチンに引数を明示的に渡すのです。
これで、サブルーチンには2つの引数しか行かないことになります。

# 日本語的におかしいかもしれないが、ご容赦。

133 :128:2001/08/03(金) 01:05 ID:ldQ3DQJ.
>>132
ありがとうございます!
>グローバル変数が使えなくなる
だ・・だからあんなにエラーが出たのか・・・
それでもきちんと動作することがいいスクリプトってことですかね
なんでこんなやっかいなものを皆さんお使いに・・・?
素朴な疑問でした。^ ^;

134 :132:2001/08/03(金) 01:37 ID:???
>>128
「自分しかそのスクリプトを見ない」
「どこかでエラーが起こっても、自分はすぐわかる」
「自分は絶対typoしない」
このあたりの条件を兼ね備えているのなら、全部グローバルでもいいのかもね。

私はいつもuse strictしてます。

# ちなみに、my宣言した変数のほうが、グローバルより若干速い。

135 :名無しさん@お腹いっぱい。:2001/08/03(金) 01:52 ID:???
グローバル変数が使えなくなる訳では無いですよ。
Perl5.6以降ならmy($var)同様の使い方でour($var)が、
それ以前のVersionならuse vars qw/$foo @bar/;とし、
宣言したグローバル変数を使用可能に出来ます。

私も初心者の頃はuse strictなど煩わしいだけ、と思っていましたが、
今では反射的にuse strictを書くようになりました。
慣れるまで色々面倒でしょうが、
黙って使っていると後々幸せになれるはずです。

136 :132:2001/08/03(金) 01:57 ID:???
>>135
詳しいフォロー、ありがとう。

137 :128:2001/08/03(金) 03:04 ID:ldQ3DQJ.
>>134 ,135
詳しい説明ありがとうございました!
むぅ。凄く勉強になります。
わたしの持っている本にはこんな事全く書いていなかったので・・
今後少しずつ規模の大きいスクリプトを組んでいくのなら、
今のうちに慣れてきちんと書けるようにした方がいいですよね。
しかし組み方を1から考えなおさなくちゃ難しそうですが(泣)
がんばってみます!

138 :名無しさん@お腹いっぱい。:2001/08/03(金) 04:24 ID:???
win98のHTTPDでチョコチョコプログラム組んでるんですが、
丁度良いネタがでたので質問します。

ローカルで
for(my $i=1;$i<100;++$i){
##処理##
}

というプログラムを走らせると$iが0から始まってしまいます。
if文などでも同様です。
サーバにアップロードするときちんと動作するんですが、
やはり使用環境がいけないのでしょうか?

ちなみに
my $i;
for($i=1;$i<100;++$i)

だとローカルでもきちんと1から動いてくれます。

139 :名無しさん@お腹いっぱい。:2001/08/03(金) 04:40 ID:???
>>138
for (my $i = 1; $i < 100; ++$i) { print $i,"\n" }
# 1
# 2
# ..
# 99
きちんと出ましたよん。
ちなみに当方ローカル環境、Win2k + Apache1.3.20 + ActivePerl623

140 :名無しさん@お腹いっぱい。:2001/08/03(金) 05:22 ID:???
>やはり使用環境がいけないのでしょうか?

君の使用環境がわからなくては誰にも判断しようがないと思うが。
ネタですか?

141 :うん:2001/08/03(金) 06:21 ID:wwW.OFoE
うん

142 :名無しさん@お腹いっぱい。:2001/08/03(金) 06:28 ID:???
>>141
子供は早く寝なさい(藁

143 :103 :2001/08/03(金) 07:53 ID:aOu/LdE6
>>107
>>109
レスが遅れてしまいました。お二方のアドバイスが参考になって色々なアプローチ
が有るのが分かりました。
一応、一日格闘した挙句(^^) ファイルAのサイズは比較的小さくファイルBはなるべく
大きなサイズを確保したかったので、perlメモさんで
http://www.din.or.jp/~ohzaki/perl.htm#File_Tail
を頂いて来まして、これでファイルBの最後の一行を得る→
$saisyuuとファイルAのpostdayを比較→一致する行が出現すればそれ以降を破棄
→ファイルBに追記モードで書き込み、と言う感じになりました。

今ローカルでとろとろと動いています(^^)
grepとか回した事が無かったので新鮮でした、色んな考えかたが有るんですね。
ありがとう御座いました。

144 :127:2001/08/03(金) 11:50 ID:dhEi2JqU
>>131
ありがとうございます。
できました。

145 :名無しさん@お腹いっぱい。:2001/08/03(金) 14:24 ID:02P8SgLY
以下のcgiファイルと、htmlファイルを使って入力したものをファイルに書き込
み、ブラウザにも表示させるというプログラムを作っています。しかしながらブ
ラウザに表示することはできるのに、それをファイルに書き込むことができませ
ん。スクリプトをどう見直しても分からないので、ここの方に頼ることにしまし
た。

ちなみに『print <<"HERE";』以下を削って実行するとInternal Server Error
となってしまいます。

cgiファイル

#!/usr/bin/perl -w

$file = "log.txt";

read(STDIN, $in, $ENV{'CONTENT_LENGTH'});

open(OUT, ">$file");

print OUT $in;

close OUT;


print <<"HERE";
Content-Type: text/html

<html><body>
$in
</body></html>

HERE

__END__

htmlファイル
<form method="POST" action="cgi-bin/prot3.cgi">
<html><head><title>
テスト
</title></head><body bgcolor="#000000">
<font color="#ffffff">
名前:<input type="text" name="name"><br>
パス: <input type="password" name="pass"><br>

<input type="submit" value="OK"><input type="reset" value="reset">
</font>
</body></html>

146 :名無しさん@お腹いっぱい。:2001/08/03(金) 14:50 ID:???
>>145 ソースは見てないが
scriptじゃなくて、実行ユーザーとディレクトリのパーミッションだろ

147 :146:2001/08/03(金) 15:13 ID:???
>>145
ためしに 0バイトのログファイルをftpで送って 666 にするとどうなる?

148 :名無しさん@お腹いっぱい。:2001/08/03(金) 15:27 ID:???
滅茶苦茶なHTMLだな

149 :名無しさん@お腹いっぱい。:2001/08/03(金) 15:43 ID:???
system("/usr/bin/compress -e datafile.txt");

150 :名無しさん@お腹いっぱい。:2001/08/03(金) 18:53 ID:???
my宣言についてですが、

my($hoge);
$hoge = hoge;
$hoge = hoge;
$hoge = hoge;

と、

my $hoge = hoge;
$hoge = hoge;
$hoge = hoge;

は同じ効果が出ているのでしょうか。

151 :145:2001/08/03(金) 22:37 ID:???
>>147
いけました。
まさかパーミッションが絡んでいたとは思いませんでした。
cgiではなく、ファイルをオープンして書き込む部分を
普通のスクリプトとして実行すると666でなくても書き込めるのに・・・。
うーん。

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

152 :名無しさん@お腹いっぱい。:2001/08/04(土) 04:07 ID:???
普通のスクリプトとして実行したときは実行したユーザー
cgiだとnobodyとかwwwとかになるんよ。(サーバーの設定によるが)
で、そのログファイルのあるディレクトリの属性w(作成・削除)が
ついてないから新規作成ができなかったのね
ディレクトリを707にすれば作成もできると思うけど
cgiと同じディレクトリはさけたほうがいいよん

153 :名無しさん@お腹いっぱい。:2001/08/04(土) 04:35 ID:???
サーバ上でファイルをアーカイブ化・圧縮するためにはどうすれば良いですか?

154 :名無しさん@お腹いっぱい。:2001/08/04(土) 04:55 ID:eUp0QEZw
ふと思ったけど「初心者」ってどの程度のもの?
どこまで知ってれば中級者っていえるのかなー。
上級者の方に聞きたいです。
奥が深すぎて判断つかない。

155 :名無しさん@お腹いっぱい。:2001/08/04(土) 05:37 ID:vq//mZ8w
print "hello world"\n:

↑初心者

156 :名無しさん@お腹いっぱい。:2001/08/04(土) 06:22 ID:???
>>155
はまった(w < n:
で、ここのスレで質問してる人は初心者だと思ってるんでしょ?
自分も思ってるし。

157 :すごく初心者:2001/08/04(土) 07:43 ID:???
こんなCGI探してますスレッド
http://corn.2ch.net/test/read.cgi?bbs=php&key=988777987&ls=50

↑で見つけた自動更新cgi(?)なのですが、
どういう処理をしているのか、お暇な方、解説して欲しいのでありまする。


#!/usr/local/bin/perl
%html = ('0802' => 'index.html',
'0803' => 'nya.html',
'0804' => 'zzz.html',
);
@time = localtime();
$html = $html{ sprintf "%02d%02d", $time[4]+1, $time[3] };
printf "Location: $html\n\n";

158 :名無しさん@お腹いっぱい。:2001/08/04(土) 07:56 ID:DYf6StlI
適当な文から特定の文字だけ抜き出すにはどうすればよいのでしょうか?
たとえば、
てきとう6なぶん
なんて文があったとき(変な文だけど。。)数字の6を抜き出すにはどうすればよいのでしょうか?
いろいろ試行錯誤しましたがどうしてもできません。お願いします。

159 :名無しさん@お腹いっぱい。:2001/08/04(土) 07:57 ID:eUp0QEZw
0802だったらindex.html
0803だったらnya.html
・・・(続く)
っていう定義リストを作っておいて。
@time = localtime(); で現在の日付けを取得
$html = $html{ s・・・のところで、日付けを”0802”とかの数字の並びにする
すると、$html{'0802'}となるので、最初の定義で0802だったらindex.htmlとなる。
最後に、printf "Location: $html\n\n";
で、自動的にindex.htmlにジャンプ。

160 :157@すごく初心者:2001/08/04(土) 08:38 ID:???
>>159さん
どうもありがとうございます。
助かりました。

161 :名無しさん@お腹いっぱい。:2001/08/04(土) 08:49 ID:eUp0QEZw
>>159
$meta='てきとうな6文字';
if($meta=~/\d/){print "$& \n";}

数字だったらこれでいけるけど、抜き出したい特定の文字がなんなのかによる。

162 :名無しさん@お腹いっぱい。:2001/08/04(土) 09:00 ID:???
>>161
>>158へのレスだよね?

163 :158:2001/08/04(土) 09:16 ID:DYf6StlI
>>161
この場合はどうやればよいのでしょう?
適当な文字56<!--tekito6-->適当な文字65
とかいう文の場合<!--tekito6-->の6(数字)だけを抜き出して、他の変数に代入するには
どうすればよいのでしょうか?161さんの方法ではうまくできませんでした。
お願いします。

164 :JAPU:2001/08/04(土) 10:30 ID:???
if(/<!--tekito(6)-->/) { $hoe = $1; }

165 :JAPU:2001/08/04(土) 10:31 ID:???
あ、こうか。
if(/<!--tekito(\d)-->/) { $hoe = $1; }

166 :158:2001/08/04(土) 12:36 ID:DYf6StlI
JAPUさんありがとうございます!うまくできました!

167 :名無しさん@お腹いっぱい。:2001/08/04(土) 12:37 ID:DQ4jThjY
クッキーに関しての質問です。
クッキーに配列を保存できますかね?
例えば、
$data=array(
"a" => "hoge1",
"b" => "hoge2"
);
SetCookie("hogehoge", $data);
こんな感じで$data配列を作成しクッキーに保存して、
$c_data=$HTTP_COOKIE_VARS["hogehoge"];
で、データを呼び出して
echo"$c_data[a]";
で出力できるようにしたいのですが、
なかなかうまくいかないです。

168 :JAPU:2001/08/04(土) 13:41 ID:???
>>167
それは本当に Perl なのか?

169 :名無しさん@お腹いっぱい。:2001/08/04(土) 13:44 ID:DQ4jThjY
>>168 すいません。
PHPでした。スレッド間違い(汗

170 :名無しさん@お腹いっぱい。:2001/08/04(土) 16:54 ID:PSOASf6I
まったくの初心者です。
WEBサイトを作りたいのですが技術的なアドバイスをお願いします。

・IDの作り方は?
ユーザーIDとメールアドレスを登録すると自動的にパスワード付の
メールが送られますよね?で、クッキーをオンにしてログインする。
そ〜いった技術です。ヤフーとかもそうですよね。
専門のスレがあれば教えてください。
まったくの初心者の教えて君で本当にすいません。

171 :コメント無しさん:2001/08/04(土) 17:42 ID:???
>>170
>IDの作り方は?
登録順でいいんじゃない?

172 :名無しさん@お腹いっぱい。:2001/08/04(土) 18:49 ID:8Ac4eVMA
CGIファイルの中にHTMLを組み込んでる最中なんですけど
スタイルシートは使えませんか?

それと、HTMLファイルで   このように入力すると
半角スペースになりますが、CGIファイルの中ではこの
特殊文字をどのように置けば半角スペースになるでしょうか?

173 :名無しさん@お腹いっぱい。:2001/08/04(土) 18:58 ID:???
>>172
当然使える。
適当なところに CSS ファイルを置いて、link タグの href 属性で呼び出せば良い。

このようにって、見えん。
&nbsp;って居れてるのかな?
&と;は¥でエスケープしないとならないはず。

174 :名無しさん@お腹いっぱい。:2001/08/04(土) 21:41 ID:QrWijtIY
>>173
レスありがとうございます。
早速試してみます。

# 2chでもまともにレス返ってくるんですね。
# うれしいです(^^

175 :IY:2001/08/04(土) 21:53 ID:???
そこにあるでしょ?

176 :153:2001/08/04(土) 23:34 ID:???
どうすれば・・・・。

177 :名無しさん@お腹いっぱい。:2001/08/05(日) 00:44 ID:???
>>153
モジュール使えばいいでしょ。

178 :名無しさん@お腹いっぱい。:2001/08/05(日) 00:53 ID:Y9qpbhzk
本当に初心者で申し訳ないのですが、セッションって
何でしょうか? よくTCPでセッションを張る?という
表現(この表現も正しいかわからないんどえすが)が
ありますが、通信経路を確保するということでしょうか?

179 :153:2001/08/05(日) 05:43 ID:???
モジュールはどうやったら使えますか?

180 :名無しさん@お腹いっぱい。:2001/08/05(日) 06:05 ID:???
>>153
useすればいいだけですが。
use Compress::Zlib;
アーカイブ作るんならこれか?

181 :170:2001/08/05(日) 15:23 ID:.gPxxl9o
>>171
説明の仕方が悪かったようですね。
お聞きしたいのは、‘どうやったらそ〜いうことができますか?’です。
親切な方教えてください。

182 :JAPU:2001/08/05(日) 17:45 ID:???
Compress::Zlib はアーカイブは作れないんじゃない?

Compress::Zlib を入れたら、
perldoc Compress::Zlib
しましょう。

183 :名無しさん@お腹いっぱい。:2001/08/05(日) 18:33 ID:???
>>181
登録順のIDなら
現在のID取得して変数に突っ込んでそれに+1するだけでOKでは?
パスワードは、適当な文字ランダムで作ってcryptでもすればできるんじゃん?

# 永遠の初心者なのであんまり信用しない方がいいかも

184 :コメント無しさん:2001/08/05(日) 19:04 ID:???
>>181
データベース使ってるなら「自動加算型」みたいなのがあるからそれ使う
使ってないなら、最新のIDをファイルに書いといて、登録のたびにそいつを
増やしていく。

185 :153:2001/08/06(月) 04:28 ID:???
やはりWIN98+HTTPDっていう夏厨装備ではモジュールは使えませんか?
ちなみにF2S使ってるんですが、一般の無料サーバでも試せませんよね?

186 :名無しさん@お腹いっぱい。:2001/08/06(月) 04:57 ID:QmPH6qXg
$ENV{"HTTP_REFERER"}と$ENV{'HTTP_REFERER'}という2種類の書き方を見かけるんですが、
"と'はどう使い分ければ良いんでしょうか?

187 :名無しさん@お腹いっぱい。:2001/08/06(月) 05:41 ID:???
>>186
使い分けなくても良いです。
お好みに合わせて使いましょう。
$ENV{HTTP_REFERER}
もありです。

188 :名無しさん@お腹いっぱい。:2001/08/06(月) 05:46 ID:???
>>185
f2sは鯖のコマンドでgzipが使えるね、と密かに選択肢を増やしてみたりする。

189 :名無しさん@お腹いっぱい。 :2001/08/06(月) 11:09 ID:???
ものすごく初心者で恐縮なんですが、perlに処理させている
数値演算をそのままSTDINから入力して電卓にする
と言う訳には行かないのでしょうか?
$n = <STDIN>;
print "$n\n";
ってして 1+1 と入力すると、当然 1+1 と表示されるだけです。
変数が展開されて、ついでに中の数式も計算してくれたりは出来ないですよね。
ちゃんと演算子と数値に分けて数値を変数に代入して、内部? で
計算した後表示するしかないのかなぁ、、

190 :名無しさん@お腹いっぱい。:2001/08/06(月) 11:38 ID:???
use strict;
$_ = <STDIN>;
@_ = split/\+/;
print $_[0] + $_[1];

あとは適当にやってね

191 :名無しさん@お腹いっぱい。:2001/08/06(月) 11:39 ID:???
>>189
eval

192 :名無しさん@お腹いっぱい。:2001/08/06(月) 11:55 ID:???
有難う御座います。>>190、えっと、すいません、そんな感じで
色々作ってみてるのですが、ふと最後の式が入力した式そのまま(あたり前ですが)
なので、perlの演算式をそのまま与えれば3行位で電卓が出来ちゃうかな
と考えてしまったんです。
>>191
うわ、有難う御座います。4文字で解決です  (笑)
馬鹿はevalを使っちゃ駄目と何処かで見たんで、、、
文字列をプログラムとして評価してくれるんですね。
なるほどー、危ない訳も良く分かりました。 感謝です。

193 :名無しさん@お腹いっぱい。:2001/08/06(月) 12:15 ID:???
こう言う事か・・・・
$n =<STDIN>;
print eval("$n");
何か感動した ^ ^ )

194 :名無しさん@お腹いっぱい。:2001/08/06(月) 13:57 ID:c9LAtMIM
ある処理に要した時間をミリ秒単位で計測する方法はありませんか?
具体的には、webでGETに要した時間を計測したいのですが・・・

195 :名無しさん@お腹いっぱい。:2001/08/06(月) 14:20 ID:???
>>194
Time::Hires
http://www.bekknet.ad.jp/~bero/docj/module/06/Time_HiRes.html

196 :194:2001/08/06(月) 15:01 ID:???
>>195
何とか実現できました。ヽ(´ー`)ノ
情報ありがとうございました。

197 :名無しさん@お腹いっぱい。:2001/08/06(月) 16:42 ID:???
>>193
電卓なら、
$n =~ m/[^\d\+\*\/\.\s]/ && ...;
な感じで、入力値チェックもしたほうがいいかもね。

198 :名無しさん@お腹いっぱい。:2001/08/06(月) 16:44 ID:???
何もチェックしないと任意のコードを実行できちゃうからね。
馬鹿はevalを使うなってのもそういうことだろうね。

199 :189 :2001/08/06(月) 17:22 ID:???
詳しい説明ありがとッス。なるほど、JAPUさんがサイトで書かれてる
汚染チェックってやつですね、確か僕が見た所でもそう言ったニュアンス
で書かれてました。
それにしても、、+-だけで演算子と数値は5個まで、とか言うダサイ
電卓をif ($_ =~ /\d/).... とかズラズラ並べて書いてたんで
目から鱗落ちまくりです。
了解しました、cgiでは当分使わないです  (笑)

200 :名無しさん@お腹いっぱい。:2001/08/06(月) 18:52 ID:???
すでに解決済みかも知れないが、俺ならこうするかな。

$n = <STDIN>;
$n =~ tr{0-9\+\-\*\/\(\)\.}{}cd;
print eval($n);

201 :729:2001/08/06(月) 23:51 ID:Mx2WAaZU
Perlの書き方について質問させて。
「メモリの浪費」を抑えたいんだけど、いったい具体的にどういうことを
すればいい?そもそも「無駄に食う」ってのはどういう書き方をしたものなの?
初心者でスマソ。

202 :153:2001/08/07(火) 00:00 ID:???
はわわ・・gzip・・頑張ります・・。

203 :名無しさん@お腹いっぱい。:2001/08/07(火) 01:27 ID:???
>>201
悪: @lines = <IN>;foreach (@lines){ ... }
良: while(<IN>){ ... }

204 :名無しさん@お腹いっぱい。:2001/08/07(火) 01:48 ID:bTCo0M5g
>>203で、<IN>のx行目を操作したいとき、@linesにセットしないで
なんとかすることは可能でしょうか?

205 :名無しさん@お腹いっぱい。:2001/08/07(火) 02:01 ID:???
>>204
可能です

206 :名無しさん@お腹いっぱい。:2001/08/07(火) 02:06 ID:bTCo0M5g
>>205
そうなんですか。。。
今まで、とりあえず配列にセットして、popやらspliceやらの関数使ってました。
勉強しに逝ってきます。

207 :729:2001/08/07(火) 08:58 ID:swpPnFjU
>>203
すっきり書けるものを、余計なプロセスを経てるということ?
他にはないっすかねぇ。気持ち的にforeach〜よりもuntilとかの
制御を使うほうが重い気がするんだけど、どう?

208 :名無しさん@お腹いっぱい。:2001/08/07(火) 09:08 ID:???
ちょっと質問したいんですが、

てきとー
<!--a-->
てきと

あああ
<!--b-->

と言う文があったとして<!--a-->と<!--b-->とその間の文を消したいんだけどどうすればいい?
s/<!--a-->.*<!--b-->//;だとできなかったんだけど。

209 :名無しさん@お腹いっぱい。:2001/08/07(火) 09:21 ID:???
>>729
根本的に違う気がする。
@line = <IN> ってのは全てに配列に読むことによって、メモリを非常に使う。
それに対してwhile (<IN>) {} は一行づつ読み込むことによって、
メモリの消費が大きくならない。スピードは殺しているだろうが。

>>208
s修飾子をつけて単一行として処理。
s/<!--a-->.*<!--b-->//s;

210 :名無しさん@お腹いっぱい。 :2001/08/07(火) 12:17 ID:???
場違いとは思いますが、あえて聞かせてください。
ton.2ch.net/test/read.cgi?bbs=sec&key=996966367&st=40&to=40&nofirst=true
これがperlプログラムのコーディング上のチェックミスらしいんですが
本当のperlhackerさんに掛かれば掲示板のタグチェックなんて意味を
なさないと言う事でしょうか?

どうしても興味が有ったので可能性と言う事で、お聞きしました。
方法を知りたいのでは無いんです。
場を乱したらごめんなさい。放置してくださいませ。

211 :名無しさん@お腹いっぱい。:2001/08/07(火) 12:17 ID:???
メモリ消費==変数の数 と考えればわかりやすいんでは?
配列だってa[0]で一つの変数分のメモリを消費します、これが100個
あれば変数100個分のメモリを消費します。

処理速度!=メモリ消費 です、メモリ消費を抑えるために例えば
配列に入れるんではなく1行づつファイルに書き出したりしてたら
速度は遅くなります。

当たり前のことを長々と書いてしまって恥ずかしい。。。

212 :名無しさん@お腹いっぱい。:2001/08/07(火) 12:56 ID:???
配列が滅茶苦茶大きくなれば1行づつの方が早くなるけどな。
# そこまで大きいデータをTEXTで保存はせんだろうが

213 :名無しさん@お腹いっぱい。:2001/08/07(火) 13:07 ID:t8arwgAY
case sensitiveのサーチエンジンのスクリプトを
case insensitiveにしたいのですが
良い記述方法等ありますでしょうか?

214 :名無しさん@お腹いっぱい。:2001/08/07(火) 13:12 ID:???
>>210
フィーネはcgiの問題とは言ってるがbbs.cgiの問題とは言っていないところ
がポイント

215 :名無しさん@お腹いっぱい。:2001/08/07(火) 14:12 ID:???
>>210
ドキュソの俺にはどうやってるのかサッパリ分からん…。
しかもCGIのバグって…?

216 :名無しさん@お腹いっぱい。:2001/08/07(火) 14:24 ID:???
フィーネが前言ってたとおりログに直接書いてんだよ。
CGIのバグを利用して「書き込んでる」とは言っていない点にも注目。

217 :729:2001/08/07(火) 15:25 ID:m8P3Xhl6
ありがとう、みんなレベル高いな・・・。
「処理速度!=メモリ消費」は目から鱗だったよ。
「箱庭」「FFなんたら」が敬遠されてるけど、サーバ側は何が不満なの?
どこかのサーバでは“メモリ消費が激しいCGI”と説明してたけど、
サーバにとって問題のあるCGIってのは「メモリ消費>速度」なのかな。

218 :名無しさん@お腹いっぱい。:2001/08/07(火) 15:48 ID:???
リロードの回数がチャットの比じゃないとか? よく知らないけど。

219 :名無しさん@お腹いっぱい。:2001/08/07(火) 15:52 ID:???
メモリの話なので便乗質問です。

なるべくメモリ消費を少なくする為にundefで変数を初期化するのは
良い事なのでしょうか?
undefが入る分、処理は遅くなると思います。
よっぽどメモリを喰うようなスクリプトでなければ気にする必要は
ないのでしょうか?

いつも悩んでるんです・・・。

220 :215:2001/08/07(火) 17:43 ID:???
>>216
ナルフォドそれなら納得。サンクス

221 :名無しさん@お腹いっぱい。:2001/08/07(火) 17:45 ID:???
undefしてもメモリが開放されるとは限らん…よな、確か。

222 :名無しさん@お腹いっぱい。:2001/08/07(火) 18:22 ID:???
>>221
まじで?じゃあundefの存在意義は?
ソースが分かったら教えてちょうだい。

223 :222:2001/08/07(火) 18:31 ID:???
よく考えたらメモリ開放する意味以外でもundef使ってるや。
存在意義はあるね。
けどソースが分かったら教えてちょうだい。

224 :221:2001/08/07(火) 19:41 ID:???
たしかプログラミングPerlで見た気がするが…よく覚えておらん。スマソ
Perlのソース見れば分かるんだろうが…(;´Д`)

225 :名無しさん@お腹いっぱい。:2001/08/07(火) 20:32 ID:???
メモリの開放ってどうやるんだい?
そして同じ名前の変数を何度も使いまわせば浪費にならないのかい?

226 :名無しさん@お腹いっぱい。:2001/08/07(火) 20:34 ID:???
メモリの解放まで気にするならPerlを使ってはいけませんとか

227 :名無しさん@お腹いっぱい。:2001/08/07(火) 20:41 ID:???
詳しい人出て来て教えて欲しいage

228 :名無しさん@お腹いっぱい。:2001/08/07(火) 20:48 ID:???
数百KB程度のことなら>>226の言うことが正しいのかもしれぬ。
ハッシュ一要素につき1KBくらい消費するとか聞いたことあるし。

229 :名無しさん@お腹いっぱい。:2001/08/07(火) 21:44 ID:???
undefしたオブジェクトに関連する領域はすべて回収して再利用される。
しかし殆どのバージョンのUNIXでは、領域をシステムに返却されない。

青らくだにあるな。

>>219
結局、メモリリークをおさえるか、処理速度を優先させるか。
これはケースバイケースだったりするわけで。
どちらか問われない、又は問題無い状況であれば、好みで使えばいいかと。

230 :名無しさん@お腹いっぱい。:2001/08/07(火) 22:34 ID:???
$var = "ABC";
コレってメモリをいくらぐらい食いますか?

231 :名無しさん@お腹いっぱい。:2001/08/07(火) 23:21 ID:???
>>230
気になるのならどうにかして試して調べろ。

232 :名無しさん@お腹いっぱい。:2001/08/07(火) 23:30 ID:???
>>231
出来ないくせに大きな口叩くなよ(大爆笑)

233 :名無しさん@お腹いっぱい。:2001/08/07(火) 23:39 ID:???
やっぱり青らくだは一冊買っておくべきかな?初心者は。
箱庭風ゲームを作るつもりだが、メモリ消費と処理速度、どっちを
優先した方が良いと思う?箱庭みたいにご指名で「使用不可」
されたくはないからな…。

234 :231:2001/08/07(火) 23:43 ID:???
1KB程度。
OK?>>232

235 : :2001/08/07(火) 23:45 ID:iLCparaY
せめてPerlも整数型、文字列型、オブジェクト型くらいには分けるべきだ

236 :Crow:2001/08/07(火) 23:47 ID:???
print <<test;

#この中でサブルーチンを直接読み込んだり、
#計算したりする事出来る?

$kotae=$tmp*$check;#こんな感じで

test

237 :名無しさん@お腹いっぱい。:2001/08/07(火) 23:51 ID:???
>>236
自分で試せよ。

238 :名無しさん@お腹いっぱい。:2001/08/07(火) 23:56 ID:???
>>236
print <<test;

test

$kotae=$tmp*$check;#こんな感じで

print <<test

test

239 :名無しさん@お腹いっぱい。:2001/08/08(水) 00:04 ID:???
print <<test;

${ \do{ $katae = $tmp * $check; } }

test

240 :名無しさん@お腹いっぱい。:2001/08/08(水) 01:17 ID:rNhUL.Uw
print <<test;

@{[ $katae=$tmp*$check;]}

test

241 :名無しさん@お腹いっぱい。:2001/08/08(水) 06:02 ID:???
メモリか…

 $hogege = 1024kb_str;#1Mぶんくらいの文字列
 hoge;

sub hoge{
 my $hoge = $hogege;

 $hoge = s/sage//g;
 $hoge = s/age//g;
 $hoge = s/hage//g;
 $hoge = s/uge//g;

 $hogege = $hoge;

 $hoge = 0;
}

最後に0でクリアするのって意味あるのだろうか…

242 :名無しさん@お腹いっぱい。:2001/08/08(水) 08:52 ID:???
>>241
無い。
プライベート変数はスコープ抜けると自動的に破棄されます。
というか、プライベート変数にコピーする理由も無いような。

243 :名無しさん@お腹いっぱい。:2001/08/08(水) 13:01 ID:79X/nc36
CGIで日本語ドメインを検索できるようにしたいんだけど、
PerlでSJISをUNICODEに変換するには、どのように記述すれば良いのですか?

244 :名無しさん@お腹いっぱい。:2001/08/08(水) 13:42 ID:???
>>243
モジュール使いましょう。
検索すればいくらでも出てくるかと。

245 :243:2001/08/08(水) 14:54 ID:2OjC6AHM
モジュールって jcode.pl みたいなやつですよね?

246 :名無しさん@お腹いっぱい。:2001/08/08(水) 15:05 ID:???
#!/usr/local/bin/perl

use strict;

print "Content-type: text/html; charset=EUC-JP\n\n";
print <<"EOM";
テキストを出力
EOM

exit;

use strict; を宣言すると上のようなスクリプトが動かなくなります。
こう言う場合は宣言してはならないものなのでしょうか。

247 :名無しさん@お腹いっぱい。:2001/08/08(水) 15:20 ID:???
>>246
動くが?

248 :名無しさん@お腹いっぱい。:2001/08/08(水) 15:25 ID:???
時々居るんだよな、
コーディングミスをuse strictの所為にする厨房が。

249 :名無しさん@お腹いっぱい。:2001/08/08(水) 15:27 ID:???
>>246
動きますが?

250 :名無しさん@お腹いっぱい。:2001/08/08(水) 15:30 ID:???
やはり動きますよねぇ…なんで動かないのだろう。
ちなみにテキストの内容に $ とか @ とかは入って無いです。

んー…

251 :名無しさん@お腹いっぱい。:2001/08/08(水) 15:35 ID:???
エラーメッセージよめや。

252 :名無しさん@お腹いっぱい。:2001/08/08(水) 15:41 ID:???
ニフティはエラーメッセージ出ないので分かりません。
というかローカルでは動くんですが…

253 :名無しさん@お腹いっぱい。:2001/08/08(水) 15:41 ID:???
動くね、うーん結構深かったりして  違うか
多分これからもエラー出まくるから出来ればコマンドラインでwcした方が
良いよ。cgiでやるならKcache入れるとか。
探せばごろごろ出てくる。

254 :名無しさん@お腹いっぱい。:2001/08/08(水) 15:53 ID:???
>>252
サーバで実験すんな。ローカルでやれや。

255 :名無しさん@お腹いっぱい。:2001/08/08(水) 15:55 ID:???
>>246
2chには無理。

256 :名無しさん@お腹いっぱい。:2001/08/08(水) 16:06 ID:???
>>243
jcode.plはライブラリだ。

257 :名無しさん@お腹いっぱい。:2001/08/08(水) 16:07 ID:???
>>254
ローカルでは動いてると書いてるようだが。

258 :名無しさん@お腹いっぱい。:2001/08/08(水) 16:09 ID:???
>>252
shebang行が違うというのは無しの方向で。

259 :名無しさん@お腹いっぱい。:2001/08/08(水) 16:14 ID:???
>>258
ウチもニフだが合ってる。
ってかマジで動かないねぇ。
サーバのせいにして終わりにしておけ。

260 :名無しさん@お腹いっぱい。:2001/08/08(水) 16:15 ID:???
niftyは@INCにパスが通って無いんじゃない?

261 :名無しさん@お腹いっぱい。:2001/08/08(水) 16:18 ID:???
perlのバージョンを調べてみるとか。
strict.pmが無いならアウト。

262 :名無しさん@お腹いっぱい。:2001/08/08(水) 16:26 ID:???
http://homepage.nifty.com/cgi/
かな?

263 :名無しさん@お腹いっぱい。:2001/08/08(水) 16:28 ID:???
明記されてるな。

perlのバージョンは5です。 (ただし、perl5での標準的なモジュールは使用できません)

ということで、strict.pmすら無いというオチかと。

264 :名無しさん@お腹いっぱい。:2001/08/08(水) 16:43 ID:???
相当なボンクラだけどかなり口は立つと見た。
いいな ベシャリ出来るって  いや ある意味不幸か ヽ(´ー`)ノ

265 :264:2001/08/08(水) 16:45 ID:???
間違えた、ゴメンネ>>皆さん
許して  30時間寝てないの。。。。。。

266 :名無しさん@お腹いっぱい。:2001/08/08(水) 16:50 ID:???
>>264
今一番勢いの良いスレに書こうとしたと見たが(w

267 :名無しさん@お腹いっぱい。:2001/08/08(水) 17:00 ID:???
ニフはモジュール用意してないんですね…

分かりました、みなさんレスどうもでした。

268 :名無しさん@お腹いっぱい。:2001/08/08(水) 17:29 ID:???
ニフにモジュールが無いってのは結構有名な話だと思ったが…

269 :名無しさん@お腹いっぱい。 :2001/08/08(水) 20:23 ID:???
知らなかったよ、標準モジュールも無いってちょっとヒドイね

270 :名無しさん@お腹いっぱい。:2001/08/08(水) 20:37 ID:???
お前ら、いつまでsageてるんだよ

271 :名無しさん@お腹いっぱい:2001/08/08(水) 21:22 ID:???
すみません、xxx.datのなかにある内容を消すにはどうしたらいいんですか?
xxx.datの中身が

127.0.0.1
127.0.0.1
127.0.0.1
127.0.0.1

だとしたら、これを消したいんです。

272 :名無しさん@お腹いっぱい。:2001/08/08(水) 21:24 ID:???
open FILE, ">xxxx.dat";
close FILE;
もっとスマートな方法ありそうだけど。

273 :272:2001/08/08(水) 21:26 ID:???
xが1つ多かった。逝ってくる。

274 :271:2001/08/08(水) 21:32 ID:???
ま、まだ逝かないでくださいよっ。
その線で、datに何かを書き込む形で消すことはできませんか?

275 :271:2001/08/08(水) 21:35 ID:???
open( FILE , "+<xxx.dat" );
while( <FILE> ){ push ( @IP , $_ )};
#ここでなにかやって
print FILE @IP;
close FILE;
って感じに。

276 :名無しさん@お腹いっぱい。:2001/08/08(水) 21:35 ID:???
print FILE "nanika\n";
とほほとか見ると結構わかるよ

277 :名無しさん@お腹いっぱい。:2001/08/08(水) 21:37 ID:???
ん? それで良いじゃん??

278 :271:2001/08/08(水) 21:48 ID:???
いえ、これだと@IPにxxx.datのIPが入っているからそのまま書き込んじゃいます。
で、途中で@IPをどうにかしてから書き込みして消したいんです。

279 :名無しさん@お腹いっぱい。:2001/08/08(水) 21:53 ID:???
>>271=>>275
open( FILE , "+<xxx.dat" );
while( <FILE> ){ if($_ ne "127.0.0.1\n";){push ( @IP , $_ )}};
print FILE @IP;
close FILE;

こんな感じ?

280 :271:2001/08/08(水) 21:54 ID:???
全部の配列
foreach $IP (@IP){ $IP = ();}
ってやっても消えないんですよね…。
foreach $IP (@IP){ $IP = "\n";}
も4行だけもとIPが改行されるだけで消えるわけじゃないし。

281 :名無しさん@お腹いっぱい。:2001/08/08(水) 21:55 ID:???
どうしたいのか全然わからねぇ。例えばでいいから
>>271の状態から何をどういう状態に持っていきたいのか
具体的に書いてみ。

282 :271:2001/08/08(水) 22:04 ID:???
>>281
すみません。
xxx.datに他人のいろいろなIPを「1日だけ」保存しておきたいんです。
これは1日に1度しかCGIを利用できないようにするためです。
で翌日、保存しておいたIPを全て除去したいんです。

283 :271:2001/08/08(水) 22:09 ID:???
具体的に書くと、
( $sec , $min , $hour , $day , $mon , $year ) = localtime( time );

open( FILE , "+<xxx.dat" );
while( <FILE> ){ if($_ ne "127.0.0.1\n";){push ( @IP , $_ )}};

#$IP[0]に日付が書いてある。
#$dayと同じ日ならIPを後ろに追加して、
#$dayと違う日ならxxx.datの中身は$IP[0]=$day;だけにしたい。

print FILE @IP;
close FILE;

284 :名無しさん@お腹いっぱい。:2001/08/08(水) 22:09 ID:???
んで、>>272じゃダメなの?
ファイルごと消したいなら、
unlink('xxx.dat');
だし。
>>274はどういうことよ?

285 :名無しさん@お腹いっぱい。:2001/08/08(水) 22:09 ID:???
>>282
一日一度(23:59と0:00はOK)か、24時間おきかにもよらない?
細かいことだけど。

286 :285:2001/08/08(水) 22:11 ID:???
先に書かれたか。
一つの手段として、xxx.datを${day}.datにしてしまう手もある。
そして、古いログを自動削除するように書き加える。

287 :271:2001/08/08(水) 22:15 ID:???
>>286
そういう手もあるんですか。

open FILE, ">xxxx.dat";
↑これはdatの中身をいったん消去するんですか?

288 :名無しさん@お腹いっぱい。:2001/08/08(水) 22:18 ID:???
>>287
一旦消去するよ。
てかそれくらいは試せばわかるだろ。

289 :284:2001/08/08(水) 22:22 ID:???
あ、かぶった。
なるほど。

$IP = 新しいIPアドレス
として、
open( FILE , "+<xxx.dat" );
$oldday = <FILE>
if ($day eq $oldday) {
  seek(FILE, 0, 2);
  print "$IP\n";
} else {
  seek(FILE, 0, 0);
  trucate(FILE, 0);
  print "$DATE\n";
}

close FILE;

じゃだめ?

290 :271:2001/08/08(水) 22:40 ID:???
かっこ良すぎです>>289,>>285
おかげで無事難問を突破できました。もうどっちの方法でログを消そうか迷ってます。
truncateがスマートで美しいだけど、${day}.datもファイル生成あたりが上級者っぽいし。

#これでまたKENT氏に1歩近づいた…。

291 :三下:2001/08/08(水) 23:32 ID:???
先生、ちょっとイイですか!?
変数を$_このていどに省略する理由ってのは
見た目だけですかい!?

292 :名無しさん@お腹いっぱい。:2001/08/08(水) 23:51 ID:???
>>252

use strict くらいの効果なら,直接コードに書いてしまったら?
strict.pm を見れば一目瞭然だけど一応.

BEGIN { $| = 0x00000002|0x00000200|0x00000400 } # 左からrefs,subs,vars


%INC を見ればそのスクリプトがどのファイルを使っているか分かるから,
これを使って,Nifty 用スクリプト(モジュールを全て展開する)を生成する
トランスレータを作るという手もあるかも.

293 :名無しさん@お腹いっぱい。:2001/08/08(水) 23:54 ID:???
一緒にstrict.pm(とその他いくつか)をあぷするという手もある

294 :名無しさん@お腹いっぱい。:2001/08/09(木) 00:03 ID:???
>>292
$|じゃなくて$^Hな

わざわざ展開トランスレータを書くくらいなら
アプしたほうがいろんな意味でいいと思うがね。

295 :名無しさん@お腹いっぱい。:2001/08/09(木) 00:03 ID:???
ローカルでuse strict;環境で動くって確認されたなら、
その行を削ってアップすりゃいいじゃん。

296 :名無しさん@お腹いっぱい。:2001/08/09(木) 02:08 ID:1PgCYU2A
上のほうで出てるのとは状況が違うんですが、ローカルで動いてたスクリプトが
サーバー上で動かない理由って何がありますかね?

Winで作っててサーバーはUNIXです。スクリプトはEUCで保存して、改行はLFにしました。
別のファイルをrequireしてますが、それはSJISです。

どうか教えてください。

297 :名無しさん@お腹いっぱい。:2001/08/09(木) 02:12 ID:???
>>296
1:user/bin/perlの違い
2:絶対パスと相対パスの違い
3:Perlのバージョンの違い
4:使用できるモジュールの違い
5:パーミッションの違い

続きよろ。>>298

298 :名無しさん@お腹いっぱい。:2001/08/09(木) 02:21 ID:1PgCYU2A
>>297
レスありがとうございます。
言われた点をチェックしてみます。
また後できます。

299 :名無しさん@お腹いっぱい。:2001/08/09(木) 02:31 ID:???
モジュールの話が出ているので便乗して質問です。
ウチもニフティなんですが、
モジュールを使うときはインストールしなければならないと聞いたことがあります。
インストールには特別な作業が必要なんでしょうか。
それとも、ただアップして requier か何かで呼び出せば良いんでしょうか。

300 :名無しさん@お腹いっぱい。:2001/08/09(木) 02:44 ID:1PgCYU2A
>>297
言われた点をチェックしてみました。

1: Perlのパスはあってます。
2: それはrequireするファイルのパスの事でしょうか?もともと相対パスで書いてあり、合っています。
3: Perlのバージョンは5です。特に問題ないはずです。
4: モジュールは使用していません。
5: パーミッションは755です。これで他のスクリプトは動いています。

この状態で考えられるほかの原因の心当たりがありましたら教えてください。
よろしくお願いします。お手数かけます。

301 :名無しさん@お腹いっぱい。:2001/08/09(木) 02:45 ID:???
perlのバージョンは5でも、細かい違いによって(以下略
みたいな事は無いかな?

302 :名無しさん@お腹いっぱい。:2001/08/09(木) 02:47 ID:???
「Perlのバージョンは5です」
この回答かなり困るやね。

303 :名無しさん@お腹いっぱい。:2001/08/09(木) 02:50 ID:???
>特に問題ないはずです。

どうもバージョン関係がぁゃιぃな

304 :名無しさん@お腹いっぱい。:2001/08/09(木) 02:53 ID:???
perl5.005_64じゃないとbase.pmが使えないという罠。
私はこれでモジュールの設計変更を余儀なくされた。

305 :名無しさん@お腹いっぱい。:2001/08/09(木) 02:57 ID:1PgCYU2A
んー。やはりそこをつっこまれたか…。

いやね、鯖の解説ページにそれだけしか書いてないんですよ。
僕も見た瞬間「げ!」と思ったんですが…。

ちなみに今まで10個くらいスクリプト書いてこの鯖で動かしましたが他のは大丈夫です。
それらの中では今回のスクリプトはかなり単純な方なのに…。

ちなみにただのフォームメールです。っていうかまだsendmailには送ってなくて、
フォームからの入力内容を画面に表示させてるだけです。

あ、レスくれた方ありがとうございました。
と言っても引き続きお願いします。
バージョン以外でなんかないですかね。

306 :304:2001/08/09(木) 03:00 ID:???
あ、私の借りてるレンタルサーバの話ね、これ(w
スマソ。

>>305
バージョン見たいなら、
$command = `perl -v`;
print $command;
みたいな感じで見れませんか?

307 :名無しさん@お腹いっぱい。:2001/08/09(木) 03:06 ID:1PgCYU2A
>>306
ありがとうございます。やってみます。

308 :307:2001/08/09(木) 03:11 ID:1PgCYU2A
>>306
むむ。なんかその方法だとうまくいかないッス。
ちなみにtelnetはつかえません。

Perlの5と5.6ってどの辺が違うんでしょうか?
正規表現の拡張くらいしか知らないんです。

309 :名無しさん@お腹いっぱい。:2001/08/09(木) 03:13 ID:bI3E6lI.
>>304
http://search.cpan.org/doc/CHIPS/perl5.004_05/lib/base.pm
これを見るとPerl 5.004_04 では存在していたっぽいけど?
たとえbase が使えないからって、@ISAに入れればすむような気がするけど、
設計変更を余儀なくされるってどういうモジュール?

310 :名無しさん@お腹いっぱい。:2001/08/09(木) 03:19 ID:bI3E6lI.
>>308
$] にperlのバージョン入ってるよ。
5.005と5.6の違いはいっぱいあるのでここ。
http://www.perldoc.com/perl5.6/pod/perldelta.html

311 :304:2001/08/09(木) 03:26 ID:???
>>309
それが何故か@ISAに入れても継承しなかったという。
まぁ私のコーディングミスだったんでしょうけど。はずかちい。

312 :名無しさん@お腹いっぱい。:2001/08/09(木) 03:26 ID:???
fields.pmを使うモジュールとか<base.pm必須
とはいえXSを使ってるわけじゃないから設計変更するまでのことはないと思うが…。

313 :304:2001/08/09(木) 03:44 ID:???
当時を思い出しながら逝って来ます

314 :307:2001/08/09(木) 03:53 ID:KTDhsApQ
>>310さん
ありがとうございます。バージョン分りました。
5.00503…。あやしい…。

教えていただいたサイト行ってみましたが
今はちょっと時間がないのでこんなに読んでいられないです。
今度じっくり読みます。

とういうわけでできればバージョン5と5.6の違いで注意すべき点などありましたら
教えていただけると助かります。ほんと教えて君ですいません。

315 :307:2001/08/09(木) 04:11 ID:???
んがーー!みなさん。ありがとうございました。
いろいろ調べてみて、全部コメントアウトして、
print "ok";
だけにしてもエラーがでたのでちょっ根本的に違うだろ。
と思ってその前で呼んでるrequireを疑ってみました。

で、その呼んでるファイルの中でダブルクォートの内側に
@マークをそのまま書いていたのがいけなかったようです。
\@にしたら動きました!

ホント皆さんありがとうございました。
勉強になりました。

316 :名無しさん@お腹いっぱい。:2001/08/09(木) 11:47 ID:???



             , -―- 、
        , l[》《]|      ヽ
        / i/ i ノノノ ))))〉
.      / i i |(リ ( | | | !    / ̄ ̄ ̄ ̄ ̄
      〈ヘ|_|l| l ゝ~ lフ/|   < 質問に答えてくれるみなさん ありがとう
       / | | |( ヽwliヽ |       \_____
      / /! | l ヘ《~ヘii~▲▲
     /  /ノノ! ノ|リ〉 \/( ゚ω゚)
   / ,  ./-‐- 、/V\ハ_ヲUU
   !/ ./    / / |   ゝ つつ
   ヽ_/   ./    !    jj  \
       /               i
      〈   /        |      |'
       ゝ /    l    |   !/
        `〜‐-L__」〜'^

317 :名無しさん:2001/08/09(木) 12:16 ID:???
gmtimeとlocaltimeの違いって何かおしえて

318 :名無しさん@お腹いっぱい。:2001/08/09(木) 12:26 ID:???
>>317
gmtimeはグリニッジ天文台(跡地)の時刻を返す
localtimeはそのサーバーで設定されているタイムエリアの時刻を返す

319 :名無しさん:2001/08/09(木) 12:34 ID:???
>>318
ありがとです

320 :名無しさん@お腹いっぱい。:2001/08/09(木) 18:00 ID:4s0a7Yec
本物の初心者です(汗

以下の通りにしたいのですが、
↓の部分にxhtmlをはさんで表示させることってできますか?
例えば<link />なんかが入ると、500エラーになってしまいました。

print <<"__HTML_START__";
Content-Type: text/html

【ここ】

__HTML_START__

321 :名無しさん@お腹いっぱい。:2001/08/09(木) 18:08 ID:???
>>320
xhtmlだろうがxmlだろうが関係ない。入れられる。
なにか他の原因があるはず。
最低限エラーが出るスクリプトを出してみ。

322 :名無しさん@お腹いっぱい。:2001/08/09(木) 18:17 ID:???
>>321
最低限に絞っていくと分かりました!
<head></head>の中の、
<link rev="made" href="mailto:hoge@hoge.hoge" />
これを無くすと、500にならなくなりました。
しかし、これの何が原因なのか・・・
# 他の<link />は大丈夫でした。

323 :名無しさん@お腹いっぱい。:2001/08/09(木) 18:19 ID:???
<link rel="made"href="hoge@hoge.jp" />
とかって書いてるんでしょ。
<link rel="made"href="hoge\@hoge.jp" />
にしてみ。

あと、関係ないけど __HTML_START__ よりも __HTML_END__ の方がいいと思う。

324 :323:2001/08/09(木) 18:20 ID:???
あー先に出された。鬱。
@ が悪さしてるから \@ にしてね。

325 :名無しさん@お腹いっぱい。:2001/08/09(木) 18:25 ID:???
なるほど。
@が原因でしたか。直してみます。
ありがとうございました<(_ _)>

326 :微笑:2001/08/09(木) 19:08 ID:???
__
         〃 _`__
     ,,-=-、、l{,_'´..._ `ヽ、、
   〃. ',.´二W´- ‐-`\ \ヽ、___
   _{l,'.'´      、 ヽ ヽ ヽ彡k、ヽ\
  .//`/   i l.    \ 、ヽ `、 i彡}ヽ`' ´ ▲女優,アイドル、脱がしました▲
. /| / i {  |l {\ {ヽ、_!..ヽ」_/} .}./ |__〉、
 \l.{. l.ヾ _.ゝ_土. ゝ -'fT;;ヽ,| lテ}| ||__〉
   /iヽゝヽ/{~);;:l     {:..''ノ'ノノ|{ノ |_!!女優,女子高生のエッチ画像ばかりを厳選収集!スクール水着,女優,画像ばかり。
  .|_|l」ヽ. ヽ ゞ‐'   、   ̄`ノレヽソ|  
     (.ソ.ゝ     --    /' {=}ノ ◆アイドル画像秘宝館◆
     (=| l へ、      /ノノ((.)). http://www.futomomo.com/netidol/idolhappy/maki/ 
     ((!)ヾヽヽ` ;.- ' ´ |'' ''"'´◆アイドラー◆
         `~^``/'l    ゜>\_ http://www.futomomo.com/netidol/idoler/megu/
     , -‐〃"´ |___/   >- 、 ◆セーラー服◆
   / ./〃    |=/    〃/  \ http://www.futomomo.com/netidol/sailor/miku/
  /   | ||, ‐-、_,...!、/_ ,..、 .〃/      ヽ ◆人妻◆
  〈   / -ー.{ { {.=  ヽ、|| l      | http://www.futomomo.com/netidol/waif/mai/
  |   ヽ  /| |\   / i 〉        | ◆スイート倶楽部◆
  〈  ∧ l_/./ |  | \ _/  /       / http://www.futomomo.com/netidol/sweetclub/miyuki/

desghgyj

327 :名無しさん@お腹いっぱい。:2001/08/09(木) 19:27 ID:???
>>320
もう終わってる話だけど。
here docは、識別子の引用型によって中の文字列型が決まるよ。
例えば今回だったら、
<<"__HTML_START__"; (ダブルクォート文字列)
<<'__HTML_START__'; (シングルクォート文字列)
<<`__HTML_START__`; (バッククォート文字列)
というわけですな。参考までに。

328 :名無しさん@お腹いっぱい。:2001/08/09(木) 20:10 ID:MDUdBd8.
たとえば、Word123 とい単語があったとして、これを1文字ずつにばらして、
配列にセットしたいのですが、どうしたらいいでしょうか?

329 :名無しさん@お腹いっぱい。:2001/08/09(木) 20:13 ID:???
my @array = split //, $str;

330 :名無しさん@お腹いっぱい。:2001/08/09(木) 20:42 ID:???
<link rel="made"href="hoge\@hoge.jp" />
の最後の /> は何ですか?
<link rel="made"href="hoge\@hoge.jp">
これじゃ駄目なのでしょうか?

331 :名無しさん@お腹いっぱい。:2001/08/09(木) 21:03 ID:???
>>330
Web製作版に逝ってよし

332 :名無しさん@お腹いっぱい。:2001/08/09(木) 21:25 ID:???
>>330
XHTML では全てのタグに終了タグが存在し、且つ終了タグの省略が禁止。

んで、省略は出来ないけどその代わりに省略形が存在し、
<link rel (中略)></link>
の省略形が
<link rel (中略) />
というわけ。

大方こんな感じ。

333 :名無し募集中。。。:2001/08/09(木) 22:53 ID:.n9qBKK2
http://www.kent-web.com/data/linkv.html
似たようなのが無いからこれ使ってるんですが
これだとカテゴリー内で新しく登録したサイトが上からソートされるんだけど
これを下からソートさせたいんだけどどうすればいいですか?
あと登録したurlにhttp://が含まれない場合はエラー出すようにしたいんですけ

unlessとif(!をどう使えばいいでしょうか?ご教授お願いします(;´Д`)

334 :un:2001/08/09(木) 23:18 ID:???
un

335 :名無しさん@お腹いっぱい。:2001/08/09(木) 23:32 ID:qC8qL/U.
あるスクリプトで最後(exit;があるべき場所)に「1;」が書かれていました。
これはどういう意味なのでしょうか?
「1; Perl」のキーワードで検索してみましたが、出てきませんでした。

336 :名無しさん@お腹いっぱい。:2001/08/09(木) 23:37 ID:???
>>333
ざっと見てみたけど、まず並びに関しては、273,275,277行目の"push"を
"unshift"にするか、277行目と278行目の間に
@new = reverse @new;
を加えるかすればいいと思う。
それからエラーは、234行目のifのカッコの中を、たとえば
$in{'url'} !~ m{http://[a-zA-Z0-9\-/.~?%#=&:;+@]+}
とかに変えればいいんじゃないかな。

337 :名無しさん@お腹いっぱい。:2001/08/09(木) 23:40 ID:???
>>335
ブール値の1を返す。

338 :335:2001/08/09(木) 23:43 ID:???
>>337さん
ありがとうございました。

339 :336:2001/08/09(木) 23:43 ID:???
ちょっと訂正。234行目はこうすべきだったね。
$in{'url'} !~ m{^http://[a-zA-Z0-9\-/.~?%#=&:;+@]+$}

340 :336:2001/08/09(木) 23:51 ID:???
俺、なんか寝ぼけて馬鹿なこと書いたかも(w
並びの方は忘れてくれ。

341 :333:2001/08/10(金) 00:02 ID:???
>>336
ありがとうございました。
しかし、並びの方ができませんでした。苦笑
登録した順に上から必ず
3124
41235
512346
このように表示されます。
目が冴えてるときにでも、またお願いします(ノД`、)

342 :名無しさん@お腹いっぱい。:2001/08/10(金) 00:07 ID:???
>>335
>>337でわかったのか!?
1を聞いて10を知るとは…スゲェ奴だな。

343 :337:2001/08/10(金) 00:09 ID:???
>>342
俺も同じ事思ったよ。

344 :名無し:2001/08/10(金) 01:00 ID:???
文章が無いときにリロードできるようにするにはどうすればいいでしょうか?
&reload if(!$comment)じゃだめですよね?

345 :名無しさん@お腹いっぱい。:2001/08/10(金) 01:09 ID:???
>>344
if ($comment eq "") { &reload; }

346 :名無しさん@お腹いっぱい。:2001/08/10(金) 01:09 ID:???
>>344
if ($comment eq "") { &reload; }

347 :名無しさん@お腹いっぱい。:2001/08/10(金) 01:12 ID:???
length($comment) or &reload;

348 :名無しさん@お腹いっぱい。:2001/08/10(金) 01:12 ID:???
length($comment) or &reload;

349 :344:2001/08/10(金) 01:22 ID:???
>>345
>>347
両方ともだめでした。
htmlファイルを作るタイプだからだめなのかな
public_html/cgi-bin/bbs.cgi
に投稿して、普段は
pubglic_html/index.html
をアクセスするタイプです

350 :名無しさん@お腹いっぱい。:2001/08/10(金) 02:17 ID:uDrjeUNE
>>349
Location

351 :ナナ萌え(゚д゚)ウマー:2001/08/10(金) 03:18 ID:???
if ($comment eq "") {
  print "Location: $path\n\n";
}

352 :名無しさん@お腹いっぱい。:2001/08/10(金) 13:54 ID:???
ls-lRって何ですか?

353 :名無しさん@お腹いっぱい。:2001/08/10(金) 14:01 ID:???
コマンドです

354 :名無しさん@お腹いっぱい。:2001/08/10(金) 14:49 ID:ed6w6DP2
perl test.pl > test.txt
のように出力先をtest.txtに設定した状態で、
例外的にプロンプトの方に出力させるには
どのように書けばよいのでしょうか。

355 :名無しさん@お腹いっぱい。:2001/08/10(金) 15:03 ID:???
>>353
どういう役割のコマンドなんですか?

356 :337:2001/08/10(金) 15:08 ID:???
>>352
君、板からして間違ってるよ。

357 :名無しさん@お腹いっぱい。:2001/08/10(金) 15:09 ID:???
名前残ってた。
逝って来ます。

358 :名無しさん@お腹いっぱい。:2001/08/10(金) 15:39 ID:???
>>354
print "1";
print STDERR "2";

359 :名無しさん@お腹いっぱい。:2001/08/10(金) 17:37 ID:ed6w6DP2
正規表現に変数って使用できないんですか?

$a="abc";
$b="abcdef";

if($b=~ /$a/)
{

イメージとしてはこんな感じです。

360 :名無しさん@お腹いっぱい。:2001/08/10(金) 17:38 ID:ed6w6DP2
あ、の前に、>>358さん感謝です。

361 :名無しさん@お腹いっぱい。:2001/08/10(金) 17:54 ID:???
($b=~ /\Q$a\E/){
これか、、
http://corn.2ch.net/test/read.cgi?bbs=php&key=988728069&st=518&to=526&nofirst=true

362 :名無しさん@お腹いっぱい。:2001/08/10(金) 18:48 ID:???
>>355
ls -lRなら知ってる、"ls"はディレクトリを表示するUNIX系OSのコマンド
DOSの"DIR"みたいな奴だ。
"-lR" はオプションで、まぁその根こそぎ表示すると思ってくれればいい。
systemが投げるコマンドが解らない時はこんな所を探して調べればいい
http://www.linux.or.jp/JM/

363 :名無しさん@お腹いっぱい。:2001/08/10(金) 20:00 ID:???
myってなんで使わなくてはいけないのですか?
処理速度が速くなったりするのですか?

364 :名無しさん@お腹いっぱい。:2001/08/10(金) 20:01 ID:???
>>363
相手にされたければ黙って使っておけ。

365 :. :2001/08/10(金) 20:10 ID:qy20tGgA
>>364
君の能力ではその程度に認識なのかも知れないが、世の中には自分以上の
人間や物事を深く掘り下げて認知しようとする人間
が沢山居ると言う事を忘れてはいけない

366 :名無しさん@お腹いっぱい。:2001/08/10(金) 20:14 ID:???
>>365
今度はこっちに来たの? やれやれ……。

367 :名無しさん@お腹いっぱい。:2001/08/10(金) 20:24 ID:???
>>365
勘弁してよ。
君のためのスレはちゃんとあるんだから。
もうこっち来ないでね。

368 :トリップの解析したい人:2001/08/10(金) 22:58 ID:???
質問なんですが、Perl板っていうのはこのスレのことですか?
それとも他にPerl板っていう板があるんですか?

369 :名無しさん@お腹いっぱい。:2001/08/10(金) 23:01 ID:???
>>368
http://corn.2ch.net/test/read.cgi?bbs=entrance&key=997381086&st=119&to=119

370 :368:2001/08/10(金) 23:11 ID:???
>>369
すいません、そのプログラム?の意味がわかりません。

質問させてもらいます。今、トリップスレに書いてあった
#!/usr/local/bin/perl

$counter = 'aaaaa'; # マジックインクリメント用
$seed = 'Q!<'; # ランダムな文字列
$str = 'nofx'; # 探す文字列の正規表現

while(1){
$_ = substr(crypt("$counter$seed", 86), -8);
print "$counter$seed - $_\n" if /$str/oi;
last if ++$counter eq 'aaaaaa';
}
っていうのでやってみて実際動作したんですが、
これの結果を自動でテキストで保存できるようには
できませんか?

トリップスレの方は解析で忙しそうなので…

371 :名無しさん@お腹いっぱい。:2001/08/10(金) 23:21 ID:???
リダイレクトしろよ
そんなのPerlの質問ですらないぞ

372 :ループ鯖完  T_T:2001/08/10(金) 23:48 ID:???
よく解らないのにforとかwhileの中適当にいじりながら
実験するのはやめておくれよぅ・・・・・

373 : ◆0nyWWW/2:2001/08/11(土) 00:06 ID:???
へぇ。トリップなんてはじめて知ったYO!

374 :名無しさん@お腹いっぱい。:2001/08/11(土) 00:19 ID:???
うわスマソ >>みなさん、>>365はKENTクンじゃない
家の弟です。 迷惑かけて申し訳無い
んにゃろ、、ぶっ頃してやる

375 :pp:2001/08/11(土) 00:22 ID:???
http://ton.2ch.net/test/read.cgi?bbs=sec&key=996966367

すいませんが、このスレの40ってどういう事?
取り敢えず可能なんですね?

376 :名無しさん@お腹いっぱい。:2001/08/11(土) 00:29 ID:???
なんか荒れてきたカナー
>>375
実際出来てる所見ると可能なんでしょう、もう対策されたみたいですけども
PG板で おしえて!!! とかスレ立てちゃだめだよ。

377 :333:2001/08/11(土) 02:01 ID:V2ESYaRc
誰か>>333をどうやればいいか教えていただけませんか?お願いします。

378 :名無しさん@お腹いっぱい。:2001/08/11(土) 02:13 ID:???
>>377
うーん、スクリプト見るのが面倒だ。
Perlの話というより、CGIの改造でないかと、コレ。
というか、336で決着ついてないのかな?
# ネタだったりして(w

379 :名無しさん@お腹いっぱい。:2001/08/11(土) 02:15 ID:???
指定ディレクトリ以下すべてのテキストファイル内の特定の文字列を
一気に置換するのに一番効率のよい方法あるでしょうか?
ログファイルのコンバートに使いたいのですが・・・
よろしくです。。。

380 :333:2001/08/11(土) 02:23 ID:V2ESYaRc
>>378
>>336の通りにすると>>341のような現象が起こるので解決してません。
自分でも@new=sort(@new);とか考えられる限りの事は尽くしてみたんですができませんでした。

381 :名無しさん@お腹いっぱい。:2001/08/11(土) 04:46 ID:???
このスレで、初心者です、と自己紹介してから質問してる人よりも激しく初心者な俺・・・・・・

こんなんでやっていけるのだろうか

382 :名無しさん@お腹いっぱい。:2001/08/11(土) 04:47 ID:???
しかも、sageようとしてageちゃったし・・・・

383 :名無しさん@お腹いっぱい。:2001/08/11(土) 05:00 ID:???
>>381
やってれば自然と出来るようになるよ。

384 :名無しさん@お腹いっぱい。:2001/08/11(土) 06:29 ID:j13TLi42
>379
perl -pi.bak -e 's/foo/bar/g' *.logとか?

.logの拡張子のファイル中のfooをbarに変換し、
元のファイルはhogehoge.log.bakみたいに保存される
サブディレクトリ以下も対象ならuse File::Find等使えばok!

でも一番効率の良い方法ってどういう意味?こんなの、
効率も糞もないと思うのだけど…

385 :名無しさん@お腹いっぱい。:2001/08/11(土) 11:58 ID:X8Jv3YYU
>384
環境によっては動かない(特にWindows系は*の処理がイマイチ)

>379
環境も書いとけ。systemコマンドでシェル使ったほうが早い場合も
あるからな。

386 :名無しさん@お腹いっぱい。:2001/08/11(土) 20:50 ID:???
ord関数の逆の動作を行う関数ありませんか?

387 :386:2001/08/11(土) 20:53 ID:???
失礼。
事故解決しました。

388 :379 ◆PL.a6eWs:2001/08/11(土) 23:47 ID:???
>>384さん、
>>385さん、どうもありがとうです。

>でも一番効率の良い方法ってどういう意味?
ええと、効率がよいじゃなくてperlのみでできて環境に依存しない
方法でした・・・スマソ
サーバー上に変換スクリプトをおいて(シェルはつかえないので)したいなと
思ってますです。
ローカルのWinの環境でも出来ればそれでいいんですが。。。

389 :kkkkkkkk:2001/08/12(日) 02:40 ID:???
トクトクというところで借りて、以下のようなものをアップしたんですが
動かないんです。

#!/usr/bin/perl
print "Content-type: text/html\n\nOK.\n"; exit(1);

なにが悪いんでしょう。
cgi本体:http://www41.tok2.com/home/harebare/cgi-bin/test.cgi
ファイル名に.txtをつけたもの。
http://www41.tok2.com/home/harebare/test.cgi.txt

こんな簡単なことではまるなんて。
cgi-binのパーミッションは701
test.cgiは700。

だれか助けて〜

390 : ◆0nyWWW/2:2001/08/12(日) 02:42 ID:???
・#!行
・改行コード
・全角文字が混じっていないか

391 :kkkkkkkk:2001/08/12(日) 02:50 ID:???
ありがとうございます。

利用するにおいての注意事項はありますか?
・倉庫としてのご利用(音楽・画像等のデータを置いておくだけ)は出来ません。
・「index.html」もしくは「index.htm」の設置は絶対に必要です。
・「index.html」もしくは「index.htm」に<TITLE>タグでタイトルを記入しておいて下さい。
記入されていない場合、アクセスランキングに参加出来ません。
・CGIのみの使用は禁止しております。

↑こいつのせいでした。

392 :名無しさん@お腹いっぱい。:2001/08/12(日) 06:45 ID:???
>>388 「教えて君」の臭いが…

まずは自分で作ってみたの?そんなの数行で出来るぞ。
初心者だからといってなんでも人に頼ってはPerlの上達も
見込めないよ。

「こう作ったんですけど動かない」ならともかく、何も
ものがなくて、教えてと言われてもね。特にPerlは、
やり方は何通りもあるんだから。

393 :名無しさん@お腹いっぱい。:2001/08/12(日) 20:32 ID:???
すみません、教えていただけませんか。
テキストファイルを読み込んで、'ポニーテール'のはいった行を抽出しようとしました。
push(@out, $_) if($_ =~ m/ポニーテール/);
とすると、最初の「ー」がまずいというエラーが出たので、
push(@out, $_) if($_ =~ m/ポニ/);
とすると、ほとんどの行が当てはまってしまいました。

後半のまずいのはたぶん、windows98 + ActivePerlで「ポ」の文字コードの後半が
0x7cで|ですから、part1の「鉄鋼」が化けるのとおなじじゃないかなと思いましたけど
読んでも対策ができませんでした。よろしくお願いします。

394 :名無しさん@お腹いっぱい。:2001/08/12(日) 21:36 ID:???
>>393
push(@out, $_) if($_ =~ m/\Qポニーテール\E/);

395 :名無しさん@お腹いっぱい。:2001/08/12(日) 21:54 ID:???
>349
ありがとうございます。できました。
\Qは、\Eがでるまでのメタキャラクタを打ち消すんですね。勉強になりました。

396 :395:2001/08/12(日) 21:59 ID:???
すみません、395は349さんじゃなくて、394さんへの感謝です。

397 :名無しさん@お腹いっぱい。 :2001/08/13(月) 00:38 ID:???
>初めて来た方、初心者はまずこのスレッドから始めよう。
>尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
>案外答えはもう書かれているかもしれない。

1にこう書いてある。 どうして過去ログ読まないんだろう。
せめて初心者スレッドの過去ログくらいは…。
本当に役に立つ事が書いてあるよ。もちろん改行コードとか\Qとかも。

398 :名無しさん@お腹いっぱい。:2001/08/13(月) 04:54 ID:a9/FXvbY
g-zip圧縮転送ってどうやるの?
ACCEPT確認してエンコートヘッダにg-zip指定するだけじゃだめなんでしょ?

399 :名無しさん@お腹いっぱい。:2001/08/13(月) 15:45 ID:JzeNXb.k
Active perlでロングネームの方のファイル名取得方法
教えて〜ん。

400 :名無しさん@お腹いっぱい。:2001/08/13(月) 16:15 ID:???
>399
普通に取得できますが何か?

401 :名無しさん@お腹いっぱい。:2001/08/13(月) 16:35 ID:???
Active Perl をローカルで使ってテキストを処理したとき
改行コードを \n にしても \r にしても、同じ結果になるんだけど、(0D 0A だったかな)
回避方法あります? わざわざ、サーバにアップロードするのは面倒なんで…

402 :名無しさん@お腹いっぱい。:2001/08/13(月) 16:55 ID:???
>>401 perldoc -f binmode

403 :399:2001/08/13(月) 17:16 ID:JzeNXb.k
>>400
失礼。説明が足りませんでした。
SOSヘッダ付けたperlスクリプトにD&Dでファイル渡すとショートファイルネームで引数に渡されるのです。
で、渡されたファイル名を出力したいんですが、その時にロングファイルネームで出力したいんです。
なのでショートファイルネームをロングファイルネームに変換する方法教えて〜ん。

404 :◆/InUhgpU:2001/08/13(月) 18:52 ID:???
Win32::GetLongPathName()

405 :401:2001/08/13(月) 21:57 ID:???
>>402
ありがとうございます。できました。

406 :399:2001/08/13(月) 22:24 ID:???
>>404
それそれー
あんがとーん。

407 :名無しさん@お腹いっぱい。:2001/08/13(月) 22:41 ID:7FPat022
PERL5.6のバグ?

my($str) = q{1  2  3  4  5  6};

if ($str =~ m/^(?:[^\t]*\t){4}5/) {
  print 'OK';
} else {
  print 'NG';
}
print "\n";


下記のコードですが、
perl5.005はOK
perl5.6はNG
になります。
※タブは全角スペースに変換してます。

分かる方いますか?

ちなみに、
m/^(?:[^\t]*\t){3}[^\t]*\t5/
はとおります。。謎

408 :◆/InUhgpU:2001/08/13(月) 23:09 ID:???
1〜6の間もタブなんだよな?
qq{1\t2\t3\t4\t5\t6};
なら"OK"になるが。
当方ActivePerl5.6.1…

ってアレ?5.6.0だとNGだな…何故だろう。

409 :UUDH:2001/08/13(月) 23:42 ID:???
@test2 = ("miyata<>21<>men<>","yokoi<>39<>women","nagata<>26<>men","yanase<>26<>men",);
foreach (@test2){
@temp = split (/<>/ ,$_);
if ($temp[0] eq yokoi){
next;
}else{
push (@out,"$temp[0]<>$temp[1]<>$temp[2]<>\n");
}
}
print "@out\n";

とすると、何故か2行目の頭から空白が入ってしまいます。
もう正規表現とかで何でもかんでも取り払っても入ってしまいます。
3日たって何が何かわからなくなってきました。、、、、

410 :名無しさん@お腹いっぱい。:2001/08/13(月) 23:55 ID:???
>>409
俺も良くわからないけど改行コードの問題な気がする・・・。

411 :◆2O1OO1O2:2001/08/13(月) 23:56 ID:9/vbk82Q
>>409
> print "@out\n";
配列をダブルクオートの中に入れると、要素の間にスペースが入る。
print @out;
でいいんじゃない?

412 :名無しさん@お腹いっぱい。:2001/08/13(月) 23:57 ID:???
>>409
#最終行
print @out, "\n";
#or
local $" = "";
print "@out\n";

#yokoiはクォートしろ

413 :名無しさん@お腹いっぱい。:2001/08/14(火) 02:51 ID:???
>>398
このスレではわからん

414 :UUDH:2001/08/14(火) 04:30 ID:???
あぁ〜 神です!!、このスレには神が居るです!
>>410
僕もそう思いましてあちこちで\wと\d以外は全部捨てたりしてみたんですが
解決できなくて、、まさか一番最後だったとわ
>>411
今まで " は有っても無くてもほぼ良し、位に思い込んでました。
ダメだなぁ、、今KENTさんのチャット見るとやっぱり裸のまま
printしていました。
まだコンテキストが良く理解出来てない様で度々こう言うトラブル
に見舞われています 
>>412
これはどちらも絶対解らなかったです。
. じゃ無くて , なんですね。 初心者本には載ってないなぁ
方法2の方は局所的に " を意味の無いものにすると言う感じでしょうか
localも使うこと有るんですね、ふかいッス 
>#yokoiはクォートしろ
YES SIR!!!、ゴチャゴチャしていて段々無茶苦茶になっていました

一人だと絶対自己解決出来なかったです。 大感謝です!!>>みなさん
きっと良書を沢山読んでいるから、こう言う事で躓かないんですよね
まだ結城さんの本と、WEBだけで粘ってるのですが、ちょっと限界かなぁ。。
書籍スレを読み直してみます。
プログラミングPerlとか買っちゃっても大丈夫かな、、  (^^;)

もう一回PART1から読み直してみよう、有難うッス>>みなみなさま

415 :UUDH:2001/08/14(火) 05:00 ID:???
@test = ('hokkaidou','aomori','yamanashi','iwate','tokyo','kyoto');
$scalar1 = @test;
$scalar2 = "@test";
print '配列が裸で評価されると・・・'."\n";
print "$scalar1\n".'↑要素数が返る'."\n\n";
print ' " で括って評価されると・・・'."\n";
print "$scalar2\n".'↑要素を空白で区切ったものが返る'."\n";

うれしかたので、カキカキ、、、
配列の中? がカンマデリミタになってると思い込んでたのが気付かなかた
原因でした それ位カンマが出力されない時点で気付けよ=>漏れ (;´Д`)

416 :名無しさん@お腹いっぱい。:2001/08/14(火) 05:23 ID:???
>>414
> 方法2の方は局所的に " を意味の無いものにすると言う感じでしょうか
これって、local $" = ""; のほうって事?
これは配列をダブルクォートの中に入れたときに要素間に入る文字列を定義してる。
デフォルトはスペースになってる。ためしに$" = ":" とかやってみると良いよ。
こういう特殊変数はラクダ本に全部載ってるし、やっぱラクダ本買うべし。

417 :名無しさん@お腹いっぱい。:2001/08/14(火) 08:23 ID:GO0JN5uY
/を
クエリーストリングで扱う方法ってないですか?
/もクエリーストリングとして扱いたいのです

418 :417:2001/08/14(火) 11:24 ID:GO0JN5uY
すんまンソ
できた。っていうか勘違い

419 :名無しさん@お腹いっぱい。:2001/08/14(火) 14:51 ID:???
クエリーストリングという表現を初めて見た。
いや別に間違っちゃいないけどね…。

420 :KENT-WEB:2001/08/14(火) 16:03 ID:???
    /   ̄  \
  /    イヤー笑った笑った
KENT-WEBのギャグは素晴らしい
簡単なスクリプトを複雑に記述し
一見難しいスクリプトに見せかけている\
  /     ⌒  ⌒  |
 |      (・)(・)  |
 |   三  ○  三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |     ___  |  < hello world!からやりなおせ。
  |\   \_/ /    | サイトのパーミッション777にしろ。
  \ \___//     \_________
   \_/  \/
     |==|
      \Ω/
死ね・くたばれ・消えろ・失せろ・潰れろ・馬鹿・あほ・間抜け。ドジ・ 無能。

421 :名無しさん@お腹いっぱい。:2001/08/14(火) 16:07 ID:???
誤爆かよぅ・・・・ -_-

422 :名無しさん@お腹いっぱい。:2001/08/14(火) 17:38 ID:xRewybvc
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=997612896
で訊くよりもここにこいと言われました。
f2sでGDモジュールを使いたいのですが、
モジュールってインストールする必要があるんですよね?
>telnet.cgi かなんかを使って自分のスペース上でインストールする。
>次に、GD モジュールについて同じことをする。
と教えられたのですが、telnet.cgiはどこで配布されているのですか?

423 :名無しさん@お腹いっぱい。:2001/08/14(火) 17:52 ID:???
http://www.catkk.co.jp/gu/telnet/
これか?

424 :名無しさん@お腹いっぱい。:2001/08/14(火) 18:09 ID:xRewybvc
>>423
ありがとうございます。
使い方が分かりません。書いてある通り
アップロードしてタイトルの「$ownhost」というようなのを
CGIファイルの「$Host」に設定し再アップロードしましたが、
そこからがわかりません。手順を簡単にで結構ですので、
説明していただけませんか。

425 :名無しさん@お腹いっぱい。:2001/08/14(火) 19:46 ID:???
gethostbyしてないから$ownhostにhostが入ったりipaddressが
入ったりする、F2sは使ったこと無いからわからんから
論理行の13行目を
$Host = $ENV{'REMOTE_HOST'}; にしちゃえ

後は上の方の設定をちゃんとして、作業が終わったら
*****速攻で*****削除する事だ
ccが使えないとか言うなよ

426 :UUDH:2001/08/14(火) 20:38 ID:???
>>416
はぅっ、まだ間違えてる、、、思いっきり特殊変数じゃん、、、
いつも @aray = ('1','2'); とかしてるんで 勝手にデフォルトのバウンダリは
コンマだと思い込んでたのがいけなかったみたいです。
>やっぱラクダ本買うべし。
了解!! まだ持って無いけど他の皆さんにも推奨  (わ
サンキューです。

427 :名無しさん@お腹いっぱい。:2001/08/14(火) 20:39 ID:???
今、掲示板のデータファイルから、
画像URLを読み込んで画像を表示させてるのです。
決まった縦横サイズの画像だけを表示させたいのですが、
何か画像情報を取得する方法はありますでしょうか?

428 :名無しさん@お腹いっぱい。:2001/08/14(火) 22:20 ID:???
>>427
画像のフォーマット調べれば取得できるけど。

まあ、面倒ならこれ使うとか。
http://www-power.net/cgi/other/library/stdio/reference/
の getImageSize()

429 :名無しさん@お腹いっぱい。:2001/08/14(火) 22:25 ID:???
そのものズバリImage::Sizeがある

430 :名無しさん@お腹いっぱい。:2001/08/15(水) 00:56 ID:???
>>416 >>426

特殊変数なら perlvar に全て書いてあるし、
邦訳青ラクダ本って内容が5.003の頃のだから古い。
ラクダ本に書かれている事は同じ内容でドキュメントにも書かれてる。
そのドキュメントの邦訳も存在する。

これでも推奨?

431 :名無しさん@お腹いっぱい。:2001/08/15(水) 01:14 ID:???
>>430
> そのドキュメントの邦訳も存在する。
どこの事ですか?

432 :名無しさん@お腹いっぱい。:2001/08/15(水) 01:30 ID:avupzYrQ
>>431
http://www.att.or.jp/perl/man/
こことかじゃない?
でも、自分で、探してよ・・・。

433 :名無しさん@お腹いっぱい。:2001/08/15(水) 01:58 ID:???
Perl5.6.0ベースのドキュメントの邦訳があれば折れは要らんかな。
でも紙とWebページじゃ読みやすさが全然違うので初心者には奨励する。

434 :427:2001/08/15(水) 02:31 ID:???
>>428 >>429
ありがとうございました。
getImageSize() を試してるのですが、pngの情報だけ読めず・・・.
どうしてなのか? うう。

435 :名無しさん@お腹いっぱい。:2001/08/15(水) 02:53 ID:???
>>432
御免なさい。一応確認したかったもので。

436 :名無しさん@お腹いっぱい。:2001/08/16(木) 11:13 ID:Z9iCsVz2
ご教授お願いいたしたく。

open関数で取得できるファイルリストの件数に上限はあるのでしょうか?
ファイル数が4000ちょっとまでなら取得できるのですが、それ以上存在する場合、
ファイルハンドルには空が返ってくる模様…
もし上限があるとするならば、どのように対処するのが吉でしょか?
よろしくお願いいたします。

437 :名無しさん@お腹いっぱい。:2001/08/16(木) 11:15 ID:Dm7Pm6YQ
すみません。初心者質問です。
無名配列ってなんなのかいまいち掴めません。。
それにどんな事に使ったら有効か教えてください。。
お願いします。

438 :名無しさん@お腹いっぱい。:2001/08/16(木) 13:08 ID:Z1NIPYXE
$abc_ref = ["a", "b", "c"];
とすれば、スカラー変数に無名配列のリファレンスが保存でけるでそ?
でさ、普通配列ってさ、(("a", "b", "c"), ("d", "e", "f"))みたく単純には階層化できません。
厳密に言うとスカラー値しか入れられないからね。
さっきの $abc_ref を使えばそれが出来るようになるってわけさ。
無名配列や無名ハッシュを使えば多重構造の変数が出来上がります。

439 :名無しさん@お腹いっぱい:2001/08/16(木) 15:43 ID:.lon33X.
任意日付から曜日を求めるにはどうしたらいいですか?

440 :名無しさん@お腹いっぱい。:2001/08/16(木) 15:58 ID:???
>>439
「日付 曜日 公式」とかで検索したらわらわら出てくるぞ。聞く前に自分で調べようね。

441 :T女の竹田:2001/08/16(木) 16:00 ID:???
>>439
timelocal(Time::Local)とlocaltimeにかけるといいよ。

442 :名無しさん@お腹いっぱい。:2001/08/16(木) 22:54 ID:???
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃  ただいま、ラウンジで大盛り上がりのブラウザ戦争ゲーム! .  ┃
 ビビー       ______________
 [>>8888888  ‖|*ENDLESS BATTLE@2ch*|‖      . \冂/
           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄     . E´∀` ヨi /7
 逝って良し!を発動。   . ミ从、;、;从 彡   ボシュッ .())  「/~'ー'~~ 7/ ̄ |
  ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ http://wwwwwwwww  ===二]匚ト〈‐〈iテ〈〈c iエコ
    ∧ ∧ [》∞∝     彡゙ ゙/;´ミ  ∧∧∧∧      []v/□ || ╋|
  冂(,,゚Д゚) ウマー   ボンッ | |(*゚Д゚)| <覚醒中!>     | j | |.|| ┃|
 | ̄\つ∧二ヽ       ∩ >->_>->_<要塞に  >    几0(几)L二!
 \_匚i_|∪∪i]      ((_(∴ヽヽ\(∴|当たる!>   ∠三ヲ/i二iヽ
   \_/二/  〜〜 /oヽヽ ,>─>ヽ ∨∨∨∨    __∧___
  [》∞∝         く。◎◎)=)__/)=)    ψ ζ     させるかあ!
                  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  恨み!復讐!英雄の誕生!生身の人間とのどろどろした戦闘!  ...

http://corn.2ch.net/test/read.cgi?bbs=entrance&key=997943180 .┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

443 :名無しさん@お腹いっぱい。:2001/08/16(木) 23:01 ID:/rmEQXZ6
分岐して文章返す関数で、いちいち$ret .= 'ABC'; return $ret;ってやるのがめんどうなので、
print 'age'; print 'sage';
とやって
$buffer eq 'agesage';
にすることはできますか? できるならやりかた教えてください。
やりたいことは、printとか短い文での変数への書き込みです。

>>436 当方初心者ですが、システム依存のような気がします。
何やろうとしてそんなにファイル開くんですか?

444 :名無しさん@お腹いっぱい。:2001/08/17(金) 00:53 ID:???
>>443
全然意味ワカンナイですけど。
print $buffer .= "age";
とか云うことじゃないよね?

445 :名無しさん@お腹いっぱい。:2001/08/17(金) 01:06 ID:???
IO::Scalarというモジュールで
$foo = new IO::Scalar;
$foo->print("bar");
$foo->print("baz");
print $foo;# output "barbaz"
という書き方が出来る。

446 :名無しさん@お腹いっぱい。:2001/08/17(金) 01:14 ID:???
>>443

#!/usr/bin/perl

package ScalarHandle;
use base 'Tie::Handle';

sub TIEHANDLE {
my $self = bless {}, shift;
$self->{_ref} = shift;
$self;
}

sub WRITE {
my ($self, $scalar, $len, $ofs) = @_;
my $_ref = $self->{_ref};
$$_ref = join '', $$_ref, $scalar;
$len;
}

package main;

my $buffer = '';
{
tie local(*H), ScalarHandle => \$buffer;
use SelectSaver;
my $saved_h = SelectSaver->new(\*H);

print 'hoge', 'foo';
}
print $buffer;

__END__

447 :名無しさん@お腹いっぱい。:2001/08/17(金) 01:51 ID:???
余談だがIO::Scalarも
tie *Handle, 'IO::Scalar';
という使い方が可能だ。

448 :443:2001/08/17(金) 03:13 ID:???
ありがとうございます。 勉強になります。
>>445 あ、けっこうズバリなモジュールがあったんですね。
>>446
 むつかしくて読むのにだいぶ時間かかりましたが、なんとなくわかりました。
ファイルハンドルを上書き実装して、バッファの後ろに足していってるんですね。
>>447 こういうふうに使うと、多分4行くらいでできますね。

>>436
 モジュール調べてたらこんなの見つけた。
>FileCache:システムの制限よりも多くのファイルをオープンします
http://www.kt.rim.or.jp/~kbk/perl5.005/perlmodlib.html#Standard_Modules

449 :名無しさん@お腹いっぱい。:2001/08/17(金) 05:29 ID:???
モジュールを試してみたのですがエラーが出てしまいます。

use CGI qw/:standard/;;
これを書いてやって、同じディレクトリにCGI.plを入れてみたんですが・・。
ちなみにWin98のHttpdです。

450 :名無しさん@お腹いっぱい。:2001/08/17(金) 13:59 ID:???
CGI.plってはじめて聞いたけど、どこから入手したの?
あと、.plだからrequireじゃないかなぁと思われ(w

451 :名無しさん@お腹いっぱい。:2001/08/17(金) 18:13 ID:f5KMH1QY
IISのサーバーでのトラブルなのですが、
自社IISサーバーで動いたCGIをクライアントのIISサーバーに移したら
書き込み処理だけができなくなってしまいました。
サーバーはエラーメッセージをださないので、サーバー側の設定で書き込み制限が
かかっているということは考えにくい状況です。
原因はどのようなものが考えられるでしょうか?
クライアントのサーバーを直接いじらせてもらえなくて、原因を特定しないと
解決できない状況で困っちゃってます。
よろしくお願いします。

452 :名無しさん@お腹いっぱい。:2001/08/17(金) 18:43 ID:Oy6kpATQ
<input type=file name="upfile">
でローカル側からテキストファイルをサーバへアップロードさせるようなスクリプトは
どうしたら宜しいのでしょうか…?

453 :名無しさん@お腹いっぱい。:2001/08/17(金) 18:48 ID:???
>>451-452 Perlの話ではないと思われ。スレ違い

454 :名無しさん@お腹いっぱい。:2001/08/17(金) 18:50 ID:???
まぁまぁ
>>451
よく解らないけど Kcatchとかで解らないの?

455 :名無しさん@お腹いっぱい。:2001/08/17(金) 18:52 ID:???
ああ。。アンタッチャブルなのね (;´Д`)
逝ってくる

456 :名無しさん@お腹いっぱい。:2001/08/17(金) 19:25 ID:f5KMH1QY
>>
すみません。
他の適切なスレはどれでしょうか?

>>454
文法にはとくに問題ないようです。

457 :名無しさん@お腹いっぱい。:2001/08/17(金) 19:28 ID:k3HSgI6s
PerlそのものではないがWebプログラムには関係するだろうってことで。

>>452
まあこんな感じで送れるはず

<FORM ACTION="CGIPATH" METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="upfile" SIZE="80">
</FORM>

458 :名無しさん@お腹いっぱい。:2001/08/17(金) 20:42 ID:HfJszqSo
Linuxを使っているのですが、自分のマシンでの
CGIの動かし方がわかりません。
Apacheを使うのですか?

459 :JAPU:2001/08/17(金) 20:51 ID:???
>>458
まずは、その辺で入門書を買ってくるのが吉かと。

460 :458:2001/08/17(金) 20:53 ID:HfJszqSo
あってもWindowsばっかでしょ。簡単なことなんだから
もったいぶらないで教えてください

461 :名無しさん@お腹いっぱい。:2001/08/17(金) 21:04 ID:???
CGIを動かすのにApacheを使います。
確かにYes/Noを答えるのは簡単だね。
あと、Perl != CGI なのでスレ違い。

462 :名無しさん@お腹いっぱい。:2001/08/17(金) 21:23 ID:oQcz5Ykw
sfioでperlコンパイルした人感想をお願いします。

463 :名無しさん@お腹いっぱい。:2001/08/17(金) 21:50 ID:???
>あってもWindowsばっかでしょ。簡単なことなんだから
簡単なことなら質問しない。
あっごめんネタか(藁

464 :452:2001/08/17(金) 21:56 ID:Oy6kpATQ
そうですね。PerlでCGIスクリプト組んでいるものですから...
スレ違いすいません。

465 :JAPU:2001/08/17(金) 22:14 ID:???
少し大きな本屋にでも行けばUNIX/Linuxの本くらいいくらでも売ってます。
yes/no で答えるのは簡単だけど、どうせ次は「Apache の設定が分かりません。」とかいう質問が来るだろうからね。だから、入門書を1冊買って、ある程度 (完全にとは言わない) 理解してくださいってこと。

466 :名無しさん@お腹いっぱい。:2001/08/17(金) 23:40 ID:HfJszqSo
Apacheについては勿論Linux系サイトで調べます。
ここはスクリプトでプログラマ気取りのが多いですから(^^;

467 :さげ:2001/08/17(金) 23:58 ID:???
>>466はあおりバカ厨

468 :名無しさん@お腹いっぱい。:2001/08/18(土) 00:00 ID:???
>>458
1.回線を切ります。
2.ロープを用意します。
3.ロープの片端で30cm程度の輪っかをつくります。
4.ロープの逆端を適当な高さにつるします。
5.輪っかに首を引っ掛けてください。

469 :名無しさん@お腹いっぱい。:2001/08/18(土) 00:11 ID:???
>>
漏れもそれが一番手っ取り早いと思う。
精進しろよ>>468

470 :469:2001/08/18(土) 00:12 ID:???
ちゃう
最初の>>が>>468で後のが>>458

471 :名無しさん@お腹いっぱい。:2001/08/18(土) 00:23 ID:???
>466
Perl=CGIと思ってる厨房は逝ってよし!
「CGIだけど、なんか質問ある?」ならきちんと答えたよ。

472 :名無しさん@お腹いっぱい。:2001/08/18(土) 01:44 ID:???
つーか Perl も C++ も似たようなもんだ。
文法や仕組みが少し違うくらいで。
言語に差があるとか思ってるヤツの方が痛い、と思うぜ (´ー`)y−~

473 :名無しさん@お腹いっぱい。:2001/08/18(土) 01:53 ID:FWE7cxsw
win2k+activeperl+apacheの環境でCGI作ってるんですが、
作成中、無限ループしちゃった場合、どうやって止めるんですか?
タスクマネージャーで、perlのプロセスを終了させようとしますが、
「権限がない」とかなんとかで、終了が出来ません。
結局再起動するはめになってしまいます。

何か、強制終了させる方法はないんでしょうか?

474 :名無しさん@お腹いっぱい。:2001/08/18(土) 05:52 ID:???
>472
と思っているならプログラム板のC++のところにいってPerlもしくはCGIの
質問して下さい。ここには二度と来なくていいよ。

C++のスレにWindowsの環境のことなんか聞かないよね?それと同じ事。
専用のスレがきちんとあるのに、それが解からないのが厨房だって言ってるの。

475 :名無しさん@お腹いっぱい。:2001/08/18(土) 06:17 ID:???
>>474
いや>>472はどーみても>>466の煽り(?)に反応してるだけだと思うが…

つか前半と後半の文が繋がってないぞ。

476 :なんと言うか:2001/08/18(土) 06:33 ID:???
酷いな・・・・・

477 :質問スレで:2001/08/18(土) 08:06 ID:???
議論すんなよ

478 :名無しさん@お腹いっぱい。:2001/08/18(土) 15:18 ID:???
皆さんは全ての変数を宣言しますか?

#!/usr/local/bin/perl

$hoge = 0;
&hogege;

sub hogege{
 print "hoge";
 exit;
}

って感じの時、ちゃんと

my hoge = 0;

って風にするかどうか。

479 :名無しさん@お腹いっぱい。:2001/08/18(土) 15:19 ID:???
ああっ、$ が抜けてる…ミス。

480 :名無しさん@お腹いっぱい。:2001/08/18(土) 16:02 ID:DQB0LabM
>>478
初期値は 0 か 空文字列だから、>>478 のような宣言はしないよ。
変更する必要があったら適宜初期化すればいいことだと思う。

481 :別の初心者:2001/08/18(土) 16:12 ID:???
では、他の言語の様に初期化忘れで嵌るシーンとは
どういった局面でしょうか。
まだそんな事気にする事ないのかな。。

482 : :2001/08/18(土) 16:51 ID:58tnIP9Q
そもそもグローバル変数使う事はほとんどない。

483 :JAPU:2001/08/18(土) 16:53 ID:???
変数名 typo したときはまるねぇ。
使い捨て以外は use strict; なのできちんと宣言する。

484 :名無しさん@お腹いっぱい。:2001/08/18(土) 18:38 ID:???
んーとねぇ、use strict; で動かしたい時以外は特に宣言しない。

#!/usr/local/bin/perl

$hoge = 0;

&hogeho;
&hogege;

sub hogege{
 print "$hoge";
 exit;
}

sub hogeho{
 $hoge++;
}

って時はそのまま。
でもラクダ本ではきちんと全部宣言してたような気がする。

485 :名無しさん@お腹いっぱい。:2001/08/18(土) 18:39 ID:???
あ、サブルーチン内でしか使わないことが解ってる変数はちゃんと宣言するよ。
れきしかるマンセー

486 : :2001/08/18(土) 18:55 ID:58tnIP9Q
整数入れるときは
our $hoge = 0;

our $iHoge;

文字列のときは
our $hoge = "";

our $sHoge;

にしてる。

487 :名無しさん@お腹いっぱい。:2001/08/18(土) 19:01 ID:???
素材屋(って言って良いのかは知らんが)とかで配布してる掲示板とか、
上の方に設定項目がずらーっと並んでるじゃない。

$script = "./script.cgi"; #このスクリプトのパス
$backcolor = "#ffffff"; #背景色
$textcolor = "#000000"; #文字色

って感じで。
そういうスクリプトを組む時はどうする?

488 :奈々資産:2001/08/18(土) 19:13 ID:58tnIP9Q
全部スクリプトと分けて設定ファイルを別にしてる。
-----
P_SCRIPT=./script.cgi
C_BACK=#ffffff
C_TEXT=#000000
-----
のようなKey=Value形式のWindowsのINI形式に似たような設定ファイル
の処理するクラスを作っておいて

my $obj_conf = new CIni(FILE => $file_conf);
my %USR_CONF = $obj_conf->ReadAll();

みたいにしてる。

489 :486:2001/08/18(土) 19:15 ID:???
他のHN入ってた

490 :名無しさん@お腹いっぱい。:2001/08/18(土) 19:17 ID:???
単純に pl ファイル作って require で読み込んでも良い気はするな。

491 :名無しさん@お腹いっぱい。:2001/08/18(土) 19:17 ID:???
うーん、俺もそんな感じ。
でももっと適当かな。
my %conf = ReadCofigureFile($filename);
だね。
$conf{BGCOLOR} とかでアクセス。

492 :名無しさん@お腹いっぱい。:2001/08/18(土) 20:37 ID:???
#init.pl
%CONFIG = (
foo => "bar",
);
#EOF
としてrequireするな。
%CONFIGはvarsなりourなりで宣言しておく。
とりあえず何か理由が無い限り必ず宣言するよ。

493 :別の初心者 :2001/08/19(日) 00:27 ID:???
なるほどー、勉強になりますー、
サブルーチンとかクラスを使いこなせる様に
なればその辺の悩みとは無縁になるのかな。
悪い癖が付くと後で大変かなとおもったんで
でもstrict とか -wcすると五月蝿いからなぁ  サササッ(((((^ ^ )

494 :名無しさん:2001/08/19(日) 12:38 ID:FfPXw2rY
過去ログ検索しましたが、該当する内容がなさそうだったので質問させて頂きます。
フリーのCGIをアップして利用しようとしていたところ、どうしてもサーバーエラー
になります。
telnetで実行すると、正常に返ってくるのですが…。
今までこのような現象に遭遇したことがなかったので、どうしたらいいか困ってます。
よろしくお願いします。

495 :名無しさん@お腹いっぱい。:2001/08/19(日) 13:00 ID:???
>>494
CGIスクリプトの名前くらい書いたらどうだ。
とりあえずKCatch.pmでも使っとけ

496 :名無しさん@お腹いっぱい。:2001/08/19(日) 13:48 ID:qKl.cEXQ
日付のデータをyyyymmddの形式で持ってるとして
(例20010101)これの翌日とか前日を簡単に
求める方法ってないですか?
いろいろやってみたんですが、なかなか
すっきりしたスクリプトにならなくて悩んでます。

497 :名無しさん@お腹いっぱい。:2001/08/19(日) 14:08 ID:Mz6GQnDY
Date::Calc を使えばラク。

use Date::Calc qw(Add_Delta_Days);

$date = 20010101;
$delta = -1; # 一日前を求める。
@date = ($date =~/(\d{4})(\d{2}(\d{2}/);
@newdate = Add_Delta_Days(@date, delta);
$newdate = join '', @newdate;

498 :497:2001/08/19(日) 14:09 ID:???
あ、間違えてる。
@date = ($date =~/(\d{4})(\d{2})(\d{2})/);

499 :496:2001/08/19(日) 22:38 ID:Oo9DGM7o
467さんありがとうございます。
自分でも調べてみたらTime::Local
っていうのもありました。
(こっちは手順がちょっと複雑になりそうですが)
Date::Calcが標準モジュールだったら、
こっちの方が楽そうですね。助かりました。

500 :名無しさん@お腹いっぱい。:2001/08/20(月) 10:04 ID:..QkqNpI
sendmailを使って一括送信する時に負担を分配するように
数回に分けて送信するようにしたいのですがどのようにしたら良いのでしょうか?

501 :名無しさん@お腹いっぱい。:2001/08/20(月) 11:03 ID:???
>>500
そのようにしたら良いんじゃないでしょうか。

CGIで[最大100件の送信者リスト]*nを作成→cronで送信

502 :名無しさん@お腹いっぱい。:2001/08/20(月) 19:36 ID:???
cronじゃなくatのほうがベターでしょ?

503 :名無しさん@お腹いっぱい。:2001/08/20(月) 20:26 ID:???
ネタですか?

504 :500:2001/08/20(月) 23:50 ID:..QkqNpI
>>501
cronが使えないサーバーでやる方法は無いでしょうか?
やっぱり手動で数回に分けて送信するしかないのかな〜

505 :名無しさん@お腹いっぱい。:2001/08/21(火) 00:07 ID:???
>>504
手法はいくらでもあるけどね。
CGIの話なんですか?
それなら、一定時間ごとにCGIが走れば良いわけだから....(略)

506 :500:2001/08/21(火) 00:40 ID:6E4T9QSc
>>505
どのような方法ですか?初心者向けの簡単な方法の仕組みを教えてください

私が思いつく限りでは

データファイルか何かに起動する時間を書いておく
その時間を過ぎていたら起動させるようにするスクリプトを組む
それをカウンターか何かのアクセスが多いCGIに組み込む

とりあえずこんなのしか思いつかないんですけど
これだとあまりにも中途半端すぎるんで 良い方法を教えてください

507 :名無しさん@お腹いっぱい。:2001/08/21(火) 00:56 ID:???
>>506
それでも良いし、常時接続な環境なら自動リロードさせても
良いんじゃない?

というか、CGIでやるの止める方向でいきませんか?
# CGI-MLの過去ログで検索すると腐るほど情報あるよ

508 :500:2001/08/21(火) 03:05 ID:6E4T9QSc
あともう一つ質問なんですけど
1000人分くらいのメンバー情報を扱う時
一つのデータファイルにまとめて入れるのと
一人づつデータファイルを1000個つくるのではどちらが負担は少ないのでしょうか?
なおデータへの書き込みは頻繁に行われます
できれば一覧表示も行いたいと思います

509 :名無しさん@お腹いっぱい。:2001/08/21(火) 06:24 ID:???
>>508

Benchmarkモジュール使って自分で計ってみたら?

510 :名無しさん@お腹いっぱい。:2001/08/22(水) 01:09 ID:GFNp99PM
自己解凍する日本語パール(w32)ってあります?

511 :名無しさん@お腹いっぱい。:2001/08/22(水) 01:42 ID:???
>>510
意味が分からない

512 :名無しさん@お腹いっぱい。:2001/08/22(水) 03:37 ID:AkElayo6
perlをインストールしました、cgiの拡張子をplに
に替えファイルをクリックしたところdos画面がでて
直ぐにdos画面が消えました、まだ調整が必要でしょうか
それとも他にインストールするソフトでもあるのでしょうか?

513 :512:2001/08/22(水) 03:40 ID:AkElayo6
IISはインストール済みです。
やっぱApacheをインストールしないと駄目なのかなぁ?

514 :名無しさん@お腹いっぱい。:2001/08/22(水) 03:47 ID:???
>>512
CGIはWebサーバーから起動するからCGIなのです。
perl(スクリプト)だけを利用するときには、DOS窓から使ってください。

515 :名無しさん@お腹いっぱい。:2001/08/22(水) 05:06 ID:pmuXIvEY
またまたなんか問題が、、
アパッチインストールしらC:\*****\*****.***になって機能しない
から注意書き見たらこんな事書いてるのです。でも意味が分りません。。
(注意)以下のテストで、ファイルのダウンロードになってしまう場合は、
エクスプローラのファイルタイプの設定で、MSDOSバッチファイルの
MIMEタイプを text/plain にしてください。

バッチファイルってこれの事かなぁ
C:\PROGRA~1\NETWOR~1\MCAFEE~1\SCANPM.EXE C:\ /boot
@IF ERRORLEVEL 1 PAUSE
@ECHO OFF
PATH=C:\NECUTILS\HDPREP
loadhigh c:\windows\COMMAND\nlsfunc.exe c:\windows\country.sys

PATH=%PATH%;"d:\Program Files\Mts"
SET PATH=c:\PERL\BIN;"%PATH%"

516 :出来た:2001/08/22(水) 05:54 ID:29hOJqFs
Windows2000では、「ファイルタイプ」のデフォルトの状態ではBATファイルは表示されないし、またMIMEの設定がここからはできなくなっている。



BATを表示するには、「ファイルタイプ」の「新規」で「ファイルの拡張子」にbatと入力し、「詳細」をクリックすると、一時的にbatの内容がリストに追加され、内容の確認ができるようになる。しかしbatを絶対に編集してはいけない。終了は「キャンセル」を使う。



batのMIMEをtext/plainに変更するにはレジストリを編集する。レジストリの編集はかなりの危険が伴うので、よく理解していない限り、編集してはいけない。



1.「スタート」「ファイル名を指定して実行」で「regedit」と入力。

2.\HKEY_CLASS_ROOT\*\.bat を選択。

3.右クリックで「新規」「文字列」、Content Type と大文字小文字を一時一句たがえずに入力。ContentとTypeの間は半角スペース。OK。

4.画面の右側で、今新しく作成されたContent Typeを選択し、text/plain と入力。(他のWindowsのように、引用符は付けないこと。"text/plain"と書くのは駄目)

517 :名無しさん@お腹いっぱい。:2001/08/22(水) 06:17 ID:LG5r0RZM
>>516やっぱ駄目
ファイルクリックすると***.plファイルが一瞬開いて閉じるだけ
perlは大丈夫だと思うけど、apacheの設定がおかしいのかなぁ

518 :名無しさん@お腹いっぱい。:2001/08/22(水) 06:18 ID:???
前スレの187以降を読むがよろし。

519 :517:2001/08/22(水) 06:52 ID:YOZd9AOc
読みました、全く同じです。
perl ***.plはしたけど結局どうしたら
クリックでhttpサーバになるのですか?

520 :名無しさん@お腹いっぱい。:2001/08/22(水) 06:58 ID:???
>>519
あんた全然分かってないよ。位置から説明なんてめんどくさいから
http://www.google.com/search?hl=ja&safe=off&q=iis+cgi+perl&btnG=Google+%8C%9F%8D%F5&lr=lang_ja

521 :名無しさん@お腹いっぱい。:2001/08/22(水) 08:02 ID:IsndpGHs
パール・スクリプトを実行する際、
DOSを非表示にする、方法はないでしょうか。
パールで、ツールを作って、ファイラーから、実行
したいのですが、一瞬、表示される、DOS窓が、邪魔で・・・。

522 :名無しさん@お腹いっぱい。:2001/08/22(水) 08:15 ID:???
>>521
通常の2倍時間をかけて瞬きしろ

523 :名無しさん@お腹いっぱい。:2001/08/22(水) 08:30 ID:???
>>522
それは、ちょっと・・・です。

補足ですが、実行する際は、
jperl (スクリプトのフルパス) file1 file2
あるいは、
command.com /c jperl (スクリプトのフルパス) file1 file2
と設定に書いて、キーに割り当てて、使ってるんですけど・・・。

524 :名無しさん@お腹いっぱい。:2001/08/22(水) 09:24 ID:???
>>521
Perlのソースといじって再コンパイルするとか。
具体的にどうすればいいかは全く知らん。

525 :名無しさん@お腹いっぱい。:2001/08/22(水) 12:05 ID:tFrHOLK6
>>521
サーバー立ててブラウザから実行する。

526 :真夏の名無しさん:2001/08/22(水) 12:08 ID:???
>>521
欲しいのはこれかな?
http://www.vector.co.jp/soft/win95/util/se094812.html

527 :521:2001/08/22(水) 12:37 ID:???
>>521
・・・私にも、難しいです。

>>525
それができるだけの金と部屋のスペースが欲しいです。

>>526
違うようです。
今、現在動いてるDOSに対して、そのプログラムを、
起動させて、表示、非表示を選択できますが、
新しく開いて、すぐ閉じるDOS窓に対しては、
できないようです。

528 :521:2001/08/22(水) 12:41 ID:???
上の
>>521
>>522のまちがいです。鬱・・・。

529 :名無しさん@お腹いっぱい。:2001/08/22(水) 12:46 ID:???
文節ごとにカンマ入れてるのは喧嘩売ってるのか? 見ててムカつくんだが。

530 :525:2001/08/22(水) 12:55 ID:tFrHOLK6
>>521
AN HTTPなんてただだし、Win9*、Win2kどっちにも入れれる。
かつすげー簡単に入れれる。CGIの勉強にもなるし適当じゃない?

531 :521:2001/08/22(水) 13:34 ID:???
>>525
ごめん。自分は、パール・スクリプトを
ファイラーの機能追加に使ってみたい。
あるボタンを押したら、マークしたファイルの文字コードを
いっきに変えるとかです。

525でおしえてもらった方法だと、
それには、少なくともサーバーソフト起動させて、
さらに、プラウザを起動させなくてはならないいんじゃ?
だから、それは、ちょっとです。
CGIに興味はありますが・・・。

528のレスは、>>522じゃなくて>>524です。

532 :名無しさん@お腹いっぱい。:2001/08/22(水) 14:30 ID:???
なんだか久しぶりに来たらあっちこっちがDOS窓スレになってる  w
良く解らんけど、pl2batみたいのでpl2exeみたいのがあったんじゃ無い
かな。初心者スレとかに色んなツールがあるよ

533 :名無しさん@お腹いっぱい。:2001/08/22(水) 23:45 ID:lHmfRQBo
>>521
スクリプト自体をbatファイルにしてpifで最小化に設定すれば良いのでは?
ただしwin9Xの場合だけどね・・・

534 :533:2001/08/22(水) 23:57 ID:UjaPBszM
set F1=%1
perl -x %0
goto end

#!/usr/local/bin/perl
$f1 = $ENV{'F1'};
print "$f1 が指定されました。";
__END__

:end

535 :名無しさん@お腹いっぱい。:2001/08/23(木) 00:08 ID:???
>>531
nkf使えば?

536 :521:2001/08/23(木) 00:33 ID:???
>>534
pl2batでスクリプトをbatファイル化して、
プロパティで最小化設定したあと、関連づけ実行して
みましたが、だめでした。プロパティ変更した際、
自動生成されたpifファイルにも、試しましたが同じでした。

>>533
どうもです。
pl2exe気になります。
いろいろ、関連サイト探しまわってみます。

>>535
やりたいのは、文字コードの変換だけではないんです。
htmlファイルにマークしてリンクの抜き出しとか、
いろいろです。

レスしてくれたひと、ありがとうございました。

537 :名無しさん@お腹いっぱい。:2001/08/23(木) 00:55 ID:???
pl2exeって、Perl2Exeのことだよね?
http://www.indigostar.com/perl2exe.htm
DOSプロンプトが出るかどうかは不明。

538 :名無しさん@お腹いっぱい。:2001/08/23(木) 01:08 ID:???
http://www.perl2exe.com/
-gui
を付ければDOS窓出ない

539 :532:2001/08/23(木) 01:39 ID:fZO15JoQ
ドメイン持ってたのか  (^^
試しに僕も使ってみます。
ありがとう、>>537-538

540 :名無しさん@お腹いっぱい。:2001/08/23(木) 02:16 ID:Kp4CzHHk
>>519
>読みました、全く同じです。
>perl ***.plはしたけど結局どうしたら
>クリックでhttpサーバになるのですか?

誰か教えてもらえませんか?

541 :540:2001/08/23(木) 02:18 ID:Kp4CzHHk
パーソナルwebマネージャでの設定は何もしていません

542 :名無しさん@お腹いっぱい。:2001/08/23(木) 02:29 ID:???
>>540
何故誰も答えないかというと、あまりに基本が分かっていないから。
せめてHello worldくらいは出来るようになってから出なおしな。

543 :540:2001/08/23(木) 02:33 ID:04DpFLUM
hello world ってなんですか?ftpでcgiファイルをサーバにアップ
して表示はしました。

544 :540:2001/08/23(木) 02:44 ID:04DpFLUM
アプリケーションマッピングが如何のこのって事かしら。。
でもperlインストールの時するにしてないのかなぁ
基本ってなんでしょうか

545 :名無しさん@お腹いっぱい。:2001/08/23(木) 02:44 ID:???
途中からHTTPD動かないスレになってねえか? ワラ
>>543
何が解らないの?、HTTPD入れて普通のHTML表示してみた?
CGIなんてHTTPヘッダ吐くだけなんだから、取り合えず
コマンドラインで簡単なコード書いてみれ
その聞き方じゃ何処まで行っても上手く行かないと思うぞ

546 :521:2001/08/23(木) 02:48 ID:???
-guiオプションつけても、
評価版(?)らしく、ちっこいダイアログが、
表示されるけど、すっごい役に立ちます。
テキストにスクリプトで処理させると、高速で、
実行してくれます。
DOSで使っても、リダイレクションできるし。
ありがとうがざいました。

547 :名無しさん@お腹いっぱい。:2001/08/23(木) 02:49 ID:???
>>545

同感
質問一つでそいつの天井みえるよな。

548 :521:2001/08/23(木) 02:55 ID:???
546のレスは、
>>537-538にたいしてです。
番号、ミスってばかり・・・。

549 :540:2001/08/23(木) 02:58 ID:04DpFLUM
ドス窓でperl *.plでも、
ウインドウズ上から*.plをダブルクリックでもHTMLを吐き出すだけ
なのです。。

550 :540:2001/08/23(木) 03:02 ID:04DpFLUM
ローカルのhtmlもファイル読みこみだから、httpdの設定かなぁ

551 :540:2001/08/23(木) 03:07 ID:04DpFLUM
HTTPDのファイル開くとC:\apache\readme.htmlになってる
http://127.0.0.1/readme.htmlじゃなくちゃいけないの?

552 :名無しさん@お腹いっぱい。:2001/08/23(木) 03:14 ID:???
まずブラウザのアドレスに
http://loopback/index.html
って入れて表示出来る所まで設定すれ
ここ行って書いてる事全部よんでみ
んで出来たら
http://loopback/hoge.cgi ##超簡単なコード
これを動かす。

あと質問するなら環境書けてば、OSもhttpdもperl実行環境も解らん
のに答えられないって

一応言っとくと普通cgiファイルをダブルクリックして勝手にブラウザが
起動して実行結果が出てくるような設定にはならない、つかWINでは出来ない
WINのファイルタイプ2つ設定出来るなら別だけど

553 :名無しさん@お腹いっぱい。:2001/08/23(木) 03:14 ID:???
>>540
闇雲に試行錯誤するより、それなりのドキュメントを一読してくださいよ。
とりあえずhttpdはまともに動いてるの?
*.plの中身はどんなよ?
>>514 >>542 >>545のレス読んだ?
cgiて何の略か知ってる?

554 :名無しさん@お腹いっぱい。:2001/08/23(木) 03:16 ID:???
ああ、ここ行って ↓
http://www.st.rim.or.jp/~nakata/
他にもHTTPサーバー 自宅 とかで検索すればボロボロ出てくるから

555 :名無しさん@お腹いっぱい。:2001/08/23(木) 03:22 ID:???
WINはファイルタイプ2つ以上設定できるけど無理だと思うなぁ

それはともかく、540さんよ
sage進行でいかんか?
結構邪魔だよ。

556 :540:2001/08/23(木) 03:25 ID:04DpFLUM
>>554
一応そこでhttpの設定はしました。
それ以外はさっぱり分りませんが適当にいじって思考錯誤する
しかないのかな

>>553
*plはウェブサーバー上で機能しています。

557 :名無しさん@お腹いっぱい。:2001/08/23(木) 03:28 ID:???
>>>553
>*plはウェブサーバー上で機能しています。

・・・キミって何歳?
興味あります。

558 :540:2001/08/23(木) 03:33 ID:04DpFLUM
というかあなたの言ってる忌みも他の人と比べて、、

559 :名無しさん@お腹いっぱい。:2001/08/23(木) 03:36 ID:???
>>558
つーかsageで行ってくれよ。頼むから。

560 :名無しさん@お腹いっぱい。:2001/08/23(木) 03:38 ID:???
漏れもさげきぼんぬ

561 :名無しさん@お腹いっぱい。:2001/08/23(木) 03:38 ID:???
だから質問する時字をケチるなってば、色々やってないからそう言う
一行カキコになるんじゃ?
http://127.0.0.*/index.html
C:\apache\index.html
は表示してる内容は同じでもそのプロセスは全然違う、
悪い事言わないからHTMLからやれって、絶対パスでリンク貼って
飛べる様になってからにしろ

562 :名無しさん@お腹いっぱい。:2001/08/23(木) 03:51 ID:???
www.parkcity.ne.jp/~chaichan/bin/qanda.cgi?modefg=9

ここはやさしいよ。
なれあってるけど。
レベルもいまいちだけどやさしいよ。
やさしいよ。

563 :あああ:2001/08/23(木) 03:53 ID:???
/top/
 +---/cgi-bin./
 |      |---counter.cgi
 |
 +---/aaa/
     |---index.shtml

この場合index.shtmlからSSIでcounter.cgiを動かすには
どう記述すればいいの?
ディレクトリって戻れるの?

564 :名無しさん@お腹いっぱい。:2001/08/23(木) 03:56 ID:???
ここも十分やさしいだろ(藁
>>563
../cgi-bin/counter.cgi で良い?

ああー PERLの質問が〜〜

565 :あああ:2001/08/23(木) 04:02 ID:???
>>564
<!--#exec cmd="./cgi-bin/counter.cgi" -->
こんな風に書くみたいなんだけど最初の
ドットは2個連続でいいの?出来なかったんだけど…

566 :521:2001/08/23(木) 04:02 ID:???
試用のほうは、常に、出力になんか、コメントがつくんですね。
でも、役立ちそうだし製品版かってみようかな。
でも、クレジットカードか・・・。

なんか、ながれ、邪魔してすみません。

567 :名無しさん@お腹いっぱい。:2001/08/23(木) 04:10 ID:???
>>565
じゃ絶対パスで、
>ドットは2個連続でいいの?出来なかったんだけど…
この辺でPC初心者板気味の話になりつつあるね

568 :名無しさん:2001/08/23(木) 04:15 ID:???
何か大変だねえ・・・
これで誰かが切れちゃうと不毛な争いになるんだよなあ
頑張れ>答えてる人 ヽ(´ー`)ノ

569 :ANT:2001/08/23(木) 04:18 ID:???
>>あああ
2個連続でいいよ。↓こんな感じ
<!--#exec cmd="../cgi-bin/counter.cgi"-->
ドット2個で「一つ戻る」ってノリです

570 :あああ:2001/08/23(木) 04:29 ID:???
>>569
ドット2個で出来ませんでした。
これ以上聞くと初心者すぎてどっか逝けとか
googleで検索しろって言われるので自力で頑張ります。

>>567>>569 ヒントありがとう

571 :名無しさん@お腹いっぱい。:2001/08/23(木) 05:03 ID:???
この終わり方・・・どうYo?!

572 :名無しさん@お腹いっぱい。:2001/08/23(木) 05:26 ID:???
掲示板で半角カナを使用できるようにするには、
どうしたらよいのでしょう?

573 :名無しさん@お腹いっぱい。:2001/08/23(木) 05:41 ID:???
SJIS以外は受け付けないとかどう?

574 :572:2001/08/23(木) 05:45 ID:???
>>573
レス早くてびっくりしました。
CGIでSJIS以外受け付けないようにすればいいんですね。
調べてみます。
ありがとうございます。

575 :名無しさん@お腹いっぱい。:2001/08/23(木) 06:08 ID:???
いや待て、SJISにコンバートする方法にしろよ。
俺はEUC-JPの方がお勧めだけど。

jcode sjis 変換 ってキーワードで検索してみてくれ。

576 :540:2001/08/23(木) 06:45 ID:???
しつこいようですが、、色々AN HTTP Server のFAQ
検索してしらべましたし、その通りやったのですが
未だに表示しません、こんなに大変なんですか?
っていうか殆どの人は直ぐに問題なく表示されているようですが。。

これって初級ネット向きの質問かな何処に投稿すればいいんだろ、、
それに普通一回設定したら気にも留めなくなるんだろうけど。。

577 :名無しさん@お腹いっぱい。:2001/08/23(木) 07:01 ID:???
>>576
ちょっと、質問したいんですけど、結局どのhttpdをお使いなんですか?

578 :540:2001/08/23(木) 07:07 ID:???
中田さん作です。。

>悪い事言わないからHTMLからやれって、絶対パスでリンク貼って
>飛べる様になってからにしろ
少し真面目に調べたのですが此れと如何関係があるのかなぁ
3年前にHP立ち上げたのですが、なんか重要なことが記憶から飛んだのかなぁ

579 :名無しさん@お腹いっぱい。:2001/08/23(木) 07:15 ID:???
2chもSJIS以外ハネテルでしょ?
これって結構割り切った良い仕様だと思うんだけど。

まぁ、それが嫌なら要はログで複数のコードを混ぜ込ませず一つに統一すればEUCでもSJISでもいいわけだから。
jcode.plのjcode::h2z系を使わない。
jcode::trで全角と半角を置換しない。
jcode::convertの第三引数にzを指定しない。
EUCとSJIS半角カナの区別がつかないほど短い場合もあるので、
getcodeで区別がつかなかったらSJISと決め付けて第二引数に明示的に指定する。
(convertが内部で読んでるgetcodeで区別がつかないと変換しないから)
これぐらいでどうでしょう?

あと、基本だけどJISにはしないこと。

580 :名無しさん@お腹いっぱい。 :2001/08/23(木) 07:28 ID:???
環境書いてって言ってるのに・・・・(;´Д`)
以下WINにAN入れてPERLは入ってるとして勝手に書く
ANを解凍して実行
http://127.0.0.1/readme.html 
が表示出来たら(これが出なかったらおかしい、PC壊れてます)
ANのオプション→一般 でCGIとか全部チェック  w

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

これをroot直下のcgi-binフォルダにtest.cgiとかで保存
http://127.0.0.1/cgi-bin/test.cgi にアクセス

出来ればもう一台PC買って下さいな、それが一番早いと思いますよ。

581 :名無しさん@お腹いっぱい。:2001/08/23(木) 07:33 ID:???
結局パスとかなんだよね、こう言うのって。
404とか言ってくれれば説明も出来るのにねー

582 :名無しさん@お腹いっぱい。:2001/08/23(木) 07:48 ID:???
まぁ、PCを買いなおす必要は無いな。

583 :名無しさん@お腹いっぱい。:2001/08/23(木) 07:55 ID:???
何で/がWINだと\になるの? ややこしい・・

584 :名無しさん@お腹いっぱい。:2001/08/23(木) 07:58 ID:???
気にする必要なしと思われ

585 :名無しさん@お腹いっぱい。:2001/08/23(木) 07:59 ID:???
ある種Part6始まって以来の難問と思われ

586 :580:2001/08/23(木) 08:05 ID:???
>>583
多分仮想ディレクトリとか、ループバック辺りが解ってないと思ったんだ。
だから2台繋いでやれば後の方の問題は関係無くなると思った。
>>583
そんなことココで聞くなー!!(;´Д`)
DOSはCPMってOSのパクリでCPMでは/はコマンドと引数の区切り文字だった
それが途中からディレクトリサポートする様になって仕方なくアホなMSは
バックスラッシュをスラッシュの代わりにした
ところが事もあろうかJISコード策定したオッサン達はバックスラッシュを
消してここに\を入れちゃった訳 その後バックスラッシュはどんどん
エスケープキャラクタになっちゃったりしたから、こんな事になった

587 :名無しさん@お腹いっぱい。:2001/08/23(木) 08:13 ID:???
ふーんそうなんだ  まぁまぁんなに熱くなんなよ>>586  :-)

588 :540:2001/08/23(木) 09:18 ID:???
>環境書いてって言ってるのに・・・・(;´Д`)
>以下WINにAN入れてPERLは入ってるとして勝手に書く
>ANを解凍して実行
>http://127.0.0.1/readme.html
>が表示出来たら(これが出なかったらおかしい、PC壊れてます)
>ANのオプション→一般 でCGIとか全部チェック  w

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

>これをroot直下のcgi-binフォルダにtest.cgiとかで保存
>http://127.0.0.1/cgi-bin/test.cgi にアクセス

何度もやりました、ちょっとした勘違いかとも思い
設定も替えながら幾つか試しました。でも結果は同じ404エラーです。

しつこく訊いたのは自分のPCだけの問題かと認識したかったのです
しかし、みなさんにはご迷惑かけました
ここで自分の固有の問題だと確信しました、っていうかしか
しかありません。
で一つ固有の環境として糞ザクソンネットレコーダーをいれている
のですが、以前物凄い使い勝手の悪さにアンインストールをした
のですがファイルが壊れているらしくアンインストール出来なかった
のでそのままにしているので、主犯はこいつと睨みました。
同じ境遇の人いますか?って居ないよね。
今から強引にアンインストールを実行します、それでAN(HTTPD)
動いたらザクソンのソフトは2度と買いません!

589 :名無しさん@お腹いっぱい。:2001/08/23(木) 09:45 ID:???
結局404かいな  (笑
もしかしてその何タラネットがローカルプロクシとか後omitronとか
入っててトンでも無い所探しに行ってんじゃないだろね
IEの接続オプションの詳細で「このアドレスにはプロクシを使わない」
とか有るからそこに127ほにゃ って入れてみ

590 :名無しさん@お腹いっぱい。:2001/08/23(木) 09:48 ID:???
ていうか今ログ読んでみたけど、FTPでアップしたって何だ????
もしかしてLAN組んで、127ほにゃ でアクセスしてるのか!??

591 :名無しさん@お腹いっぱい。:2001/08/23(木) 09:57 ID:???
わはは、
大変な事になって参りました  (・∀・)
ここの住民は何だかんだ文句言いながらすげえ親切だと思うよ俺は、うん

592 :名無しさん@お腹いっぱい。:2001/08/23(木) 11:38 ID:???
先ず、ディレクトリ構成から行こう。
C:\www にインストールしているとして、オプションのドキュメントルートは C:\www 。
これは何も変えてなければデフォルトで大丈夫だ。

次に、
オプション/一般 → バーチャルホスト → バーチャルホストを使う、
オプション/一般 → 一般 → HTTPサーバ機能、
オプション/一般 → 一般 → バーチャルホスト、
これらにチェックを入れる。

んで、とりあえず http://127.0.0.1/readme.html にアクセス。
…これで何も表示されなかったら俺には何もアドバイス出来ない。

あぁ、そういえば http://127.0.0.1/ にアクセスした時はどうなる?

593 :名無しさん@お腹いっぱい。:2001/08/23(木) 12:05 ID:???
404なら出て行け(w
結局ANのファイル全部見えてないんじゃんか (呆
それでcgiが動かないってreadmeもFAQも読んで無いからだって
もう一回一から見直しなよ

594 :名無しさん@お腹いっぱい。:2001/08/23(木) 15:05 ID:R1XxEp52
kentwebのスクリプトを参考に独学でCGIを学んだものです。
よくここではkentのスクリプトは糞とか重いとか書かれていますが
どこらへんが糞で重いのでしょうか?
1つここで学んだことはログから出力するときは
open (IN,"$logfile");
@log = <IN>;
foreach (@log) {
}
ではなく
open (IN,"$logfile");
foreach (<IN>) {
}
の方がサーバーへの負荷が少ないということです。
他にもkentのここは駄目だ。こうした方が軽くなるということがあったら教えてください。
kentの真似ごとから一皮むけたいのです。

595 :名無しさん@お腹いっぱい。:2001/08/23(木) 15:17 ID:???
> open (IN,"$logfile");
> foreach (<IN>) {
> }

Afo?
まぁ前者より僅かながら早いかもしれんが…。
とりあえず貴方はまだKENTに真似事でもしていてください。

596 :sage:2001/08/23(木) 15:29 ID:5IP6et1k
0001〜1000ぐらいまでの4桁の数字があって、
これを表示するときには頭の0を削除したいのです。
例) 0001 -> 1
0053 -> 53

$value = '0001';
$value =~ s/^(000|00|0)//;

もっとエレガントな方法ないですか?

597 :名無しさん@お腹いっぱい。:2001/08/23(木) 15:35 ID:lw4Nr9lI
>>595
あんたアホか?
万単位になったときははるかに前者より効率良いぞ。
たいした知識も無いくせに煽るな。糞が。だったら実例出してみな。

598 :名無しさん@お腹いっぱい。:2001/08/23(木) 15:47 ID:???
>>596
$v =~ s/^0*//;

599 :596:2001/08/23(木) 15:53 ID:5IP6et1k
>>598
おお!なるほど。
こういうときに*つかうんですね。+でもいけそうですね。
どうもです。

600 : :2001/08/23(木) 15:56 ID:???
・巨大な配列はつくらない。

601 :名無しさん@お腹いっぱい。:2001/08/23(木) 15:58 ID:???
>>596
$value = $value+0;

602 :奈々資産:2001/08/23(木) 16:00 ID:???
>>596
$value += 0;

603 :596:2001/08/23(木) 16:04 ID:5IP6et1k
>>601
そんなこともできるんですね!確かになります。
これは演算することで文字列から数値にキャストされる
ようなことと考えていいんでしょうか?

604 :名無しさん@お腹いっぱい。:2001/08/23(木) 16:16 ID:???
>>603
そうです。
演算することで、パールのほうで、数値型にかえてくれます。
ただ、暗示的やりかたは、横にコメントも入れたほうがいいような気がする。

605 :596:2001/08/23(木) 16:28 ID:5IP6et1k
>>604
なるほど、勉強になりました。エレガントさでいくと
602さんのが簡潔ですね。コメントも入れるようにします。
どうもありがとうございました。

606 :名無しさん@お腹いっぱい。:2001/08/23(木) 17:27 ID:???
>597
open (IN,"$logfile");
while (<IN>) {
}

じゃない?

607 :名無しさん@お腹いっぱい。:2001/08/23(木) 17:29 ID:???
>>598
何故かウチのローカル環境だとエラー出るから一々
$v =~ s/^(0*)//;
とか括弧付けてるよ…

608 :名無しさん@お腹いっぱい。:2001/08/23(木) 17:40 ID:???
今パッケージを作ろうとしてるのですけど
いろんな解説書によるとパッケージ名::関数 で呼ぶようになってますよね
でも公開されてるスクリプトなどが&jcode'convertみたいにそのまま関数名で
呼んでるのは何故ですか?

609 :572:2001/08/23(木) 17:42 ID:???
>>575
>>579
ありがとうございます!
な、なんか難しそうですね…。

方法としては、
・SJIS以外受け付けないようにする
・SJIS(EUC-JP)にコンバートする
・ログでコードを一つに統一する
のどれかということでしょうか?
頑張ってみます。

610 :奈々資産:2001/08/23(木) 17:58 ID:h9wrQ49Q
>>608
&jcode'convertなどは普通のサブルーチンとして呼び出しているからです。
パッケージ名::関数の方はその"パッケージ名::関数"クラスの
インスタンスを生成して、生成されたオブジェクトに属するメンバ
関数(メソッド)として呼び出すからです。

611 :名無しさん@お腹いっぱい。:2001/08/23(木) 18:05 ID:???
>>610
オイオイそれは違うゾ。
どっちもただの関数呼び出しだよ。まったく一緒。
ただPerl4のパッケージデリミタがシングルクォートなだけ。

612 :名無しさん@お腹いっぱい。:2001/08/23(木) 18:12 ID:pz5WVy56
>>610
ありがとうございます

でも普通のサブルーチンとして呼ぶ方法と
パッケージの関数として呼ぶ方法の違いはなんでしょう?

test.pl 内に

package test;
sub test1{〜略〜}
return 1;

としてて呼ぶほうのスクリプトで
$test = 'test.pl';
require $test;
test::test1($a);

というようなことをしててもエラーがでて困ってます

613 :612:2001/08/23(木) 18:17 ID:???
ええ?混乱してきた・・・

614 :名無しさん@お腹いっぱい。:2001/08/23(木) 18:18 ID:???
>>612
それで問題ないはずだけど。
perlのバージョンは?

615 :名無しさん@お腹いっぱい。:2001/08/23(木) 18:20 ID:h08Ccr32
多分610さんはpackageでクラスを作成してオブジェクトメソッド
として呼び出す方法として説明したんじゃないんだろうか。

616 :612:2001/08/23(木) 18:26 ID:???
>>614
5です
jcodeやmimewなどはそのまま関数名で呼んでるんですよね(他の人が配付してるのを見ると)
で、612の方法でやってみても&で呼んでみてもエラーなんですよね・・・
関数自体は今まで同じファイル内にあったもので問題なく動いてたんですけど

もう少しいろいろ試してみます

617 :611:2001/08/23(木) 18:34 ID:???
>>615
どう贔屓目にみてもそうは取れないでしょ。
オブジェクトメソッドなら、
convert jcode () か、 jcode->convert()
だけど、jcode.pl はオブジェクト指向じゃないしね。
単に、関数呼び出しとメソッド呼び出しの区別がついてないだけと思う。

>>616
エラーがなくなるまでスクリプト削ってみれ。
とりあえずこれでもエラー出るの?

#test.pl
package test;
sub test1{ print 'This is test::test1()';}
1;

#main.pl
require 'test.pl';
test::test1();
_END__

618 :612:2001/08/23(木) 18:37 ID:???
ホント申しわけない・・・
パッケージ名とファイル名は同じでないといけなかったですか?
同じにしたら::で呼ぶ方法で動きました 御迷惑かけました

(でも&関数名で呼んでる奴との違いがなんなのかさっぱりです)

619 :612:2001/08/23(木) 18:46 ID:???
>>617
私のパッケージは単純に関数が一つあるだけです
jcode.plの関数のように&で呼ぶには何か他に必要なのでしょうか?
(エラーの原因はパッケージ名が部分的に大文字でファイル名が
 全部小文字というのが原因だったようです お手数かけました)

620 :611:2001/08/23(木) 18:52 ID:???
>>618
> パッケージ名とファイル名は同じでないといけなかったですか?
それも関係ない。たぶんどこかに間違いがあったはず。
ファイル名::関数名()とかにしちゃってたんでは?

>(でも&関数名で呼んでる奴との違いがなんなのかさっぱりです)
&test::test1(); でもOKだよ。
&test'test1(); でもまったく一緒。
直後に( があって、その関数名がすでに宣言されていると
perlが関数呼び出しと判断してくれるだけ。
& の有無と、 :: と ' の話は関係ないよ。

621 :612:2001/08/23(木) 19:00 ID:???
>>620
何度もありがとうございます

昔とほほで拾ったものなんですけど
mimew.plにあるmimeencodeって関数を&mimeencodeだけで読んでるんですよね
'も::も無しで
これが何故可能なのかがきになって・・・

622 :611:2001/08/23(木) 19:06 ID:???
>>621
あ、そういうことですか。
これはmimew.plの関数宣言が、
sub main'mimeencode {
とかになってて、mainパッケージの関数を宣言してるから。
Perl5なら、
sub main::mimeencode {
とか書く。

623 :名無しさん@お腹いっぱい。:2001/08/23(木) 19:08 ID:???
横から失礼します、凄く良く理解出来ました、ありがとう(・∀・)

624 :612:2001/08/23(木) 19:10 ID:???
>>622
mainパッケージですか 探りを入れてみます
何度もありがとうこざいました
(チャット化してすいませんでした)

625 :名無しさん@お腹いっぱい。:2001/08/23(木) 19:11 ID:???
いい勉強になった

626 :名無しさん@お腹いっぱい。:2001/08/23(木) 19:41 ID:???
ヒューレットパッカードをヒューマンパッカードと言った、タコは誰ですか?(w

627 :名無しさん@お腹いっぱい。:2001/08/24(金) 01:19 ID:???
>>596

my $value = 0001;
$value = abs($value);
print $value;

これでどうよ?

628 :名無しさん@お腹いっぱい。:2001/08/24(金) 01:46 ID:???
「表示」って文字が「侮ヲ」に化けるんですけど
sift-jisに変換してブラウザに出力してますがこの部分だけ化けます

629 :名無しさん@お腹いっぱい。:2001/08/24(金) 01:53 ID:???
>>628
表示→表\示

630 :名無しさん@お腹いっぱい。:2001/08/24(金) 02:59 ID:???
>>596
sprintf

631 :名無しさん@お腹いっぱい。:2001/08/24(金) 03:02 ID:???
HTTP-User-Agent
以外でブラウザを識別する方法ありますか?

632 :名無しさん@お腹いっぱい。:2001/08/24(金) 03:04 ID:???
>>630
627のほうが効率よいうえ速いと思われ

633 :名無しさん@お腹いっぱい。:2001/08/24(金) 03:05 ID:???
>>631
何故そのような事をお望みで?
それがわからないと答えにくいっす

634 :名無しさん@お腹いっぱい。:2001/08/24(金) 03:13 ID:???
>>633
ええとですね
正確に言うとブラウザ名とOS名を別々に取得したいんです
HTTP-User-AgentだとOS名とかもくっついて来ますよね
このテキストが規則性があれば抽出できるんですけど、俺の頭じゃなんか無理で、、、

何故そんなことをしたいかというと
ブラウザやOSごとに吐き出すHTMLを微妙に代えたかったんです

635 :名無しさん@お腹いっぱい。:2001/08/24(金) 03:18 ID:???
追加

何故微妙に変えたいかというとINPUT TYPE="text"などのサイズが
同じ数字でもブラウザによりばらばらですよね
で、最初はブラウザだけ解れば何とかなると思ったですけど
Macのブラウザで見ると更にサイズが変わるらしく、OSも
と思ったわけです

636 :ちょこら:2001/08/24(金) 03:24 ID:???
>>635
そんなもん、すたいるシートを使うのです。

637 :すたいるしーとと言えば:2001/08/24(金) 03:29 ID:???
ちょこらだYO!!

638 :名無しさん@お腹いっぱい。:2001/08/24(金) 03:31 ID:???
NN4.xはスタイルシート対応してたっけ?
結構ユーザーいるんだよな
6は評判悪くて乗りかえてない見たいだし

639 :名無しさん@お腹いっぱい。:2001/08/24(金) 03:40 ID:???
今思いついたんですけど
Mozilla/4.7 [ja] (Win98; I)
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Mozilla/4.01a [ja] (Macintosh; I; PPC)
Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC)
以外にも組み合わせによりたくさんあるけど

win Macって言う文字列が含まれてるかどうかチェックすれば
OSは判別できるかな?

640 :名無しさん@お腹いっぱい。:2001/08/24(金) 03:42 ID:???
>>638
対応はしてますが何か?

641 :名無しさん@お腹いっぱい。:2001/08/24(金) 03:44 ID:???
それじゃHotJavaユーザがかわいそうだ

642 :名無しさん@お腹いっぱい。:2001/08/24(金) 03:46 ID:???
4.7は対応してたと思うけど4.0xあたりは微妙。

643 :名無しさん@お腹いっぱい。:2001/08/24(金) 04:02 ID:h7Yg7pIw
環境変数の一覧とかどっかありますか?

644 :名無しさん@お腹いっぱい。:2001/08/24(金) 04:19 ID:???
たまに3.01 Goldが飛んできて萎える(藁

>>643
print sort keys %ENV

645 :名無しさん@お腹いっぱい。:2001/08/24(金) 04:24 ID:???
つか、スタイルシートだってブラウザにより表示が狂うじゃん

646 :名無しさん@お腹いっぱい。:2001/08/24(金) 04:25 ID:???
>>645
根本的に話題がずれてます。

647 :名無しさん@お腹いっぱい。:2001/08/24(金) 04:35 ID:???
JavaScriptとCSSで実現するのが宜しいかと。

WEB制作板
http://natto.2ch.net/hp/index2.html

648 :名無しさん@お腹いっぱい。:2001/08/24(金) 06:09 ID:???
鬱だ。朝起きて見たらCGIの話ばっかだ…
やはりCGIとPerlの区別がつかないドキュソが多いのか

649 :名無しさん@お腹いっぱい。:2001/08/24(金) 07:15 ID:???
夏だし。

650 :名無しさん@お腹いっぱい。:2001/08/24(金) 15:21 ID:???
冬から春になると冬眠してた馬鹿が出てくるし
夏になると暑さで頭やられた馬鹿が出てくるし
秋になると食欲の秋で腹壊す馬鹿が出てくるし
冬になると脳みそ凍りついてる馬鹿が出てくる

年がら年中馬鹿ばっかだね。

651 :307:2001/08/24(金) 16:09 ID:???
マァマァ、ちゃんと環境書いて質問すれば後から誘導しやすいし
再利用出来るんだけどねー、
ここは流れゆっくりそうだから、DAT落ちしてないし
ちょっと見たけど、上の方のHTTPDのとか最悪じゃん  :-D

652 :名無しさん@お腹いっぱい。 :2001/08/24(金) 16:10 ID:???
あ、名前消し忘れた  逝って来る・・・

653 :名無しさん:2001/08/24(金) 16:18 ID:???
何っつか  ひでえな
ローカルプロクシがport80でlistenしてたってオチか?
もうcgiでも無いし

654 :名無しさん@お腹いっぱい。:2001/08/24(金) 17:29 ID:???
Webprog板だからCGIの話でいいじゃん

655 :名無しさん@お腹いっぱい。:2001/08/24(金) 17:32 ID:???
>>654
いいけど、スレ違い。

656 :540:2001/08/24(金) 17:46 ID:???
>>592
ザクソンネットレコーダーアンインストール終了して
幾つかの調整してIEがやっと復旧しました、その
>C:\www にインストールしているとして、オプションのドキュメントルートは C:\www 。
>これは何も変えてなければデフォルトで大丈夫だ。

>次に、
>オプション/一般 → バーチャルホスト → バーチャルホストを使う、
>オプション/一般 → 一般 → HTTPサーバ機能、
>オプション/一般 → 一般 → バーチャルホスト、
>これらにチェックを入れる。

はやってます、でもやはり404でした。。今日思ったのですが
インターネットwebマネージャがIISの機能を満足していない
からではないんでしょうか?
やっぱネット初級あたりに質問したほうがいいですか?

657 :名無しさん@お腹いっぱい。:2001/08/24(金) 18:09 ID:???
その聞き方だと何処に言っても解決出来ないでしょう。
IIS??AN入れてるんじゃ無いの?
404って事はserverは見えてるの?
エラーコード位勉強してくれないかな
あきらめた良いと思いますよ。

658 :名無しさん@お腹いっぱい。:2001/08/24(金) 18:17 ID:???
PC初心者板にでも行って
「ホームページが動きません!!助けて!!!!!!」
と言うスレを立てて下さい、すると当然ボコボコに叩かれるますので
そしたら部屋の窓を一杯に開けて「アチョーーー!!」と叫びながら
パソコンを外に投げて下さい。 
ちょっと難しいけど、、、、がんばって!!

659 :653:2001/08/24(金) 18:23 ID:???
>>656
だからオメエOSは何だっつってんだよ 厨房の癖にNTなんか使うな
どうせPORT80なんかに使われてんだろ それは404って言わねえんだよ
ポートとか書いてる所に10000って入れて
http://127.0.0.1:10000/
につなげ 繋いだらそのまま師ね

660 :初心者A:2001/08/24(金) 18:26 ID:???
ぁぅ荒れてるよぅ〜 勘弁してよぅ    (;_;

661 :名無しさん@お腹いっぱい。 :2001/08/24(金) 18:34 ID:???
何処でもいいが
>やっぱネット初級あたりに質問したほうがいいですか?
取り合えずここは出て行った方がいいと思われ。。。。

662 :名無しさん@お腹いっぱい。:2001/08/24(金) 18:51 ID:???
何で荒れるかっつったら質問する側が必要な情報を提供しないからだ。
状況がわからないのに正確な答えが出てくると思うか?

もし、こんな情報は必要無いな、とか思って情報を出さないのであればそれは間違いだ。
何もわからないテメェが必要な情報と不必要な情報を分別できると言うのか?

663 :名無しさん@お腹いっぱい。:2001/08/24(金) 18:59 ID:???
しかも 別に 2ch だから荒れてるワケじゃない
同じ質問の仕方じゃどの ML でも掲示板でも荒れるよ

君には技術の前に正しい質問の仕方と論理的な物事の説明の仕方を
学ぶことをお勧めする

664 :540:2001/08/24(金) 18:59 ID:???
とりあえず出て行きます、osはウィンドウズ98です、
別に切れたりはしませんが、多分だれも分らないんだと思う。
でもパソコンは会社のLan環境で使っていたやつなので
設定が普通と違うせいかもしれません。

665 :名無しさん@お腹いっぱい。:2001/08/24(金) 19:09 ID:???
これだけ聞いて未だに鯖が見えてるのかどうかも解らない
聞き方って一体・・・・・
ログ読むと何人かは真面目に答えようとしていた筈だが

666 :540:2001/08/24(金) 19:21 ID:???
鯖ってhttp/122.0.0.1/の事ですか見えていないと
思うのですが。。

667 : :2001/08/24(金) 19:22 ID:???
迷惑なのでネット初級板にはこないで下さい。
ネット初級板はレベルはどうであれ日本語が正しく使える人が利用する場所です。

668 :名無しさん@お腹いっぱい。:2001/08/24(金) 19:24 ID:???
見えていないからお前は困ってんだろ

669 :540:2001/08/24(金) 19:24 ID:???
間違い122→127です、でもこれは過去に見えていない
と何度も言ってるから違うのでしょうが。

670 :名無しさん@お腹いっぱい。:2001/08/24(金) 19:27 ID:???
もう回線切って消えろ。

671 :540:2001/08/24(金) 19:36 ID:???
..ストレス発散に煽られていますが。
lan環境の事だとすれば
必要な情報と不必要な情報を選別する事は
出来ないし何がlanかもわからないので
恐ろしく不必要な情報ばかりになるでしょう。。
ただ通常ある程度のレベルべ起こる不具合であれば
普通の人にも説明できると思ったからこのように
訊いたのです、でも現在自分のpcはおよそ想像出切る範囲の
通常設定とはかけ離れているので説明のしようがにないのだと
思います。
それは専門家の想像にもかけ離れているので
私はこれを正業としていないので、何を記述してよいか分りません。

672 :名無しさん@お腹いっぱい。:2001/08/24(金) 19:45 ID:???
> 多分だれも分らないんだと思う。

すげぇ、こいつは大物だ。
初級ネットより電波板のほうがよくないか?

673 : :2001/08/24(金) 19:46 ID:???
>>671
おそらくあなたは気づいてないかもしれませんが、
あなたは質問の仕方が恐ろしいほど下手で誰も理解できません。

日本語勉強しなおすか、OS再インストールしてもう一度試すか、
回線切って首吊ってください。

674 :名無しさん@お腹いっぱい。:2001/08/24(金) 19:48 ID:???
なぁ、もう誰かネタでもいいから Perl の初心者的質問をしてくれ

675 :名無しさん@お腹いっぱい。:2001/08/24(金) 19:53 ID:???
はは、もう何言っても無駄な様なので諦めるよ。
ネットワークについて、基礎的な知識をもって欲しい。
何も難しい事を言ってるんじゃ無くて、http〜〜〜 と
ブラウザに入力したアドレスの内容が何故表示出来るのかと言う事です。
pingやport,listenをキーワードに検索すればある程度
導通検査の仕方が出てくるからその辺りから見ていけば時間は掛からない。
それと、
>多分だれも分らないんだと思う。
こんな事を言ってるけど、それは違う。
貴方が自分なりに試行錯誤した結果をここに書き込まないから
誰も答える事が出来ないんだ。
具体的に言うと、エラーメッセージ、ブラウザに〜〜〜と書かれています
とか、4**、5**といったエラーが出ていますとか。
それを前の方の人も何度も聞いているね。
貴方はそれに答えずに、自分なりに考えた事だけを一方的に書き込んでいる
だけだから、両者の間にコミュニュケーションは存在していないんです。
つまり、今までだらだらと続けて来た事は、たった一人でトラブルシューティング
してるのと何ら変わらない結果しかもたらしていないと言う事です。

アプローチは沢山あるんだから、あせらず廻り道するのも手ですよ。

676 :名無しさん@お腹いっぱい。:2001/08/24(金) 19:55 ID:???
>>675
あんたやさしいな

677 :名無しさん@お腹いっぱい。:2001/08/24(金) 20:08 ID:???
うん、かなり良い事言った。
質問する時は環境とエラーメッセージ位は書くようにしような。
それと回答者が聞いてる事に答える事。
そうすれば再利用する事も出来る訳だし。
問題解決までのプロセスが明確なら、ちょっとしたFAQサイト位の情報量
は十分有ると思う。 という訳で、、
============ 質問 再開 =============

678 :540:2001/08/24(金) 20:16 ID:???
>>675
そのあたりの基本的部分からやってみます。。

679 :名無しさん@お腹いっぱい。:2001/08/24(金) 21:00 ID:???
540は日経ITの編集者で『匿名掲示板で有意義な情報は得られるのか』
という記事を書くための取材をしていると推測してみる。

680 :名無しさん@お腹いっぱい。:2001/08/24(金) 21:04 ID:???
>>679
良い感してる

681 :名無しさん@お腹いっぱい。:2001/08/24(金) 23:55 ID:???
>>674
漏れもきぼん
ログ流して〜

682 :名無しさん@お腹いっぱい。:2001/08/25(土) 00:11 ID:???
複数行にわたるコメントを書くことはできますか?
毎行 # を付けるのが面倒で…

683 :名無しさん@お腹いっぱい。:2001/08/25(土) 00:13 ID:???
正規表現
[^\.-z]
これの意味がいまいちわからないのですが...

684 :NeTa:2001/08/25(土) 00:55 ID:???
>>682

sub comment{ undef }

comment <<EOD;
foo
bar
hoge
EOD

ってのはどうでしょ

685 :At-ET:2001/08/25(土) 00:56 ID:???
>>684
(゚Д゚)ハァ?
Podくらい知っとけよ

=comment

foo
bar
hoge

=cut

686 :名無しさん@お腹いっぱい。:2001/08/25(土) 00:57 ID:???
=komento
>>682
こんな感じでいけるよ
でも実はこれではオプティマイザにとって
完全に無視される存在にはならないらしい(過去ログ参照)
komentoは何でも良いです
=cut

687 :名無しさん@お腹いっぱい。:2001/08/25(土) 01:06 ID:???
>>683
http://www.e-words.ne.jp/page.asp?p=r-ascii
この辺を見ながら
$a = '-+.aA@()*abdc';
$a =~ s/[^\.-z]//g;
print "$a";
こんな感じでやってみると解りやすいかもしれない

688 :名無しさん@お腹いっぱい。:2001/08/25(土) 01:16 ID:???
>>687
レスありがとうございます.
[^\.-z]で対象となるのは、
0x20 から 0x2d と 0x7b から 0x7e ですか?
(夕方実際にやってみてそういった感じでした)

どの文字が実際にマッチするかは
実際に実験してみればわかるのですが...

689 :名無しさん@お腹いっぱい。:2001/08/25(土) 01:32 ID:???
>>688
そそ、でも正確には制御文字(CRやLF)も含めてだから
[^\.-z]だと改行コードなんかもマッチする(\nとか付けてやってみて)
実験したと言う事はもっと深い所でトラブってるの?
だったら俺はわかんないや  :-)

690 :名無しさん@お腹いっぱい。:2001/08/25(土) 12:26 ID:???
お前ら答えた奴らに何か言う事ねえのかよ
っとどうしようもねえ糞餓鬼ばっかだな

691 :あげてみる:2001/08/25(土) 14:33 ID:fEbHiUCs
>>685-686
匿名掲示板で有益な情報を得たぜ日経IT記者よあげ

692 :名無しさん@お腹いっぱい。:2001/08/25(土) 18:48 ID:???
>>690
みんな>>674を思ってやってるだけなんだから気にするなよ。

693 :名無しさん@お腹いっぱい。:01/08/26 16:41 ID:s0cllzR.
returnを使わずに最後に評価していない値を
戻り値とすることはできるのでしょうか?
遅くなると聞いたので、あまりreturnは使いたくないんです・・・。
グローバル変数使うしかないんでしょうか・・・?

694 :名無しさん@お腹いっぱい。:01/08/26 19:33 ID:deglGRg.
>>639
りたーんすると遅くなるなんて聞いたことがないが、たぶん関数内ででかい(連想)配列を作って、それを返す時にコピーするのが時間がかかるということかな?
全体的に言ってることがおいらには理解できないが・・・。

一応おいらは呼び出し側で配列作って、関数にはリファレンスで渡してる。
それが有効かどうかは知らない。意味無かったら誰か煽ってくれ。

あと、所詮perlで書くスクリプトなんてたかがしれているから、グローバルでも平気で使ってる(わらぃ

695 :名無しさん@お腹いっぱい。:01/08/26 21:24 ID:WYakJQeg
>>694
なるほど、returnをすると遅くなるというのはそういうことだったんですね。
デカイ配列は無いので、returnを使うことにしました。
ありがとうございました。

http://www.cec.co.jp/usr/hasegawa/Docs/perl-jman/perl-4.019/perl_30.html#SEC49

696 :名無しさん@お腹いっぱい。:01/08/27 10:30 ID:5EwuC8Dg
えと、myの変数のリファレンスってとれないんでしょうか?
例:
require 'jcode.pl';
my $hoge="アホ";
&jcode::sjis2euc(\$hoge);

どうもeucになってないんですわ、、、

697 :真夏の名無しさん:01/08/27 11:41 ID:3PUeFMAE
>>674
$a=1; $b=2;
print "一致したよ" if ($a = $b);

# なぜ「一致したよ」とプリントされるのでしょうか?

698 :名無しさん@お腹いっぱい。:01/08/27 11:43 ID:5CqKaT3I
==

699 :名無しさん@お腹いっぱい。:01/08/27 11:47 ID:5CqKaT3I
>>696-697
何故と聞かれたら、答えになってないか。

$aに$bが代入され、$aの値(2)が評価された結果真になるから。

700 :真夏の名無しさん:01/08/27 12:06 ID:3PUeFMAE
>>698-699
 ありがとうございました。
 とてもよく解りました。

701 :名無しさん@お腹いっぱい。:01/08/27 16:48 ID:r2JsPnN.
>>696
ネタですか?スコープ、局所化、my、localって言葉について
全部調べた後だったら、僕も一緒に考えてもイイ。

702 :名無しさん@お腹いっぱい。:01/08/27 17:03 ID:arNi4VjY
>>696
$hogeがアスキーオンリーだったというオチは無しな

703 :名無しさん@お腹いっぱい。:01/08/28 04:34 ID:Y9HJU1Vk
readonlyなファイルについても、排他処理をしておくべきでしょうか?

読み書きが同時に起こることはないから、いらないのかなという気も
するのですが、どうなのでしょうか。

704 :名無しさん@お腹いっぱい。:01/08/28 04:52 ID:18vpKowI
>703
りーどおんりーなら必要なし。
追加おんりーも必要なし。

705 :名無しさん@お腹いっぱい。:01/08/28 07:10 ID:YMgWxGD6
>>704
> 追加おんりーも必要なし。
嘘教えるのはやめてください。
追加がほぼ同時に起こったら両方の追加分が混ざってしまいます。
たとえ追加がprint文一個だけだったしても、内部的には
一回じゃない可能性があります。

706 :名無しさん@お腹いっぱい。:01/08/28 12:45 ID:/J/VCZIY
最低限ちゃんとsyswrite使えと書いとくべきだよな

707 :名無しさん@お腹いっぱい。:01/08/28 16:16 ID:83R3Dqbo
めちゃくちゃ初心者なのですが・・・
perlの場合は、
main:
my($hensu,
@hensu
);
見たく一々指定しなくてはならないのでしょうか?

PHPみたくそのままいきなり変数を指定できないのでしょうか?

708 :名無しさん@お腹いっぱい。:01/08/28 16:29 ID:vRwY8t2k
指定するのが好ましいです。

709 :名無しさん@お腹いっぱい。:01/08/28 16:50 ID:83R3Dqbo
>>708
そうなんですか?
そうなると、サブルーチンで使う変数も一々グローバル変数として
指定しなきゃいけないことになりますよね?
たくさん、変数を使う時かなりソースが長くなっちゃいますね(^^;;

710 :名無しさん@お腹いっぱい。:01/08/28 17:13 ID:S6hb/fHc
なんでグローバル変数として宣言するんだよ。
my $hoge;
でローカル変数になるだろが。

711 :名無しさん@お腹いっぱい。:01/08/28 17:21 ID:83R3Dqbo
>>710
いやいや・・ちょっと文章おかしかったです(^^;
同じ変数がローカルとサブルーチンに1つずつあると
エラーが起こるから、一々、ローカルでサブルーチンで使う変数を
変数指定するのもおかしいかなと思ってみただけです。
自分は、サブルーチン時に「@_」を使ってないのでそのまま引数を
ローカルの変数として呼び出してるやり方をしているもので・・・(−−;;

712 :名無しさん@お腹いっぱい。:01/08/28 17:41 ID:83R3Dqbo
あっ!あとあと、
type="HIDDEN" NAME="hoge"で次のページにわたる時
一々
&ReadParse(\%cgi_data);で呼んで
$hoge = $cgi_data{'hoge'};
って記入しないといけないのでしょうか?

713 :名無しさん@お腹いっぱい。:01/08/28 17:45 ID:2OCyfEBQ
んなこたぁない

714 :名無しさん@お腹いっぱい。:01/08/28 18:00 ID:83R3Dqbo
>>713
&ReadParse(\%cgi_data)以外の
やり方教えてください!!m(_ _;)m

715 :名無しさん@お腹いっぱい。:01/08/28 18:02 ID:83R3Dqbo
test

716 :名無しさん@お腹いっぱい。:01/08/28 18:11 ID:vRwY8t2k
結局何がしたいんだよ

717 :名無しさん@お腹いっぱい。:01/08/28 18:15 ID:83R3Dqbo
>>716
sageの練習だったんです。
すみません。

718 :716:01/08/28 18:24 ID:ucUrq.A6
714 について聞いているんだが

719 :名無しさん@お腹いっぱい。:01/08/28 18:36 ID:83R3Dqbo
>>718
>>712を読んでいただければ意味がわかると思います。
ようするに、PHPみたく次のページで即変数として扱えないのか?
と言う質問を問い掛けたのです。宜しくお願いします。

720 :名無しさん@お腹いっぱい。:01/08/28 18:43 ID:KihuaPf6
cgi-lib.pl 以外でって事?

他は CGI.pmかCGI_Lite.pmを使うぐらいしか知らん。

使い方は

perldoc CGI

perldoc CGI_Lite



特別な記述せずに<input ... name="hoge" ... > からのデータを $hoge に
入れるのは不可能。(たぶん)

721 :名無しさん@お腹いっぱい。:01/08/28 19:22 ID:83R3Dqbo
>>720
やっぱり、cgi-lib以外でやる人は少ないって事なのですね(^^;
無難に、クエリーが渡ってきたら、素直に、ReadParseした方宜しいって事ですね
そうなると、perlはPHPと違って多少面倒なんですね。

722 :名無しさん@お腹いっぱい。:01/08/28 19:48 ID:NdGnBYkE
>>721
cgi-lib.plなんて使ってる人のほうが少ない。
普通はCGI.pmですが何か。

723 :名無しさん@お腹いっぱい。:01/08/28 21:21 ID:AucphgNo
配布CGIは自前でデコードが殆ど。

724 :703:01/08/29 01:50 ID:1LK7qRnY
>>704-706
 ありがとうございます。syswriteについても調べてみることにします。

 ところで、readonlyの場合でも、そのファイルをFTPでアップロード中に、
読み込みとかが起こったりすると、大変なことになったりするのでしょうか?

725 :725:01/08/29 02:28 ID:nriXNhX6
あのぅ、厨な質問で恐縮なんですが、

連想配列を使うときもmyで、「俺のもの宣言」
しなくちゃならないのでしょうか?
そのときは

my %SAMPLE;

で一括で指定できるのでしょうか?
それとも、要素ごとに

my $SAMPLE{'title'} = 'コニーチワ';

みたいにしてやんなくちゃならないのでしょうか?

726 :>725:01/08/29 02:33 ID:TrXIg0dU
>連想配列を使うときもmyで、「俺のもの宣言」しなくちゃならないのでしょうか?
できる状況ならそうした方がいいかもっす。
>my %SAMPLE;
>で一括で指定できるのでしょうか?
それでOKっす。個別にmyをくっつける必要はないっす。

727 : :01/08/29 06:56 ID:LMKe3GJU
my %SAMP = (title => 'コニーチワ',
      name => 'チンチン',
      tel => '03-110'
      );

728 :名無しさん@お腹いっぱい。:01/08/29 09:23 ID:GqMg69L.
ハッシュの要素一つだけをローカル宣言する時はlocal()な

729 : ◆skperlJw :01/08/29 09:38 ID:TVOCf1T2
トリップにperlと出るパス

◆FhPerLNE : #336764
◆peRlrNR6 : #585435
◆YITpeRLI : #716717
◆1pERlT4I : #937918
◆2PerLxhc : #1339723
◆PerLxUgU : #2083790
◆p2RPERLo : #2906193
◆pErlw4Uo : #3303125

730 :725(ID違うけど...):01/08/29 09:39 ID:7qWdlnWQ
みなさん、ありがとうっす。
それでやってみるっす。

731 :名無しさん@お腹いっぱい。:01/08/29 10:14 ID:ZDWORICM
すみません。今UNIXのマシンでディレクトリの内容を見てみよう!みたいな
プログラムを書いてるんですけど

#!/usr/bin/perl

$basedir = "/home/hoge";
opendir(RD,"$basedir") or die;
@dircontent = readdir(RD);
foreach $file_or_dir(@dircontent){
if(-d $file_or_dir){
push(@dirs,$file_or_dir);
}else{
push(@files,$file_or_dir);
}
}

に書いて中身がディレクトリかファイルかを分けてるんですが、
'.'と'..'が@dirsに入ってその他のディレクトリとかファイルは@filesの
方に入ってしまうんですがどうしてかわからないので教えていただけますか?
よろしくおねがいします。

732 :名無しさん@お腹いっぱい。:01/08/29 10:30 ID:J55zYnlg
perlっていろんなバージョンがあるんですか?
WinとLinux両方でやりたいのですが
これから始めるとしたらどのバージョンがおすすめですか?

733 :名無しさん@お腹いっぱい。:01/08/29 10:43 ID:2tzh7XAw
>>731
> '.'と'..'が@dirsに入ってその他のディレクトリとかファイルは@filesの
> 方に入ってしまうんですがどうしてかわからないので教えていただけますか?

if(-d "$basedir/$file_or_dir"){
...
ね。みんなよくやる失敗だYO!

734 :名無しさん@お腹いっぱい。 :01/08/29 10:48 ID:kt3pSaeg
んなこたぁ無い   ってのは無しの方向ですか?  (^^;

735 :名無しさん@お腹いっぱい。:01/08/29 10:49 ID:kt3pSaeg
はぅ スラッシュか。。。 ^^

736 :731:01/08/29 11:01 ID:qLYLxYkc
>733さん
ありがとうございます。できました。。

そかぁ〜絶対パス(?)指定してあげないといけないんですね。。
初歩的ミスでした。。また何かありましたらよろしくおねがいします。

737 :725:01/08/29 11:43 ID:7qWdlnWQ
スミマセン、お礼したばかりなのですが、
もう一つご教授ください。

プリントをするとき、

print << "_END_";
コニーチワ
コバーンワ
オハーヨ
_END_

てな具合で書くことができますよね?
そこでなんですが、変数に代入するときも
同じ様な技が使えるのでしょうか?

$aisatsu << "_EOF_";
コニーチワ
コバーンワ
オハーヨ
_EOF_

てな感じでOKなのでしょうか?

738 :名無しさん@お腹いっぱい。:01/08/29 11:47 ID:9WjD.Pdc
$aisatsu =<< "_EOF_";
.
.
.
_EOF_
イコールが要る

739 :725:01/08/29 11:54 ID:7qWdlnWQ
即レスありがとうございます。さすが2ちゃん...早い。
なるほど、なるほど。イコールがいるのですね。
うむ、勉強になります。

イコールがいるってことは演算子が使えるってことですよね?

そしたら、

$aisatsu .=<< "_EOF_";
アローハ
_EOF_

って書けば$aisatsuっていう変数に追記されるって
ことなのでしょうか。

740 :名無しさん@お腹いっぱい。:01/08/29 11:59 ID:r10mk.nk
されます

741 :名無しさん@お腹いっぱい。:01/08/29 12:13 ID:HC/LQDQA
>>739
つーか、テメーで試してから聞けよ。

742 :名無しさん@お腹いっぱい。:01/08/29 13:03 ID:2tzh7XAw
つーか << の後にスペース入れちゃいけない、って思い込んでた
鬱だしのう

743 :725:01/08/29 13:28 ID:7qWdlnWQ
>>740-742

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

744 :There's More Than One Way To Do It.:01/08/29 18:09 ID:dbdeNPaQ
$_ = <<;
WEBプログラム

#↑が空行である点に注意。
これでもOK。(推奨されない)

<< を使わなくても、
$_ = "
WEBプログラム
";
これでもOK。

745 :やりかたがいっぱいあるってのなら:01/08/29 19:15 ID:l6kwWt.M
CGIを良く書く我としては
$mona = qq{<FONT size="-1" color="#ff0000">
逝ってよし
</FONT>
};
print $mona;
なんてよくやる。

746 :教えてさん:01/08/29 21:04 ID:xjxFODrs
会社のホームページに日誌を載せているんですけど
出先から会社のホームページを書き換えたり出来るんでしょうか?

747 :名無しさん@お腹いっぱい。:01/08/29 21:09 ID:BzSzcky6
Web製作板でFTPの使い方を覚えましょう。
http://natto.2ch.net/hp/index2.html
Perlとは全く関係ないでしょ?

748 :教えてさん:01/08/29 21:14 ID:ASEY3DfQ
ごめんなさい!

749 :725:01/08/30 00:39 ID:1xnqMYr2
>>744-745

目からうろっこっす!
そんな方法もあるのですね。

750 :725:01/08/30 02:34 ID:1xnqMYr2
スミマセン、度々。

local(@pairs) = split(/;/,$cookies);
てな感じでクッキーを分割しようとすると
perl -w でチェックしたとき

Use of uninitialized value in split at toarubbs.cgi line 411.

という警告が出ます。調べてみたのですが、どこが狂っているの
か皆目分かりません。一応通ってはいるみたいなのですが...

ご教授くださいまし。

# これだけの情報では分からないでしょうか?

751 :JAPU@うぐぅ:01/08/30 02:38 ID:c4jBSiHQ
$cookies が undef (未定義) じゃないの?

事前に
$cookies = "" if not defined $cookies;
とかしておけば OK かも。:)

# undef と "" は異なります。

752 :名無しさん:01/08/30 04:54 ID:zTjKOAyE
こういう事を実現する方法は無いでしょうか…。

$log ? print LOG <<EOF : print <<EOF;

ヒアドキュメントで…

EOF

753 :名無しさん@お腹いっぱい。:01/08/30 05:18 ID:7tv.uuPE
>>752

$log ? print LOG <<EOF : print <<EOF;
ログあり
EOF
ログなし
EOF

# ↓個人的推奨

print length $log ? <<EX : <<NEX;
ログあり
EX
ログなし
NEX

754 :752:01/08/30 05:48 ID:zTjKOAyE
>>753
回答の通りやってみたら出来ました。そこまで思い付きませんでした…。
推奨の方を頭に入れます。ありがとうございました。

755 :>752:01/08/30 06:20 ID:vlPtsTzA
どちらの場合も同じ内容を出力するというのであれば、
select LOG if $log;
print <<EOF;

....

EOF
select STDOUT if $log;
なんてのもアリですね。

756 :725:01/08/30 11:02 ID:pcbOuQ4U
>>751

うわ、JAPUさんだ、こんにちは。
すみません、前の行で

local($cookies) = $ENV{'HTTP_COOKIE'};

として、環境変数からクッキーを呼び出しています。
これでは$cookiesを定義したことにならないのでしょうか。
JAPUさんの教えてくださった方法でちと試してみます。
ありがとうございました。m(_ _)m

757 :名無しさん@お腹いっぱい。:01/08/30 11:08 ID:vj7AVUwU
>>756
local が気になる。

758 :名無しさん@お腹いっぱい。:01/08/30 11:28 ID:zG.eoWl.
すみません。とあるプログラムを見ていてわからない部分があるので
教えてください。ファイルテストしているところで
opendir(D,$dir)or dir;
$path=readdir(D);
if(-f $path){
処理
}elseif(-d _){
処理
}
の「_」の部分なんですが意味がわからないで教えてください。
本には最後のstatないしlstatの結果を参照って書いてあるんですけど
これってどんな意味なんでしょうか?直前(最後)ファイルテストをした物
と同じって意味でいいんでしょうか?(この場合$pathと同じってこと)
よくわからないので教えてください

759 :名無しさん@お腹いっぱい。:01/08/30 11:57 ID:3TFNK/cI
>>758
$pathと同じです。
直前に実行したファイルテスト演算子の結果はキャッシュされるので、
もう一度 (-d $path) とするより効率がよくなります。

760 :名無しさん@お腹いっぱい。:01/08/30 12:52 ID:psLhnlnE
>759さん
ありがとうございます。モヤモヤが解決しました!!

761 :名無しさん@お腹いっぱい。:01/08/30 13:00 ID:5rfMNbvM
質問です
『現在の日付』と『入力した日付 例)2000-8-30』を比較し今現在の時間より未来だったら
エラーと表示したいのですが、ソースが全然わかりません。
今日の日付を取得するのはわかるのですが・・・

my ($sec, $min, $hour, $day, $mon, $year, $wdy, $yday, $isdst) = localtime(time);
$year += 1900;
$mon++;

print "ただいま$year年$mon月$day日 $hour時$min分$sec秒\n";
exit;

それと比較する方法がわかりません・・
誰かおしえてよ

762 :名無しさん@お腹いっぱい。:01/08/30 13:46 ID:9ojiLY2w
>>761

sub is_future {
my ($b_year, $b_month, $b_day) = split /-/, shift;

require Time::Local;
return time < Time::Local::timelocal(0, 0, 0, $b_day, --$b_month, $b_year -= 1900);
}

foreach my $test_data (qw(
2000-8-30
2001-8-29
2001-8-30
2001-8-31
2001-9-1
)) { print $test_data; print ": エラー" if is_future($test_data); print "\n" }

763 :JAPU:01/08/30 13:51 ID:c4jBSiHQ
>>756
変数は
・任意の文字列 (数字としても扱うことができる)
・リファレンス
・未定義 (undef)
のどれかをとる (他にあったっけ? 識者の補足をきぼーん) ので、
local($cookies) = $ENV{'HTTP_COOKIE'};
としても、$ENV{HTTP_COOKIE} が undef なら何もしない限り $cookies も undef なのです。
この場合は、
my $cookies = $ENV{HTTP_COOKIE} || "";
とするのがよいかな。
# 既に指摘がある通り、変数は可能な限り my で宣言するのが吉なりよ。
----
($iyear, $imon, $imday) = split /-/, $input_date;
$input_date = sprintf "%04d-%04d-%04d", $iyear, $imon, $imday;
$system_date = sprintf "%04d-%04d-%04d", $year, $mon, $day;
if($system_date lt $input_date) {
print "はにゃーん エラー\n";
}

764 :T女の竹田:01/08/30 15:03 ID:UDHJh.zA
HTMLから実体参照形式Unicodeとふつうのアスキーテキストが混ざったのを
抜き出して、それからぜんぶUnicode(BE)に変換しようとしたんだけど、いい方法ないかなぁ?
$text =~ s/?(\d+);/pack('n',$1);/seg;
$text =~ s/[\x20-\x7e]/\0$&/sg;
最初↑みたいにしてやったら化けまくって、で中を見て「あ〜ばかじゃん」
と思って上下の文を逆にしてみると…さらに大惨事に…(当たり前)
工夫すればできるとは思うけど、「この正規表現で一発!」みたいなの
ないですか?

765 :T女の竹田:01/08/30 15:10 ID:UDHJh.zA
↑あ。。
?(\d+)

&#(\d+)
です。。

766 :752:01/08/30 16:56 ID:FHx3lziU
>>755
わあ…。
selectの使い方、とても参考になりました。
嬉しい。遅くなりましたけど、ありがとうございます。

767 :名無しさん@お腹いっぱい。:01/08/30 18:02 ID:KPteR7z.
質問!
掲示板を作ってるんですけど、ログファイル(bbslog.datとかuser.datとか)のファイルに
ブラウザから直接アクセス出来ないようにしたいんですけど、
みなさんどういう方法をとっていらっしゃいますか?
自分の貧困な発想で思いついたのは、ログファイルの拡張子を『cgi』にして、
Permission Deniedさせてしまうぐらいしか思いつかなかったんです(;_;)

768 :名無しさん@お腹いっぱい。:01/08/30 18:30 ID:E9M3DAmo
それが簡単で1番良いと思う。ほとんどの環境で使えるし。

769 :名無しさん@お腹いっぱい。:01/08/30 18:32 ID:pomXMsVA
あ、T女たんだ。。でも漏れは分かんないよ  ゴメソ

>>767
それで良いと思うよ。でもそれはスクリプト側でする事じゃ無いんで
考えなくてOK、public_htmlの外に置くとかhtaccess置くとか
デフォルトの名前を変える様にユーザーに呼びかけましょう。
それがやり易い様に変数の中に入れておくと親切かも。。。

770 :名無しさん@お腹いっぱい。:01/08/30 19:08 ID:U7WzvMDs
URLの分解ってこれじゃダメなの?

例)http://corn.2ch.net/php/index2.htm?hogehoge=sage&....

@referer_box = split /?/,$ENV{'HTTP_REFERER'};

771 :767:01/08/30 19:41 ID:KPteR7z.
768さん、769さん、御教授ありがとうございます。
自分でも、他のディレクトリにシンボリックリンク 貼って
そこにデータ置いたりとかいろいろ四苦八苦してたんですけど、
そのやり方だと他の人に渡したときに、動かせないかもしれないので、
ここで質問させて戴いたしだいです。

やっぱり、拡張子をcgiにする方式でやってみます。
ただ、この方式だと下の問題点の方が残ってしまうんですよね。
改善される問題:ログファイル(パスワードを含む物など)を読まれる危険性がなくなる。
残っている問題:ブラウザからログファイルに直接に何度もアクセスをかけられると、
        ファイルロックされていないので、書き込みがミスってしまう。
ログファイルの名前がユーザーにばれる事は掲示板の弱点として、割り切るしか無いんでしょうか(;_;)
うぅ、長くなってごめんなさい。別に粘着レスでは無いんですー(;_;)

772 :名無しさん@お腹いっぱい。:01/08/30 20:06 ID:TttdmJZY
条件によって出力FHを変えるなら
print { $foo ? *STDOUT : *STDERR } "HOGE\n";
っても使えるよ。

>>T女たん
perldoc -f packを見れば良いのでわ(折れは英語ダメだけど
pack 'u'とか(?)

773 :名無しさん@お腹いっぱい。:01/08/30 20:13 ID:pomXMsVA
いや、だからそれはユーザ側の問題なんだってばさ
後はアクセス制限掛けるなりしてもらうしかないよ
cgi-bin以下の.cgi以外はwww権限で読めないサーバーとかも有るけど。。
.hthogehogeとかやっとくと結構色んなサーバーで行けそう

774 :725(=756):01/08/30 21:24 ID:ytEa/Jb2
なるほど、この場合、未定義になるのですね。
いやぁ、勉強になります。

みなさんおっしゃっているように、local -> myにかえてみようと
思います。いろいろありがとうございました。

775 :T女の竹田:01/08/30 21:54 ID:FAiia3.6
自己レスですが、結局あきらめて、ループで回して前の方から切り出して、別の変数に
追加していって普通に?やりました。
最初からこうしてたらよかったかも。。こういうのって「正規表現でできるはず!!」って
思いこんでたけど、結局正規表現じゃ無理なのかな?

776 :名無しさん@お腹いっぱい。:01/08/31 01:18 ID:0YV4ebqc

LWP::UserAgent をつかって、クッキーを受け取って、
次のリクエストでそのクッキーをちゃんと返してやるってのをやってるんですが、
受け取るまでは、出来たのですが、ちゃんと返すことが出来ません。
どうすればいいでしょうか?
cookie.txtには、ちゃんと情報は保存されています。

#!/usr/bin/perl
use LWP::UserAgent;
require HTTP::Cookies;



my $ua = LWP::UserAgent->new(cookie_jar => 1,);
$ua->agent('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
$ua->cookie_jar(HTTP::Cookies->new(file => "./cookie.txt",AutoSave => 1,));

$target = 'http://www.foo.ne.jp/';

my $req = HTTP::Request->new(GET => "$target");
$res = $ua->request($req);
if ($res->is_success) {
print $res->content;
} else {
print $res->status_line;
}

777 :名無しさん@お腹いっぱい。:01/08/31 02:22 ID:15D5/wj6
デリミタで質問。
みなさん、ログファイルに記録するのにデリミタは何にしてますか?
おいらは、\376で区切ってます。

778 :名無しさん@お腹いっぱい。:01/08/31 02:43 ID:f1g.yh7k
いきなりですが、CGI設置者のftpソフトのお勧めを教えてください

779 :名無しさん@お腹いっぱい。:01/08/31 02:47 ID:15D5/wj6
>>778
lftp

780 :JAPU@腰が痛い...:01/08/31 06:33 ID:hOKxRgGg
こんな感じで処理するのはどうでしょう?
Unicode は良く分からないので具体的な変換処理は書きませんが。

s{(?:\&\#(\d+);|([\x20-\x7e])|(.))}{
if(defined $1) {
"[$1]";
} elsif(defined $2) {
"<$2>";
} else {
"($3)";
}
}seg;

----
私は less などで見やすいように、コンマかタブで区切っています。

781 :名無しさん@お腹いっぱい。:01/08/31 11:23 ID:NujA9c4g
初心者プログラマーなんですが、プログラムを書いていてこんなプログラムを
書いたんですが意味がこんがらがって分からなくなってしまいました。
if($host !=~ /$basename/)の!=の部分なんですがこの場合
「$hostに$basenameがなければ真を返す」って意味ですよね?
そしたらif($host !~ /$basename/)も同じ意味ですよね?
でもプログラムを走らせると「!=~」は真を返して[!~]は偽を
返してくれるんですが・・・・頭が混乱してきた。。教えてください。

782 :名無しさん@お腹いっぱい。:01/08/31 12:00 ID:pfDOYTd.
>>781
まず、!=~ という演算子はありません。
$host !=~ /$basename/ がどう解釈されるかというと、
$host != ( ~/$basename/ )
という感じです。
で( ~/$basename/ )では、まず /$basename/ を、
$_にマッチさせる正規表現と解釈します。
たぶんそれで0が帰ってそれが ~ 演算子に渡されます。
~0 は 4294967295 ですので、この時点で、
($host != 4294967295) という感じになります。
もちろん、$host は 4294967295 じゃないでしょうから
全体として真が返ってきます。
ちなみに、
$host !~ /$basename/ と同義なのは、
!($host =~ /$basename/) です。
こういう間違いは -w オプションで perl を実行することで
簡単に見つけられますよ。

783 :782:01/08/31 12:04 ID:pfDOYTd.
日本語変なのは気にしないで。

784 :781:01/08/31 13:30 ID:gxfm2mi2
>782さん
ありがとうございます。わかりました。。「-w」つけたら一発でエラーが
でてきてわかりました。。説明ありがとうございました。

785 :T女の竹田:01/08/31 13:35 ID:4Heibauk
>>JAPUさん
うまくいきました!ありがとうございます。
↓こんな感じです。
$text =~ s{(\&\#(\d+);)|([\x0-\x7e])|(.)}{
    if(defined $1) {
        pack('n',$2);
    } elsif(defined $3) {
        "\0$3";
    } else {
        '';
    }
    }seg;

786 :725:01/09/01 00:51 ID:u.d.epnc
皆さんに教えていただいたように、my で書き換えました。
そしたら、jcode.plで、

&jcode'convert(*send_msg_body,'jis');
#$send_msg_bodyはローカル変数として、my で宣言しています。

のようなコンバートができなくなってしまいました....。
どうすれば、ちゃんと変換できるようになるのでしょう。

ホントに厨な質問でスミマセン。

787 :725:01/09/01 01:02 ID:u.d.epnc
調べてみたのですが、

jcode::convert(\$send_msg_body,'jis');

でOKなのでしょうか...

788 :名無しさん@お腹いっぱい。:01/09/01 01:02 ID:3b6idtJ.
jcode::convert(\$send_msg_body, 'jis');

789 :名無しさん@お腹いっぱい。:01/09/01 01:03 ID:3b6idtJ.
遅かったか(w
それでOKです。

790 :725:01/09/01 01:31 ID:u.d.epnc
>>788-789

ありがとうございました。
今使っているjcode.plのドキュメントには載っていなかった
のですが、最新版のjcode.plに使い方が書いてありました。

791 ::01/09/02 05:33 ID:4hoKlkq6
parlじゃないのですがhtmlでクリックした際サイトが
飛び出すようにするには如何したらいいのでしょうか?

792 :名無しさん@お腹いっぱい。:01/09/02 05:48 ID:/fL4q/kI
>>791
豆腐を喉に詰まらせて氏ね

793 :はじめたばかり:01/09/02 09:01 ID:T1M6nn4M
いつも楽しく拝見してます。
いまテキストカウンターを作っていて、なんとか作ることができたの
ですが、ファイルを2つに分けて1つのファイルがロックされているときは
もう1つのファイルに書き込みという形にして、同時アクセスでファイルの破損を
防ぐと同時にカウント漏れを防ぐようなカウンターをつくりたいのですが
1つのファイルがロックされているときにもう1つのファイルの方にカウントを
増やすようにするにはどの関数をつかえばよいのでしょうか?
まだはじめたばかりであまりよくわかりません。自分的にはfor文かと思ったのですが
どうも違うような気がします。
もしよろしければ皆さんの知恵を借りられればと思います。
お願いします。

794 :名無しさん@お腹いっぱい。:01/09/02 10:07 ID:/vkcvuzE
>>793
基本がなってない。
ここでコードを書くのは簡単だが理解せずに使っても意味がなかろう。
とりあえず参考書籍スレで評判の良い本を買うのをすすめる。

795 :名無しさん@お腹いっぱい。:01/09/02 14:18 ID:TsnMUyQQ
>>793
ファイルの数を好きに設定できるようにすると耐久度が増しますね。
がんばってください。 うまくいけば絶対に破損しないロック方式になります。

796 :名無しさん@お腹いっぱい。:01/09/02 15:29 ID:lAk/mI7A
お前 のら だろ!  (ワラ

797 :名無しさん@お腹いっぱい。:01/09/02 15:43 ID:3zvuzTqo
>>796
なつかしー
うけた!

798 :名無しさん@お腹いっぱい。:01/09/02 17:49 ID:EuE1F3p.
はは、monaloveさん??のflock講は勉強になったなぁ  (^^

799 :名無しさん@お腹いっぱい。:01/09/02 18:04 ID:YqVc4g/k
print "〜";
でHTMLを書き出し、HTML中で外部のjavascriptや、CSSファイルを使いたいのですが、
読んでくれません。

print "<STYLE TYPE=\"text/css\">\n<!--\n";
open(IN, "***.css");
print while (<IN>);
close(IN);
print "\n//-->\n</style>\n";

こうするしかありませんか?
とほほのperl入門はよく読んだのですが、特にこれに関係しそうなことは
書いてありませんでした。

よろしくお願いします。

800 :名無しさん@お腹いっぱい。:01/09/02 18:14 ID:79Ih1PPk
>>799
print "<LINK rel=\"stylesheet\" href=\"./base.css\" type=\"text/css\" media=\"screen\">";
これでいいじゃん

801 :名無しさん@お腹いっぱい。:01/09/02 18:23 ID:YqVc4g/k
>>800
ありがとうございました。
CSSのほうは読んでくれました。
でもまだjavascriptのほうが動きません。
<script language=\"JavaScript\" src=\"***.js\">
</script>\n"
これではまずいでしょうか?

802 :名無しさん@お腹いっぱい。:01/09/02 18:28 ID:H3IIufEo
>801
板違いカエレ!
http://tohoho.wakusei.ne.jp/js/write.htm#jsfile

803 :名無しさん@お腹いっぱい。:01/09/02 18:37 ID:YqVc4g/k
>>802
language=\"javascript\"が悪かったみたいですね。
これが書いてあっても、CGIで書いたのではないHTMLでは
ちゃんと参照してくれるんですよ。

帰れといいつつ、javascript質問スレではなく、目的のページにリンク
してくれていて、親切ですね。ありがとう。

804 :名無しさん@XEmacs:01/09/02 23:20 ID:.hTQgQWM
#!/usr/bin/perl

use DBI;
use strict;
use CGI;
use Date::Calc qw(Today Add_Delta_Days);

#パスの設定
my $nkf = '/usr/local/bin/nkf';

#オブジェクトの生成
my $q = new CGI;

#出力文字コードの設定
open HTML, "|$nkf -s";
select(HTML);
$|=1;

#html表示
print $q->header(-expire=>'now');
print $q->start_html(-title=>'bbs',-bgcolor=>'#DDDDDD');
print "掲示版";
print $q->hr;
print $q->start_form(-method=>'POST',-action=>'./bbs2.cgi');
print $q->textarea(-name=>'msg',
-rows=>3,
-column=>16);
print "<br>\n";
print $q->submit(-name=>'submit',-value=>'submit');
print $q->end_form;
print $q->end_html;
close(HTML);

805 :名無しさん@XEmacs:01/09/02 23:24 ID:.hTQgQWM
804みたいに書いて掲示版作ろうとしたんだけど、
日本語で掲示版とブラウザ表示しようとすると
internal server erorがおきます。
perl -c bbs2.cgi
では、
Global symbol "$B7G" requires explicit package name at bbs2.cgi line 22.
bbs2.cgi had compilation errors.
といわれるので、文字コードがおかしいみたいなんですが、
どうしたらなおりますか?

806 :名無しさん@XEmacs:01/09/02 23:25 ID:.hTQgQWM
ちなみにこれはi-mode用の掲示版をつくってみてるんですが、
パソコンのブラウザで表示しようとするときに起こるエラーです。
i-modeはためしてません。

807 :名無しさん@XEmacs:01/09/02 23:33 ID:.hTQgQWM
さらに
open HTML, "|$nkf -e";
としても結果は同じです。

808 :名無しさん@お腹いっぱい。:01/09/02 23:34 ID:q3o1psmo
>>806
@@ -19,7 +19,7 @@
#html表示
print $q->header(-expire=>'now');
print $q->start_html(-title=>'bbs',-bgcolor=>'#DDDDDD');
-print "掲示版";
+print '掲示版';
print $q->hr;
print $q->start_form(-method=>'POST',-action=>'./bbs2.cgi');
print $q->textarea(-name=>'msg',

809 :名無しさん@XEmacs:01/09/02 23:37 ID:.hTQgQWM
本当だ。できました。なぜですか?

810 :初心者2号:01/09/02 23:40 ID:rbOW5x.6
皆さんこんにちは。
がいしゅつかもしれませんが、教えてください
入力フォームで電話番号など半角数字の入力のみに限定させたいのですが、
どうしたらいいでしょうか?

811 :名無しさん@お腹いっぱい。:01/09/02 23:42 ID:H3IIufEo
>>810
if($tel =~ /\D/){&error('半角数字のみです');}

812 :名無しさん@お腹いっぱい。:01/09/02 23:52 ID:q3o1psmo
>>809
多分元のスクリプトは JIS Code で書いているかと思うのですが
問題なのは「掲示板」という文字列がバイト列としてどう表現
されているかという事です

> echo '掲示版' | nkf -j | hd

とかすれば分るかもしれませんが, 「掲示板」をバイト列レベルで見ると
$B7G と見なせる部分が含まれるので " で囲まれてると変数を展開しようとして
エラーになります

別解として元のスクリプトを EUC に変換しても大丈夫だと思います

813 :名無しさん@お腹いっぱい。:01/09/03 01:42 ID:3oz.BmnQ
かちゅしゃログ→dat変換スクリプトを作りたいのですが、
$line =~ s/,/<>;/g;
$line =~ s/<b>//g;
$line =~ s/</b>//g;
をして、外部へのリンクは<a>タグを外して
自スレリンクの<a href="http://saki.2ch.net/test/read.cgi?bbs=
ana&key=988911584&st=7&to=7&nofirst=true" target="_blank">
を<a href="../test/read.cgi?bbs=
ana&key=988911584&st=7&to=7&nofirst=true" target="_blank">
という風にしたいです
どのように書けばよいでしょうか

814 :名無しさん@お腹いっぱい。:01/09/03 01:49 ID:W9dhAgAc
>>813
$line =~ s/<a href="http:\/\/saki\.2ch\.net/../g;
$line =~ s/<a href="http.*?">//g;
とここまで考えて</a>の削除を忘れてたことに気付いた。
スマン。

815 :814:01/09/03 02:02 ID:W9dhAgAc
>>814
しかも間違えてるし・・・。
$line =~ s/<a href="http:\/\/saki\.2ch\.net/<a href="../g;
$line =~ s/<a href="http.*?">//g;

816 :pp:01/09/03 05:49 ID:LMjVYZAM
h

817 :test:01/09/03 06:55 ID:EfBvrGB.
test

818 :813:01/09/03 22:38 ID:XIk6iDJI
$lines[$i] =~ /<a href="(http:.*?)"/;
$url=$1;
$lines[$i] =~ s/<a href="http.*?<\/a>/$url/g;
解決しました

819 :名無しさん@お腹いっぱい。:01/09/04 01:34 ID:jaQVJtkg
htmlファイルを取得するスクリプトを書いているのですが。。。
ファイル取得部分は人様のものやこちらのスレッドなどを参考にしてなんとか出来たのですが、

もし(たとえば hoge.html)をすでに取得していた場合
旧hoge.html→hoge.html.1
とりネームする、しかし hoge.html.1 がすでにある場合は hoge.html.2 にする
その後どんどん、.3 , .4 , .5 と増やしていく
という処理をしたいのですが書き方がわかりません
やりたいことはもし更新されていても消さずに残しておきたい、ということです

教えていただけるとうれしいです

820 : ◆GpSwX8mo :01/09/04 03:27 ID:uLaYbm/k
>>819

#!/usr/bin/perl

use strict;

use constant BACKUP_LIMIT => 5;
use constant FILE_NO_SEPARATOR => '.';

my $html_file = 'hoge.html';

my $received_htmlstr = '<!DOCTYPE html ...';

if (-e $html_file) {
my $oldest = join(FILE_NO_SEPARATOR, $html_file => BACKUP_LIMIT);
unlink $oldest if -e $oldest;

for (my $i = BACKUP_LIMIT-1; $i>0; --$i) {
my ($before, $after) = map join(FILE_NO_SEPARATOR, $html_file => $_), $i, $i+1;
next if not -e $before;
rename $before => $after;
}
rename $html_file => "$html_file.1";
}

use IO::File;
IO::File->new($html_file, 'w')->print($received_htmlstr);

__END__

821 : ◆k4PcAe16 :01/09/04 03:27 ID:uLaYbm/k
>>819

#!/usr/bin/perl

use strict;

use constant FILE_NO_SEPARATOR => '.';

my $html_file = 'hoge.html';

my $received_htmlstr = '<!DOCTYPE html ...';

sub max { my $max = shift;
foreach (@_) {
$max = $_ if $max < $_;
}
return $max;
}

if (-e $html_file) {
my $file_format = qr/^\Q$html_file\E\.([1-9]\d*)$/;

require IO::Dir;
my $max_idx = max map { /$file_format/o; $1 } grep /$file_format/o, IO::Dir->new('.')->read;

for (my $i = $max_idx; $i>0; --$i) {
my ($before, $after) = map join(FILE_NO_SEPARATOR, $html_file => $_), $i, $i+1;
next if not -e $before;
rename $before => $after;
}
rename $html_file => "$html_file.1";
}

use IO::File;
IO::File->new($html_file, 'w')->print($received_htmlstr);

__END__

822 :820,821:01/09/04 03:31 ID:uLaYbm/k
名前欄に #1, #2 と入れたら妙な文字が出てしまった。なんだろ?

823 :819:01/09/04 03:41 ID:jaQVJtkg
>>822 (820,821)
さっそくレスいただいて恐縮です
わかりやすく教えていただいてうれしいです ありがとうございました

>名前欄に #1, #2 と入れたら妙な文字が出てしまった。なんだろ?
----------------
1 名前:ひろゆき ◆NdKrQ0UM 投稿日:2001/08/09(木) 16:26 ID:OLqDn5LQ
というわけで、名前欄に#をいれて適当な文字列を入れると、
ひとりキャップが使える機能を足してみました。

ほえほえ#password
って感じです。

4 名前:ひろゆき ◆NdKrQ0UM 投稿日:2001/08/09(木) 16:32 ID:OLqDn5LQ
キャップがなくても、本人であるという証明になりますです。
----------------
という機能らしいです
ひとりキャップ 略して 「トリップ」と呼ばれているようです

824 :pp:01/09/04 04:11 ID:BE/ASauk
すいません。
今、Active Perlをインストールして
早速拡張子.plにして、いろいろやろうかと
思っていたのですが、.plをダブルクリックすると
コマンド画面が出てきて、すぐに消えてしまいます。
これはなぜでしょうか?
問題無くインストールしたのですが・・・

825 :名無しさん@お腹いっぱい。:01/09/04 04:55 ID:oDOAY7oI
>824
MS-DOSプロンプト開いて、コマンドラインで
perl hoge.pl
とか打つべし

826 :pp:01/09/04 05:08 ID:BE/ASauk
>>825
わざわざレスどうもです。
コマンドまたはファイル名が違います
と、なってしまいます。

827 :825:01/09/04 05:17 ID:oDOAY7oI
>826
それperl.exeにパスが通ってないと思うんだけど
もしかしてpathの設定方法とか知らなかったりする?
だとすると説明が面倒なんで俺はパス(←笑うところ)

828 :pp:01/09/04 05:21 ID:BE/ASauk
>>827
pathの設定方法知らなかったりします。
取り敢えず、検索してみます。
わざわざ有難う御座います。

829 :結城杏奈:01/09/04 08:43 ID:WtCIi7QQ
ちょっと聞いてもよいかしら
ファイルをおコピーしたいんですけど出来るだけシステム依存
したくないのですわ。
`cp hoge hoe`なんてやるとゲイシなPCだとおキック喰らっちゃって
大変ですわよ
システムコールせずにファイルコピーする関数なんていうのは
ありませんかしら?

open (IN,"<hoge");
open (OUT,">hoe");
  while (<IN>){
  print OUT $_;
  }
これってなんだか田舎娘みたいでとってもアンニュイですの。。。。

830 :名無しさん@お腹いっぱい。:01/09/04 08:56 ID:MBD3zVhI
>>829
ネカマは死んで。

831 :名無しさん@お腹いっぱい。:01/09/04 08:58 ID:btJZCxgM
お前コード書くのかよっ! と言っておく  w

832 :名無しさん@お腹いっぱい。:01/09/04 09:02 ID:SH4sstc2
いちお、File::Copyてなモジュールがありますがね。。。
use File::Copy;
copy("hoge", "hoe");
そのソース見ると、最初にシステム見分けてから、
それぞれ最適な関数(もちシステム依存ばりばり)を
呼び出してるつうしろものでっせ。
都会派のネカマちゃんにはお気に召さんかもな。

833 :pp:01/09/04 09:04 ID:BE/ASauk
Windowsで普通にActivePerlをインストールすると
hello.pl をダブルクリックで
DOS窓起動→hoge.plが起動→hoge.pl終了→DOS窓終了→一瞬で窓閉じる
ってのはどうやったら、直るのでしょうか?

MS-DOSプロンプトのプロパティの
プログラム終了時にウィンドウを閉じる
のチェックは外しているのですが・・・

834 :結城杏奈:01/09/04 09:58 ID:WtCIi7QQ
>>830 まー!
>>831 (ぽっ
>>832
ありがとうですの、なるべくシステムコールしない
&&標準モジュールをつかうなら田舎娘の出番になるのね
なんて中途半端なのかしら! やですわ
病的折衷主義のガラクタ出力機ですわ
でもそんなperlちゃんが楽しいですの。
かさねがさね感謝ですわ。
>>833
その問題はわたくしが通うバッキンガム高校のBBSでも
いつも書き込まれてますのよ。
わたくしは NTりすと ですけどDOSでの移動が面倒でしたら
さぎょうフォルダのうえで
explorerから右クリックでコマンドプロンプトを開く
と言うのはいかがかしら? 窓の手なんかにそう言う設定
があったとおもいますのよ。
あとはDOSのヒストリ機能なんてのを使うとちょっと便利ですわ
一度dirとかにゅうりょくした後にF1を押していくとよいですの
doskeyなんて検索すると、もうちょと便利かもですわ

835 :名無しさん@お腹いっぱい。:01/09/04 17:52 ID:cTMkgC.w
板違いかもしれませんが
現在LinuxMLD5でperlをやっているのですが
最初の行にちゃんとした#!/usr/bin/perlといれているのですが
うまく実行されません。
which perlとかでやってもちゃんとあってるし、perl -vとかでも
インストールされていることが確認できます。
今はしかたなく実行前にプログラムの前にperlといれてやっていますが
面倒で仕方ありません。
これってどうやったら動作するのでしょうか?動かない原因が特定できません。
どなたか助けてください。

836 :名無しさん@お腹いっぱい。:01/09/04 18:02 ID:LkqU29Ks
実行権限がないんだろ。

837 :_gunzip:01/09/04 18:31 ID:E8XEZJvU
chmod +x script_name.pl
./script_name.pl
^^

838 :名無しさん@お腹いっぱい。:01/09/04 20:31 ID:FOQJEj12
ねかまにちょっとワロタ 。。 病的折衷主義って何だっけか
>>835
同じく chmod 755 ./scriput_name.pl

839 :名無しさん@お腹いっぱい。:01/09/04 20:33 ID:FOQJEj12
_gunzipたんおひさっ
Rubbish Lister か。。。   sage

840 :835:01/09/04 21:50 ID:2Iq0qb32
>chmod 755 ./scriput_name.pl
だめでした。
777でもだめでした。
何が原因なのでしょうか?

841 :名無しさん@お腹いっぱい。:01/09/04 22:05 ID:FOQJEj12
何か変な文字コードなんじゃないの?
#!/usr/local/bin/perl --
↑ 一行目こうしたらどうなる?

842 :名無しさん@お腹いっぱい。:01/09/04 22:50 ID:cFEUOiVA
っていうか、どんなエラーでてるんよ?

843 ::01/09/05 04:33 ID:sTSRf1BY
Missing braces on \N{} at C:\PERL\COPAL186\copal.tmp line 342, within string

↑すいませんがどう言う意味か教えて下さい。

844 :名無しさん@お腹いっぱい。:01/09/05 05:10 ID:L1KgWH9s
>843
「"\N"の後にあるべきブレース記号が書いてねーぞ」と言われておる。
\N{hoge}はギリシャ文字なんかを出すためのエスケープシーケンスらしい。
詳しくはperldoc charnameを参照。
ていうかそんなもん使ってんの?"\n"のタイプミス?

845 ::01/09/05 06:07 ID:sTSRf1BY
>>844
申し訳ないです。解決しました。
わざわざレスどうもです。

846 :名無しさん@お腹いっぱい。:01/09/05 10:21 ID:.KHO7txo
>>845
どう解決したか書かんかい(*゚Д゚)ゴルァ!

847 :名無しさん@お腹いっぱい。:01/09/05 11:37 ID:wcZpsAAM
たぶんうまくギリシャ文字が出せたんだろう

848 :名無しさん@お腹いっぱい。:01/09/05 12:51 ID:zxq1XBSQ
聞き捨て君ばっかだな、何だコイツら???

849 :名無しさん@お腹いっぱい。:01/09/05 12:55 ID:MuDbSDcw
 あー礼言えとか逝ってんじゃねえよ、結果を書けっつてんの
同じような奴見てるかもとかは考えね訳??
それとも自分が分かった事は重要機密にしてえのか? w
まーどうでもいいや

850 :名無しさん@お腹いっぱい。:01/09/05 13:38 ID:JJ49xIDw
ロックファイルを作るスクリプトを色々と書いているのですが、
以下のスクリプトだと『タイムアウト』が出力されません。
for文内のelse以下に別のif文として書くときちんと出力されるのですが・・・。
なぜなんでしょう?
この文だと『$lockfileがあって、なおかつ$maxが0なら』ということになるのか
な?うーん。混乱してきた。

$lockdir = "./lock";
$lockfile = "$lockdir/lockfile.txt";
$min = "0";

for ($max = "5"; $max >= $min; --$max) {

if ( -e $lockfile ) {

sleep(1);
print "$max\n";

} elsif ($max == "0") {

print "タイムアウト\n";
exit;

} else {

open(FILELOCK, ">$lockfile");
close(FILELOCK);
exit;
}

}

851 :名無しさん@お腹いっぱい。:01/09/05 14:00 ID:ORFkPfok
>>850
>} elsif ($max == "0") {
ここじゃないかな?

852 :名無しさん@お腹いっぱい。:01/09/05 14:47 ID:qCTwY1FI
$lockdir = "./lock";
$lockfile = "$lockdir/lockfile.txt";
$min = "0";

for ($max = "5"; $max >= $min; --$max) {
if ( -e $lockfile ) {

sleep(1);
print "$max\n";

if($max == "0"){

print "タイムアウト\n";
exit;
}
} else {

open(FILELOCK, ">$lockfile");
close(FILELOCK);
exit;
}

}

853 :851:01/09/05 14:52 ID:ORFkPfok
>852
うわ、ちゃんと見てなかった。
すんまそん。

854 :名無しさん@お腹いっぱい。:01/09/05 15:13 ID:jJXUOw7Y
>>850
if-elseは、条件一致したらそれ以下のブロックを飛ばすでしょ。
今のif-else文だと、$lockfileがあって$maxが0の時(タイムアウトと出力したい時)は
一番はじめのifブロックで終わってしまってる。

855 :725:01/09/05 16:17 ID:r9VXJuCk
WebProg板の方々のおかげでだいぶんPerlの
謎が解けました。ありがとうございます。
そこで、また教えていただきたいことがあります。

たとえば、
-- a.pl
$val1 = 'イッテヨシ';
$val2 = 'オマエモナー';

-- b.pl
#!/usr/bin/perl
require './a.pl';
print "$val1\n$val2";
exit 0;
とすると

イッテヨシ
オマエモナー

という出力結果が得られます。ところが、use strict;を使って、
-- a.pl
my $val1 = 'イッテヨシ';
my $val2 = 'オマエモナー';
-- b.pl
#!/usr/bin/perl
use strict;
require './a.pl';
print "$val1\n$val2";
exit;
とするとエラーになってしまいます。どこが間違っているのでしょうか?
多分 my で局所変数宣言しているので、a.pl内で定義した変数が外に
出られないのだとはおもうのです。
他にやり方がある、または無いのでしょうか?
ご教授お願いします。

856 :名無しさん@お腹いっぱい。:01/09/05 16:33 ID:69W8SPrg
-- a.pl
sub itteyosi {
my $val1 = 'イッテヨシ';
my $val2 = 'オマエモナー';
return ($val1,$val2);
}
1;

-- b.pl
#!/usr/bin/perl
use strict;
require './a.pl';
my @val = itteyosi();
print "$val[0]\n$val[1]";
exit;

857 :( ・∀・)y━~~ :01/09/05 21:58 ID:MQF/.FlQ
a.plの方ではmyを使わず、b.plの方で
use vars qw($val1 $val2);
ぢゃだめですか・・・?

今のperlなら
our ($val1,$val2);
かな。。

my使えないけど、myはそういうものだとあきらめておいらは深追いしていません。

858 :835:01/09/05 22:11 ID:MH.oUUAs
>#!/usr/local/bin/perl --
>↑ 一行目こうしたらどうなる?

bash : ファイル名 : command not found
と出ます。

859 :名無しさん@お腹いっぱい。:01/09/05 22:43 ID:sW4ruaF.
>>857
外部ファイルから取り込むのは定数なんだろうから、

-- a.pl
use constant VAL1 => 'イッテヨシ';
use constant VAL2 => 'オマエモナー';
1;

--b.pl
use strict;
BEGIN { require './a.pl'; }
print VAL1."\n".VAL2;

って感じがいいと思うよ。
単純にダブルクォートに入れられないのは不便かもしれないけど。

860 :名無しさん@お腹いっぱい。:01/09/05 22:59 ID:do.WshJo
ん?
そりゃパス間違えてるよ、つか -- を付けろって言ってるんだろ
後、出来たように見えて本当は7**になってないとか
-rwxr-xr-x こうなってるか?
実は/usr/bin/perl5 だったとか
とりあえずcatでもviでも良いからLinuxで書いてみ
プロンプトで cat >hoe.pl ってやって、

#!/usr/bin/perl
print "test";

これだけ入れる、終わったら Ctrl+z で終了。
chmod 755 ./hoe.pl
./hoe.pl
これで動かなきゃしらない。

861 :名無しさん@お腹いっぱい。:01/09/05 23:35 ID:ZkxQdk2c
ホレ!http://chiba.cool.ne.jp/gedouhobby/

862 :835:01/09/05 23:41 ID:O0y3PBhM
>860
やっぱりダメでした。
お手上げです。何が原因かすら不明…

863 :名無しさん@お腹いっぱい。:01/09/05 23:46 ID:EuQ8BRvI
とりあえず、>>835によると合ってるらしいが
$ which perl
の結果を書いてみ。念のため。

864 :名無しさん@お腹いっぱい。:01/09/05 23:58 ID:niWMGH6k
>>835
それより、どんなエラーメッセージなのかを・・・・

865 :名無しさん@お腹いっぱい。:01/09/06 00:10 ID:jxYvqj8.
Linuxつかえんなら大人しくWin使えよ。

866 :名無しさん@お腹いっぱい。:01/09/06 00:17 ID:4627I8LA
if ($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN, $commandline, $ENV{'CONTENT_LENGTH'});
} else {
$commandline = $ENV{'QUERY_STRING'};
}

どうみても普通のアレなんですけど。。。

method="GET"だと$commandline は取れるのに、
method="POST" にすると$commandline に文字列が入りません。

なんでGETだと取れて、なぜPOSTだと取れないのでしょうか?
同じところでずっとはまっています。
何か悪いところがないでしょうか?よろしくお願いします。

867 :850:01/09/06 00:43 ID:ESQY.pDM
>>854
なるほど!

if文は評価式が真なら実行文を実行して終了し、偽なら実行文は実行せずに
elsif文を評価するということですね。逆に言えばif文が偽にならないとelsifは
評価されない・・・。

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

868 :名無しさん@お腹いっぱい。:01/09/06 00:58 ID:lkkYIUpY
use strictが使えないです・・。なんで?アパッチ入れないとやっぱだめ?

win98/ActivePerl/Httpd

869 :名無しさん@お腹いっぱい。:01/09/06 01:11 ID:UxFZPp2o
>>868
そもそも「use strict;」が何なのかを学ぶと良いと思われ。

870 :名無しさん@お腹いっぱい。:01/09/06 01:30 ID:4E8AwmEc
>>855

通常、そういうことをしようとするときは、Exporter を使う。

# a.pm
package a; use base Exporter; @EXPORT = qw($val1 $val2);
$val1 = 'イッテヨシ'; $val2 = 'オマエモナー'; 1;

# b.pl
use a; print "$val1\n$val2";

>>855 >>857

my を使った変数をエクスポートする時は
*global = \$private;
とすると、実質 $private はレキシカルでなくなることを利用してimport を自分で書けば一応可能…かも?
というのも、??? の行を消すとなぜかうまくうごかなかったから。

# a.pm
package a; @EXPORT = qw($val1 $val2);

my $val1 = 'イッテヨシ'; my $val2 = 'オマエモナー';

sub import {
my $c = caller;
my @tmp = ($val1, $val2); # ???
foreach my $e (@EXPORT) {
my ($prefix, $e_sym) = ($e =~ /^([\$\@%*&]?)(.*)/); $prefix = '&' unless $prefix;
*{$c.'::'.$e_sym} = eval "\\$prefix$e_sym"; die $@ if $@;
}
}
1;

(改行が多すぎるらしいため、つめて書いてます)

871 :名無しさん@お腹いっぱい。:01/09/06 01:35 ID:lkkYIUpY
>>868
なんなのかは知ってるけど、仕様の依存性とかのデータが見当たらないんですよぅ。

872 :名無しさん@お腹いっぱい。:01/09/06 04:57 ID:ugAsC9SM
>>871
いやね、「Apacheがないせいでuse strictが使えない?」みたいなことを
書かれた時点で、こいつわかってんのかと思っちゃったりするわけですよ。
ま、そんなのはどうでもいいんだけど、
use strictが使えないって具体的に何がだめなん?

873 :835:01/09/06 09:51 ID:0KMUTKPI
原因が判明しました。
スクリプトを/usr/binにもっていってperlのあるところで実行すると大丈夫でした。
perlのあるところでしか実行できないところをみると
perlのパスが通ってないみたいです。
こんなこと初めてです。一応検索してはいるのですがそれらしきものにヒットしません。
どうすれば解決するんでしょうか?

874 :名無しさん@お腹いっぱい。:01/09/06 10:16 ID:cEL2v6yw
>>873
多分違わないか?
835 で which perl や perl -v が期待した動作をしたと書いているの
だから perl が PATH の通ったところに無いとは思えないのだが
単純にスクリプトの起動のさせ方が間違ってると思うのだが
shell 上からスクリプトをどうやって実行させてる?
スクリプト名を hoge.pl (command prompt を >) として

> hoge.pl

で実行させようとして無いか?

875 :名無しさん@お腹いっぱい。:01/09/06 10:27 ID:MMkqxmBg
./hoge.pl

876 :857:01/09/06 11:01 ID:uCOK.3Ds
>>870
そーゆーふーにやるんだ。今度から使うよ。ありがと〜ヽ(´ー`)ノ

後半のは、良く分からないし、やっぱプライベートな変数を外に出すのは不自然ってことで、気にしないで置きます。
多分>>855も想定しているのは定数だけを記述したファイルを用意したいのだろうし。
それでも外に出したい時は、Getほげほげ関数作ったほうが楽そうですからね(;´∀`)

>>859も、やりかたとしては勉強になりました。
が、""の中に入れられないのは痛い。。。

877 :725(=855):01/09/06 11:15 ID:rIfbk0F2
>>856 >>857 >>859 >>870

どうもありがとうございました。
教えていただいた方法でやってみます。

878 :名無しさん@お腹いっぱい。:01/09/06 12:00 ID:WXMJq9Po
>>858
#! /usr/bin/env perl
でも同じでしょうか

879 :名無しさん@お腹いっぱい。:01/09/06 12:35 ID:I8HVXYHg
要素数が同じ配列が2つあって、その内容が同じかどうか調べたいんですけど、
今は
if ((join "\t", @a) eq (join "\t", @b)){
  なんか処理
}
ってやってます。
各要素にタブ文字を使っていなければこれで十分ですか?
if ($a[0] eq $b[0] && $a[1] eq $b[1] && ...
は見にくいからあんまりやりたくない・・・・

880 :名無しさん@お腹いっぱい。:01/09/06 13:35 ID:cGMUUJcs
>>879
十分と思われます。ただ、配列のサイズがでかいと巨大な文字列が
生成されることになるので、一個一個調べたほうがいいかもね。

for ($i=0; $i<=$#a; $i++) {
unless($a[$i] eq $b[$i]) { 違ってた場合のなんか処理; }
}

881 :名無しさん@お腹いっぱい。:01/09/06 14:29 ID:6hy8D4ok
>>879
順番も一緒か調べたければ
if ("@a" eq "@b") {
hogehoge;
}
が一番簡単かも…。ちなみに要素が同じかどうか調べるなら、
joinする前にsortする必要あり!

882 :名無しさん@お腹いっぱい。:01/09/06 14:33 ID:8PdBtivg
それじゃ
('aaa', 'bbb') と ('aa', 'abbb') が
一緒になっちゃう

883 :名無しさん@お腹いっぱい。:01/09/06 14:35 ID:813rKJ7s
join($;, @a) eq join($;, @b)
が少なくともスペースやタブよりはましかと。

884 :名無しさん@お腹いっぱい。:01/09/06 14:38 ID:4d/uz2yQ
>>882

要素にタブが含まれない配列のタブで結合するんだから大丈夫だべ。

885 :882:01/09/06 14:43 ID:8PdBtivg
882は嘘だった。知ったかぶりスマソ。

886 :725(=855):01/09/06 15:20 ID:rIfbk0F2
>>876

>多分>>855も想定しているのは定数だけを記述したファイルを用意したいのだろうし。

そうです、その通りです。
a.plの変数をb.plとc.plで共有したいなぁと考えていたのです。
教えの通り、hoge.pm作って、use hoge;で上手く行きました。
ありがとうございました。

887 :879:01/09/06 15:51 ID:I8HVXYHg
みなさんありがとうございます。
ちょっと調べたら、>>883 の通りに join $; , @a; の方がいいみたいですね。
文字列は結合後でも500bytesくらいだから大きすぎってことはないと思いますが
joinよりいい案ってあんまりないですか?

888 :名無しさん@お腹いっぱい。:01/09/06 19:00 ID:lOmO3j1c
fork で生成出来る子プロセスの最大数はいくつでしょうか?
ウチの環境(Windows2000 + Active Perl v5.6.1)ではデフォルトで64なのですが、
これはOSまたはperl処理系の仕様上の上限なのですか?
それとも、再定義でもすれば増やせるのでしょうか?

889 :888ゲット!:01/09/06 19:04 ID:lOmO3j1c

あ、同時に、という意味です。

890 :core:01/09/06 19:36 ID:n.BZs/nc
今Linuxでperlやってますが実行するときに必ず
./hogehoge.plというように./をつけないとうまく機能しません。
./をつけなくても機能するようにはできないでしょうか?
使っているのはRedHatLinuxでperlは5.6です。

891 :名無しさん@お腹いっぱい。:01/09/06 19:53 ID:gTPPtJlU
>>890 このスレでPerlスクリプトがうごかねぇって騒いでた人?

892 :ひまぢん:01/09/06 19:59 ID:ji/LQ9h6
takoが怪しいからちょっとミラーしてみたよ。
他にも良いスレ探して適当に置いとくんでよろ
>>890
パスを通すってやつ、bashだっけ?の.profile辺りをいじるべし
検索すればFAQごろごろ、但しセキュリティー上よろしくないのでよろ

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

893 :$PATH:01/09/06 20:01 ID:7zClg5yE
DOS窓じゃないんだから諦めな

894 :名無しさん@お腹いっぱい。:01/09/06 20:06 ID:8PdBtivg
Slackwareだとデフォルトで「.」が$PATHに入ってた。
(root以外の場合ね。)最近インストールしてビクーリ
したよ。というわけで >>890 はSlackwareに乗り換え
を推奨。

895 :名無しさん@お腹いっぱい。:01/09/06 20:49 ID:hH7VhveI
>>888
ActivePerlでperldoc perlforkを見たら、forkの最大数は
システムのいろいろな制限で上限が決まる、とかなんとか書いてあったよ。
WinNTだとスレッドの最大数が64て制限があったかもしれない。

896 :名無しさん@お腹いっぱい。:01/09/06 21:43 ID:???
# vi ~/.bashrc

PATH="$PATH":.

# source ~/.bashrc

897 :888:01/09/06 22:12 ID:lOmO3j1c
>>895
ドキュメント見ました。
perlのみでの変更は出来そうも無いですね。
ありがとうございました。

898 :名無しさん@お腹いっぱい。:01/09/07 04:45 ID:???
>>892 過去ログアップ乙カレー。
新スレ立てるときに参考リンクに入れましょー。

899 :超超初心者:01/09/07 10:08 ID:24e7eVxc
Perlの超超初心者です。
今やりたいことはUNIX環境上にあるファイルを開いて半角カタカナを
全角カタカナにしようとすることです。
そういう質問はこちらで聞いても構わないでしょうか?

またもし過去ログに同質問があったらごめんなさい。
過去ログ見たのですが、なかったように見えましたので.....。
レスお待ちしてます。

900 :名無しさん@お腹いっぱい。:01/09/07 10:24 ID:???
>>899
http://www.din.or.jp/~ohzaki/perl.htm#JP_HK2ZK
この辺。

901 :初心者:01/09/07 12:25 ID:pn62mP8w
Perl初心者です。

ある変数に入っている文字列が「全角カタカナ」のみという
正規表現の書式を教えてください。

「全角ひらがな」はいろいろと検索してでてきました。
$hoge =~ /(?:\x82[\x9F-\xF1])/
でした。

902 :名無しさん@お腹いっぱい。:01/09/07 12:35 ID:???
>>901

1に「>>2のリンクを一通り見てみよう。」と書いてるのが見えませんか?

903 :わからず:01/09/07 18:01 ID:???
サブルーチンへ引数を渡すところで困ってます。
配列とハッシュの混在したものを渡して、
それぞれを使うということはできないのでしょうか?
グローバル変数にしてしまえば、、とも思ったのですが。どうしてもローカル変数でやりたくて。
リファレンスや型グロブのあたりを調べたのですが、正直わかりませんでした。
解決の手ほどきをお願いします。


↓こんなことをしたいです。

@list = &getList;
%hash = &getHash;
$str = &routine(@list, %hash); # これがやりたい

sub routine {
my(@list, %hash) = @_; # これも希望
my(@keys) = keys(%hash);
my ($a, $b, $s, $str);
foreach $a (@list){ # こんな感じで使いたい
foreach $b (@keys){
$s = $a + $b;
}
$str .= $s;
}
return $str;
}

904 :わからず:01/09/07 18:03 ID:3Gw2HsKo
再送

@list = &getList;
%hash = &getHash;
$str = &routine(@list, %hash); # これがやりたい

sub routine {
my(@list, %hash) = @_; # これも希望
my(@keys) = keys(%hash);
my ($a, $b, $s, $str);
foreach $a (@list){ # こんな感じで使いたい
foreach $b (@keys){
$s = $a + $b;
}
$str .= $s;
}
return $str;
}

905 :名無しさん@お腹いっぱい。:01/09/07 18:29 ID:???
>>904
routineを呼ぶとき、リファレンスを渡す形でいい?
それでよければこんな感じで。

$str = &routine(\@list, \%hash);

sub routine {
my($list_ref, $hash_ref)=@_;
my @keys=keys(%$hash_ref);
foreach my $a (@$list_ref) {

以下略

906 :わからず:01/09/07 18:48 ID:???
>>905
仰せの通りでした!できました!!
サンプル見てがんばってたとき、「@$hash_ref」とやっていました。(サンプルがそうだったので・・・)WebProgしかやったことないので、リファレンスとかポインタとか微妙にわかってません・・・。
勉強します!!

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

907 :Ne! Perl:01/09/07 20:41 ID:???
今、入れようとしているCGIなんですけど

> これは、いくつかのperlモジュールを利用して動きます。
> それらは全てフリーで配布されているものです。
>
> Mail::POP3Client;
> Mail::Sendmail;
> MIME::QuotedPrint;
> MIME::Base64;
> CGI;
> 'jcode.pl';

って書いてあります。
共有サーバーなんですけど、どのフォルダに入れればいいんですかね?
パーミッションはいくつに…?
もろ、初心者質問でスマソ。

908 :なー:01/09/07 21:08 ID:LmWrXSYQ
てすと。

909 :maji?:res:01/09/07 21:21 ID:jyahklrM
>907
どこでも突っ込んでパスを叩いてください。
パーミッションはそれぞれの指定に従って。

この感じだとメールフォームだと思うけど
そもそもsendmailは使用可能かどうかも調べてね。

910 :名無しさん@お腹いっぱい。:01/09/07 23:30 ID:???
2chのリンク貼り方みたいな正規表現
>>2-3
というようなのURLみたいに変換するのどーやればスマートに書けますか?
初心者なんで解説付だと嬉し。

911 :名無しさん@お腹いっぱい。:01/09/07 23:50 ID:???
http://www.din.or.jp/~ohzaki/perl.htm#httpURL
ここに行って何も考えずにソースをパクリましょう。
後、自動リンク、正規表現、とかで検索すれば色々出てくるので
これも又何も考えずにそのままコピペして下さい。
とにかく解ろうとしない事です、正規表現メモなんで見るもんじゃないよ

912 :名無しさん@お腹いっぱい。:01/09/08 00:01 ID:???
s/(http[^\s]*)(.*)/<a href=\"$1\">$1<\/a>$2/;
これでいいだろ  (ワラヒ

913 :名無しさん@お腹いっぱい。:01/09/08 14:21 ID:???
折衷案でこんな所でどうだろう。
$comment =~ s|(http://[\~\./\?\=\&\:\-\%\w\$\#]+)|<a href="$1">$1</a>|;
上とかこれを参考に自分で変えていけば面白いと思うよ。

914 :910:01/09/08 17:39 ID:???
>>911-913
ありがとうございます。
911のリンク先には人間が書いたとは思えない
正規表現とかもありますね…(汗
if (index($str, $keyword) > -1) {正規表現 }とindex使うとスピードUPするなど勉強になりました。
URLのリンクではなくてスレッド内レスへのリンクで
>>911>>911-913
というような2種類をひとつの正規表現で書けるのかな?
僕はどうしても>>911マッチ後-913がついているヤツをマッチと2つ書かないと
うまく出来ません。

915 :名無しさん@お腹いっぱい。:01/09/08 18:34 ID:???
質問させてください。

@INCに付いてなのですが、任意のディレクトリを追加したいと考え
push (@INC,"./module/")  などとしても全くダメな様です。
これはPerl自身が叩かれた時にセットしなければならないのでしょうか

それともう一つ、strictモジュールなのですが何故か、Perl5.6 on Cygwin
な環境では一切機能しない様です。'vars'としても何事もなく危険な構文が
通ってしまいます。  5.0 FreeBSD では問題無く動いているのです。
一応ソースを見てみたものの、短いけれど理解出来ませんでした。。
他の標準モジュール(Cwdなど)は全く問題無く動いています。

ヒントを頂けたらとても嬉しいです。

916 :名無しさん@お腹いっぱい。:01/09/08 19:01 ID:???
>>914
| >>911>>911-913
| というような2種類をひとつの正規表現で書けるのかな?
うー。俺もかけません。正規表現の中で条件判断とかするのかな。
正規表現道場スレに移って偉い人に聞いてみるか?

>>915 前半
@INCはperl起動時に設定しないといけないので、そういうのは
BEGINブロックに入れるんだと思った。
BEGIN { push (@INC,"./module/"); }

917 :名無しさん@お腹いっぱい。:01/09/08 19:01 ID:???
>>915
BEGIN{ unshift(@INC, "$ENV{HOME}/perl5lib") }
#or
use lib "$ENV{HOME}/perl5lib";

cygwinのPerlでもstrictは普通に動くが?

$ perl -Mstrict -e 'print $var'
Global symbol "$var" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.
$

918 :>914:01/09/08 19:41 ID:???
>>>911>>911-913
>というような2種類をひとつの正規表現で書けるのかな?
たとえば、
$subject =~ s|>>(\d+)(-(\d+))?|qq(<a href="$this_script?bbs=$board&key=$key&st=$1&to=).($3 or $1).qq(&nofirst=true" target="_blank">>>$1$2</a>)|eg;
とか・・・。

919 :918:01/09/08 19:42 ID:???
ありゃ、&gt;とかが潰された(w

920 :名無しさん@お腹いっぱい。:01/09/08 20:18 ID:???
>>916 >>917さん
どうも、即レス感謝です。勉強になります。なるほど!
BEGINブロックとENDブロックは特殊な読まれ方をするんですね。

>>BEGIN ブロックは即座に実行されるため、
>>サブルーティンなどの定義を他のファイルから読み込んで、ファイ
>>ルの残りの部分から見えるようにすることができます
と書いてるので、これは他にも便利そうです ^^

>$ perl -Mstrict -e 'print $var'
あれ??? 僕も今やり直したらちゃんと動いています。 おかしいな。。
確かに同じソースを、Freeにアップして両方catして確かめた筈なのですが、、
ごめんなさいです、今はちゃんと怒られています。
一々FTPで上げてるから分からなくなったのかな、、環境を考えないと。。。

勉強になります、ありがとう御座います。

921 :名無しさん@お腹いっぱい。:01/09/08 20:27 ID:???
>>914
えっと、僕も2ch型のソースを見てみました。
2段階に分けてる様です。

ログに吐き出す操作では。。。
bbs.cgiで ('>>\d' 形式は変換、http〜はそのまま)→ログに書き込み→
→読み出し時に (read.cgiでhttp〜を自動リンク)

index2.htmlの生成では。。。
bbs.cgiで、まず('>>\d')形式を変換、次に(http〜)形式を変換→print

としてる様です。2回正規表現くぐってるんですね。
何故 '>>\d' を変換してログに書くのかが謎ですが、、
多分後から追加された機能だから、read通す時にまずい事になるのかな。。。

922 :920:01/09/08 22:02 ID:???
>>917さん、
何だかマヌケですが原因が分かりました (-_-
perl -Mstrict -e 'print "$a";'
だとダメで、、
perl -Mstrict -e 'print "$hoge";'
だとちゃんと動いてます。

Cygwinの方はコマンドを叩いて($aを良く使ってしまうんです)、
BSDの時はスクリプトを実行してたのが原因でした。(あほだ、、

aって何なんだろう。。特殊変数じゃない筈だし、、、、
勉強します。 strictのソースかなぁ
しかし、aとfooなんて一緒と思うから理解するのに1時間位かかった(鬱

923 :名無しさん@お腹いっぱい。:01/09/08 22:03 ID:???
>>920
$aと$bはsortの時に使う特殊変数になっているはず。

924 :920:01/09/08 22:06 ID:???
ああ、bも予約されてるぅ。。cからが空家なのか
段々恥かしくなって来た、ROMに戻るです。

925 :920:01/09/08 22:10 ID:???
>>923 う、sortだたですか。 はずかしっ
ありがとう御座います。 アルファベットは空だと思ってた
消えますぅ  。。。。(^ ^ )サササッ

926 :use Net::SMTPについて:01/09/09 02:43 ID:he2Uykuk
教えて下さい。
NTサーバで動いているプログラムで、use Net::SMTPを使って
サイト上のメールフォームからメールを送信させています。
最近、ファイヤーフォールを変えたらしいのですがその直後から
フォームからのメール送信ができなくなってしまいました。

use Net::SMTPはファイヤーウォールの設定によっては使えなくなったり
するのですか?またその場合、どの部分の設定をどう変更すればいいのでしょうか。

何もわからない哀れなカエルに知恵を授けて下さい

927 :体育祭の名無しさん ◆B6fYuXhU :01/09/09 19:15 ID:PuCsmJ7M
どうも、初めまして。

perlをつかって、cookie認証が必要なページを取得しようとしているのですが、
どうすれば用でしょうか?

普通のページの場合LWP::Simple を使用して、
get("http://〜");

などして取得できるのですが、cookieを使用する場合どうすればいいのでしょうか?

具体的には、Aページで、cookieAを取得し、
次に、Bページで、そのcookieを使用して、認証したいのです。

自分なりに書いてみたのですが、
どうすればいいのでしょうか?
http://blue.ribbon.to/~atu/TestScript.txt

よろしくお願いします。

928 :名無しさん@お腹いっぱい。:01/09/09 20:00 ID:???
>>927
リクエストヘッダーにぶち込めば良いと思われ。
LWPにそういった機能がありそうだけど
rfc見て自分でカスタマズしてもそんなには難しくないと思われ。
http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2109.html

929 :名無しさん@お腹いっぱい。:01/09/10 19:02 ID:mDibE0X6
>>927
LWPを使うときは、そのスクリプトで基本的に問題ないみたい。
UserAgentにcookie_jarをセットすると、あとは自動的に
クッキーの読み込みも書き出しもやってくれるらしい。

↓このスクリプトでちゃんとPageAで得たクッキーをPageBに渡せたよ。
use LWP::UserAgent;
use HTTP::Cookies;
my $PageA = "http://www.my.domain/";
my $PageB = "http://www.my.domain/hoge.cgi";
my $ua = LWP::UserAgent->new;
$ua->cookie_jar(HTTP::Cookies->new);
$ReturnA = &HttpGet($PageA);
$ReturnB = &HttpGet($PageB);

ただしクッキーを読み書きするときは
ドメイン名に少なくともドットが2個ないとエラーになる。
だから最初 "http://localhost/" でテストしたとき
全然うまくいかなくて悩んだ。

930 :ひきこもりたいっ:01/09/10 23:49 ID:???
色んな配布スクリプトなんかを改造したりしてるんですが
良く上の方にある
$script... #-- スクリプトの名前
こんな感じの大域変数の扱いに困ってます、酷いのになると50個位あったり
して、こんな正確なので出来れば閉じ込めたいんですが、自分で考えたのは
全体を sub SETTING とかで囲んで、参照したい時は &SETTING(script)
で使うという感じです。
もっと他に良いやり方はありますか?

931 :名無しさん@お腹いっぱい。:01/09/11 00:19 ID:???
・%Configに入れる。名前で参照[$Config{hoge}]
・@Configに入れ、enumを使って定数列を作成。名前で参照[$Config[HOGE()]]
・use constantまたはsub name(){ value }で定数を作成し参照[HOGE()]
・変数を全て大文字にするだけで済ませる[$HOGE]

932 :名無しさん@お腹いっぱい。:01/09/11 00:44 ID:???
・パッケージに入れてour宣言つーのは?
package Setting;
our $script = "hoge.cgi";
package main;
print "$Setting::script\n";

933 :名無しさん@お腹いっぱい。:01/09/11 18:45 ID:.epadQJg
初心者です。

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

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

934 :名無しさん@お腹いっぱい。:01/09/11 19:48 ID:???
>>933
スレ違いです。
http://corn.2ch.net/test/read.cgi?bbs=php&key=988808396
どういう値をcookieで渡したいのかを明記すれ。

935 :名無しさん@お腹いっぱい:01/09/11 20:24 ID:???
全体を見てないけど、クッキーのフォーマットは多分あってる
(つーか解らなかったらAskaのをそのまま使いなよ)
                      ~~~~~~~
んで何故ダメかと言うと多分
printする場所が間違えている(Content-typeを指定した後で吐いている)
不幸にも Set-Cookie させてくれないServerを使っている
ブラウザのクッキーがOFFになっている(・∀・)
この辺かな、確認用のスクリプト書いてみる事をおすすめする

936 :名無しさん@お腹いっぱい。:01/09/11 22:13 ID:dnQFE/9w
他の掲示板等ではクッキーがきくし・・・

やっぱりスレ違いなのかな・・・

937 :名無しさん@お腹いっぱい:01/09/11 22:17 ID:???
もうちょっと細かく書けよ、SET出来てないのかGET出来ないのか
渡した奴が化けるのかって感じで それ書いたらソース見る事にするわ

938 :名無しさん@お腹いっぱい。:01/09/11 22:29 ID:???
>↑実際使っているサーバーはCGI可です。

ドコ?トクトクだったらブトバスー

939 :名無しさん@お腹いっぱい。:01/09/11 22:39 ID:dnQFE/9w
GETできてません。
SETはできてるのかわかりません・・・

サーバーはトクトクじゃないです。(無料じゃありません。)

940 :名無しさん@お腹いっぱい。:01/09/11 22:55 ID:dnQFE/9w
すいません逆でした。

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

941 :名無しさん@お腹いっぱい。:01/09/11 23:31 ID:lMfDpcz2
ビルが無くなったYo

942 :941:01/09/11 23:35 ID:???
誤爆。貿易センターねらったつもりが
両国国技館につっこんでしまったようなモンだな

943 :名無しさん@お腹いっぱい。:01/09/11 23:48 ID:???
>>942
意味がよく分からんけど、俺も興奮してるから激しく同意!!

944 :名無しさん@お腹いっぱい。:01/09/12 02:09 ID:???
そろそろ新スレッドの時期。
950を踏んだやつが新スレを立てる、ってことでいいっすか?

945 :名無しさん@お腹いっぱい。:01/09/12 02:18 ID:???
>944
初心者が書き込みしづらい状況になりうると思うから反対。
もしくは何も知らない初心者が踏んでも困るだろ。
逆に950を踏みたくないが為に初心者に対するレスが出なくなるのも困る。
これ以降の人で誰か有志が立ててくれ。

946 :名無しさん@お腹いっぱい。:01/09/12 03:11 ID:???
折角だからリンクに追加

Perlのページ
http://homepage1.nifty.com/nomenclator/perl/
文字コードに関する話題
Shift_JIS関係のモジュールなど

Perl初心者の部屋
http://www.harukaze.net/~mishima/perl/
定番だが何故か無いので
古いから?

947 :名無しさん@お腹いっぱい:01/09/12 12:41 ID:???
立てようか?・・

948 :名無しさん@お腹いっぱい:01/09/12 13:11 ID:???
             , -―- 、
        , l[》《]|      ヽ
        / i/ i ノノノ ))))〉     / ̄ ̄ ̄ ̄ ̄
.      / i i |(リ ( | | | !    / 質問答えてくれたみなさん
      〈ヘ|_|l| l ゝ~ lフ/|   <.  .ありがとうっ
       / | | |( ヽwliヽ |       \ このスレはおしまいだよ。
      / /! | l ヘ《~ヘii~∧ ∧     \_____
     /  /ノノ! ノ|リ〉 \/( ゚ω゚)
   / ,  ./-‐- 、/V\ハ_ヲUU
   !/ ./    / / |   ゝ つつ
   ヽ_/   ./    !    jj  \
       /               i
      〈   /        |      |'
       ゝ /    l    |   !/
        `〜‐-L__」〜'^

 ・新スレッドはこちら:http://corn.2ch.net/test/read.cgi?bbs=php&key=1000267444

949 :名無しさん@お腹いっぱい。:01/09/12 13:21 ID:???
ごくろうさま

950 :_gunzip:01/09/13 06:21 ID:???
ごくろうさま
...って950踏んだりして。

951 :名無しさん@お腹いっぱい。:01/09/15 11:03 ID:???
1000狙ってみたりして

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

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

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)