Site hosted by Angelfire.com: Build your free website today!
■過去ログ倉庫めにゅーに戻る■

【Perl 】初心者コーナーPart5

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

2 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/01(火) 23:42 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
【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/05/03(木) 22:32 ID:HAK5ITOE
age

4 名前:名無しさん@いつも空腹 投稿日:2001/05/05(土) 09:33 ID:???
鯖移転したのかな?
本当にPart5はここでいいのかな?
最近はトップページ(インデクス)見てないからわからな〜い(はあと

5 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/05(土) 16:42 ID:xlcP2XLA
小数点の含まれる引き算を行なうと、たまに0.000000000000001の
誤差が出ることがあります。
10.45-9.55の答えが0.899999999999999とかになるのですが、
どなたかこの現象の原因と解決法をご存知ないでしょうか?

6 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/05(土) 18:15 ID:???
>>5
いい所に気がついた。
長くなるので原因については割愛。

解決法は幾つかあるが、簡単なのは(s)printfだな。

printf '%.2f', 10.45 - 9.55;

$d = sprintf '%.2f', 10.45 - 9.55;
print $d;

7 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/05(土) 20:27 ID:???
>>6
カコイイ。。。
有能な回答者はコテハン化きぼーん!

8 名前:5 投稿日:2001/05/05(土) 23:02 ID:???
>>6
ありがとうございます。
とりあえずなんとかなりました。

後学の為に原因も知っておきたいのですが
どこかにそれを記載している場所などを
ご存知でしたら教えていただけないでしょうか?

重ねての質問申し訳ありません。

9 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/06(日) 00:14 ID:???
>>8
たとえばここ。
http://www.sail.t.u-tokyo.ac.jp/~aida/cp97/971219.html
Googleで「浮動小数 計算誤差」とか入れて検索すればわらわら
見つかる。

10 名前:6 投稿日:2001/05/06(日) 00:23 ID:???
>>8

原因を一言でいうと「Perlの内部では数値は文字列として格納されているわけではない」って事だな。
変数に型のある言語(Cなど)を扱っていれば理解しやすいし、教えやすいのだろうが
あいにくPerlオンリーな俺に分かりやすく詳しい説明は無理だ。スマソ。

だが「後学の為に知っておきたい」という意欲があるのならラクダ本でも買ってみたらどうだろうか。
浮動小数点数の精度については少ししか載っていないが、損はしないと思うぞ。

代わりといっちゃなんだが>>5の別の方法
>>6の他に標準モジュールのMath::BigFloatを使うという手がある。
これなら精度は無限だ。
#!/usr/bin/perl
use Math::BigFloat;

$a = Math::BigFloat->new(10.45);
$b = Math::BigFloat->new(9.55);
$c = Math::BigFloat->new('0.123456789');#小数点以下が長い場合は文字列としてnewに渡す

print $a - $b, "\n"; #".9"
print $a + $b + $c. "\n"; #"20.123456789"

__END__



>>7
ヘタレをおだてないでくれ(w;
コテハンはJapuさんや_gunzipさんくらいにならんとな・・・。

11 名前:5 投稿日:2001/05/06(日) 02:03 ID:???
>>10
丁寧な解説ありがとうございます。
ラクダ本に載っているのは知りませんでした。
まだ途中までしか読めていないので。
これから頑張って続きを読んでいきたいと思います。
本当にありがとうございました。

12 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/08(火) 15:31 ID:Ngqkrj.g
すいません、教えてください
入力フォームからデータを受け取ってPostgreSQLにデータを渡す際に日本語は
文字化けしてしまいます。
どのようにしたらいいのでしょうか?

13 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/08(火) 16:22 ID:???
>>12
URIエスケープってオチは無いよな?

14 名前:nanasy 投稿日:2001/05/08(火) 16:24 ID:MgnUxoZo
連想配列のサイズの制限は?

いまは、なんでもかんでも連想配列に放り込んでいる(だって、便利だもん)んだけど、
将来的には、データサイズが大きくなりすぎたら、自動的にSQLのDBとかを叩く、みたいな
仕様を考えてます。
で、質問。
連想配列(にかぎらず、PERLの変数全般)に、サイズのリミットをかけることは
可能ですか?

# 心配しなくても、仮想記憶が解決してくれるよ、ってのはナシ。

15 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/08(火) 16:28 ID:???
>>14
サイズ=キーの数って意味なら
擬似ハッシュというものがある。
通常のハッシュより遅いけどな。

データサイズが大きくなりすぎて困るってのなら
DB_Fileを使うという手もあるぞ。

16 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/08(火) 16:33 ID:???
追記

Perlの変数にサイズを設ける事は、可能。
tie()を調べよ。

17 名前:12 投稿日:2001/05/08(火) 17:07 ID:Ngqkrj.g
フォームからの入力を受け取る

EUCに変換

insert into * values (hoge,hoge2);

(゚д゚)ダメダコリャ

という感じなのですが

18 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/08(火) 17:40 ID:???
>>17
その文から想像するに
#--
$query = $ENV{QUERY_STRING}
or
read STDIN, $query, $ENV{CONTENT_LENGTH};
$query = Jcode->new($query)->euc;
#--
とでもやってるのか?
そりゃダメだわ(藁

19 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/08(火) 17:41 ID:???
表示は文字コード何?

フォーム(Shift_JIS)

EUC-JPに変換

DBに入れる

表示(Shift_JIS)

とかDBから表示の際に文字コード変換してないとか言うオチじゃない?
もしくは半角カナ入れてるとか。

20 名前:12 投稿日:2001/05/08(火) 18:13 ID:Ngqkrj.g
>>18さん>>19さんありがとう
>>19さんのご指摘の通りでした、修行しなおしてまいります。
半角はさすがに。。。

21 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/13(日) 12:01 ID:/ewKYqPQ
どなたか教えてください。
yomikomi.txtというテキストファイルにデータが
一行に一つずつ入っています。何個データが入ってるか判りません。
それを配列に入れて、とりあえずランダムで要素を一つだけ選びました。(kazu1)
もう一つ配列の中からランダムで選びたいです。
ただし、先に選んだkazu1以外の要素にしたいです。(kazu2)
↓のようにやってみたのですが上手くいきません。

#yomikomi.txtを@nyuuryokuという配列にする
open (KENSAKU,"<yomikomi.txt");
$count = 0;
while ($nyuuryoku[$count] = <KENSAKU>){
    chop $nyuuryoku[$count];
    $count = $count + 1;
}
close (KENSAKU);

#とりあえず、ランダムで要素を一つ選ぶ
srand();
$kazu1 = int (rand($count));

#もうひとつ、ランダムで要素を選ぶ
srand();
rand;
$kazu2 = int (rand($count));

#選んだ要素(kazu1 と kazu2)が同じならkazu2を選びなおす
while (kazu1 == $kazu2){
rand;
$kazu2 = int (rand($count));
}

#表示して確認。※ここで$kazu1とkazu2がそれぞれ違っていれば
#良いのですが同じになってしまいます。
print "$count ←要素数\n";
print "$kazu1 ←kazu1\n";
print "$kazu2 ←kazu2\n";
exit;

22 名前:22世紀を目指す名無しさん 投稿日:2001/05/13(日) 13:23 ID:tI0gSNbQ
http://chat.gaiax.com/ここのチャットには
「プライベートチャット」なるjavaでできた他人には見れない会話システムがあるのですが、
これらを全て丸見えに出来る方法があると聞きました。
これは本当ですか?あったら教えてください。
日曜の昼下がりですがお願いします。…ひょとして板違い?

23 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/13(日) 14:53 ID:???
>>21
ちょっと無駄が多いな。

open (KENSAKU,"<yomikomi.txt");
$count = @nyuuryoku = <KENSAKU>;
close (KENSAKU);

srand();
$kazu1 = int (rand($count));
$kazu2 = int (rand($count));

while ($kazu1 == $kazu2){
$kazu2 = int (rand($count));
}

print "$count ←要素数\n";
print "$kazu1 ←kazu1\n";
print "$kazu2 ←kazu2\n";
exit;


srandは1回にしろ。
『srand』(乱数の初期化)は、()を省略した場合、その時の時間を入れる。
sleepでもかけない限り、srandの結果は大抵同じになるってこと。
あと、所々$が抜けてるからそれも確認してみな。

24 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/13(日) 15:06 ID:???
#!/usr/bin/perl
use FileHandle;
srand;
chomp(my @in = FileHandle->new('< yomikomi.txt')->readlines);
my($n1, $n2);
until($n1 eq $n2){
    ($n1, $n2) = (int(rand(@in)), int(rand(@in)));
}
my $count = @in;
print <<EOD;
$count
$in[$n1]
$in[$n2]
EOD
__END__
ところどころvoidでrandが置いて有るのがよく分からんが

25 名前:21 投稿日:2001/05/13(日) 15:59 ID:RORO2Xd.
23さんありがとうございます。
> srandは1回にしろ。
親切に教えていただいてありがとうございます。
> あと、所々$が抜けてるからそれも確認してみな。
すみません。全く気づかなかったです。
-wcでチェックしたんですがエラーにならないんですね。

24さんありがとうございます。
> ところどころvoidでrandが置いて有るのがよく分からんが
何回も呼び出したほうが、よりランダム性が高まるかと思って使いました。
24さんのスクリプトは自分にはかなり難しいですが勉強になります。

26 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/13(日) 18:44 ID:???
>-wcでチェックしたんですがエラーにならないんですね。

use strict 'subs';によりそのような間違いを回避することが出来ます。

27 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/14(月) 12:39 ID:ja2f3uZE
perlってlinuxだと大抵デフォルトで入っているんだけど
HP-UXだと公式には入っていないのでソース持ってきてインストール
しなきゃならんですよね。SUNとかIBMとかはどうなんでしょか?

28 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/15(火) 03:11 ID:???
乱数にはrand()というのがありますが、かなり質の悪い乱数のように
思えます。
もう少し綺麗な乱数を作るにはどうしたら良いんでしょうか?

勿論、rand並に手軽に使えるぐらいの大きさで、ですが。

29 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/15(火) 03:31 ID:???
>>28
逆に聞きたい。
キミの言う綺麗な乱数とは何か?

30 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/15(火) 03:41 ID:U38TPPmg
>>28
前にプログラム技術板でよさげなやつを見たなあ。えーと、
http://piza.2ch.net/test/read.cgi?bbs=tech&key=978946000
これこれ。レス82にあるメルセンヌツイスターというやつです。
どうでしょ。

メルセンヌツイスターホームページ
http://www.math.keio.ac.jp/~matumoto/mt.html
Cで書かれたコードに直リンク
http://www.math.keio.ac.jp/~matumoto/mt19937int.c

31 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/15(火) 04:19 ID:itC.85zc
いろいろ、
http://search.cpan.org/search?mode=module&query=random

Mersenne Twister使った、Math::Random::MT ってのもあるね。

32 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/15(火) 11:13 ID:???
がいしゅつかもしれないけど、昨日こんなコードではまってしまった.

function Ike($mojiretu = NULL)
{
//文字列があったら処理せよ.
if ($mojiretu)
{
echo "逝ってよし";
}
else
{
echo "文字列ないよん";
}
}
このコードは、 $mojiretu = "0"; がきたときには else に分岐してしまう.
ちゃんと、 if ($mojiretu != NULL) と、しないとだめなのだ...
実行時に型判別の恐怖.鬱だ.

33 名前:32 投稿日:2001/05/15(火) 11:15 ID:???
PHPのスレと間違えました.
ごめんなさい.

34 名前:名無しさん 投稿日:2001/05/15(火) 14:52 ID:hcMTBPhU
CRとLFの改行って何が違うのですか?

35 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/15(火) 17:03 ID:???
文字が違います。

36 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/15(火) 18:24 ID:c9i14K.Y
UNIX LF   \n
Win CR+LF \r\n
Mac CR   \r
かな

37 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/15(火) 18:33 ID:???
>>36
シッタカはカコワルイね
WinでもUnixでも(多分Macでも)改行は\nだよ

38 名前:37 投稿日:2001/05/15(火) 18:36 ID:???
binmodeすればWinの\nとUnixの\nは同じになるけど。
(Macは知らん)

とりあえずLFは改行、WinだとCRというゴミが付くと思っていれば良いんじゃないの?>>34

39 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/15(火) 19:27 ID:itC.85zc
CR \x0D \015 \cM
LF \x0A \012 \cJ

40 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/15(火) 22:46 ID:a8Q7zCBA
myの使い方について質問です。

1;foeeach my $var(@array){ }
2;my $var; foreach $var(@array){ }

この1の使い方、毎回my宣言しているので2と比べ効率が悪い気がするのですが、
JAPUさんなどはよく1の方法で回していますよね?
これは何か理由があるのでしょうか。

41 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/16(水) 00:15 ID:1AgH6foc
>>40
おれも無意識に1の方法を使ってるなあ。なぜかと考えるに、
$varのスコープをブロック内に局所化できるのが
気持ちいいから、ではなかろうか。

42 名前:40 投稿日:2001/05/16(水) 10:15 ID:ufM2vq4Q
訂正) s/foeeach/foreah/;

>>41
簡単なベンチマークを取ったところ、数%ですが2の方が高速でした。
気にするほどではないと思いますが、
無意識に1の方法を取るほどいいメリットとも思えません…<$varのforeachブロック内への局所化
他に利点は無いのでしょうか?

43 名前:初心者過ぎる人 投稿日:2001/05/16(水) 11:19 ID:E0ODptoI
すみません新規質問です。
ASPで動くXML::DOMモジュールはどこにあるんでしょうか?

44 名前:JAPU 投稿日:2001/05/16(水) 13:59 ID:???
私が 1. の方法を利用するのは、>>41 さんと同じ理由です。
変数は可能な限り局所化する主義なので。

# その2%程度が気になるような人はアセンブラで組めば良い。:-p

45 名前:40 投稿日:2001/05/16(水) 15:15 ID:ufM2vq4Q
>>44
なるほど。納得しました。
>>41, >>44 ありがとうございます。

ずっと気になっていたのでスッキリしました。

46 名前:初心者 投稿日:2001/05/16(水) 17:03 ID:dHgf5I9c
スクリプトA.plの中からスクリプトB.plを起動させるときに
B.plへ変数を渡す方法とB.plが終了した事をA.pl内で
判断する方法を教えてください

お願い致します

47 名前:初心者 投稿日:2001/05/16(水) 17:19 ID:dHgf5I9c
スクリプトA.pl内

 system(perl B.pl $A $B $C > $log_file)

open(LOG,"< $log_file")


というコーディングでよいのでしょうか?

48 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/16(水) 17:52 ID:???
>>46
require 'A.pl';
では不満なのか?

49 名前:初心者 投稿日:2001/05/16(水) 17:58 ID:dHgf5I9c
>>48
Aの中から変数を与えてBを実行し
Bのログをファイルにリダイレクトさせた物を
再びAの中で加工したいのです。

50 名前:名無しさん 投稿日:2001/05/16(水) 18:02 ID:dUC0dSnc
チャットについて質問です。
チャットのリロード機能がついてる仕様は絶対にフレーム型でしょうか。
つまり、chat.cgiで入力フォームと会話表示(ログ表示)部分をlog.htm
などとします。
log.hmにrefreshを使い自動更新しますよね。
しかし、入力部分と会話表示部分がひとつ画面だと
chat.cgiを更新してしまうので入室画面に戻ってしまいます。
結論は、フレーム型のチャットが嫌なので一体型で自動更新したいのですが
何か方法はありますでしょうか?

51 名前:名無しさん 投稿日:2001/05/16(水) 18:04 ID:dUC0dSnc
>つまり、chat.cgiで入力フォームと会話表示(ログ表示)部分をlog.htm
>などとします。

ちょっとここは書き間違いです。

52 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/16(水) 18:16 ID:???
>>50
理屈の上ではフレームを使わないCGIも作れます。
でも書き込みしてる最中にリロードが起きると、
せっかく途中まで書いた文章が消えちゃうよ?
それって利用者から文句出まくりだと思うんだが。

53 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/16(水) 18:31 ID:???
>>49
とりあえず>>47でいいのでは。
systemの引数がクォートされてないのだけ気になったけど。
こうね => system("perl B.pl $A $B $C > $log_file");

54 名前:せちがないにぎりめし 投稿日:2001/05/16(水) 19:14 ID:???
ごく簡単な改造でイイと思うんだけど
作製依頼は何処で出したらイイですか?

55 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/16(水) 19:40 ID:???
>>54
それに最も近いスレッドは↓ここか。
[スクリプト改造工房] http://corn.2ch.net/test/read.cgi?bbs=php&key=988808396
ただし答える人はそう多くない。無視されたらあきらめること。

56 名前:投票などについて 投稿日:2001/05/17(木) 00:11 ID:T3NJy0u2
どのスレに書き込むか迷ったので初心者に書きます。

ある板でロゴの投票をしようという事になったのですが、
Win板のロゴ投票では、投票した人間のアクセスログも
わかっていたようです。
こういうのは投票用のCGiにアクセスログの機能もついてる
ものなのか、アクセスログ用のCGIの見る先が投票用のCGI
にしてるのかわかりません。

アクセスログ機能がついてる投票用のフリーCGIとか
あればいいんですが、探す限り最新の投票のホスト名だけ
とかばかりで一覧にバーッとログファイルができるようなのが
ないんですが‥うーん‥

57 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 01:22 ID:???
>>56
なにが言いたいのかわからんぞ。もちっと整理してくれ。頼むよ。
Windows版がロゴ投票に使ったのと同じCGIが欲しいってことか?
しかしそれならWin板に行って話をすればいいだろうし・・・。

#あ、もしかしたら、同じようなCGIが欲しいけど、
#Win板に頭を下げるのがイヤなマッカーな人?

58 名前:初心者 投稿日:2001/05/17(木) 03:33 ID:rW7cRx.k
>>53
レスありがとうございます。
ログ加工までなんとかできました。

59 名前:初心者 投稿日:2001/05/17(木) 03:39 ID:rW7cRx.k
ついでといってはなんなのですが、
実際にスクリプトを実行せずにコーディングチェックだけを
行えるデバッグモードみたいなことはperlで出来ませんでしょうか?
環境はシステムがwin32でperlはperl5とjperlがあります。
(perl5とjperlの違いもよくわからないのですが・・・)

60 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 04:24 ID:KYQIk2Ao
>>59
ん? perl -wc <スクリプト> じゃだめ?
# Tもつけよう。

61 名前:初心者 投稿日:2001/05/17(木) 08:46 ID:rW7cRx.k
たびたびすみません。
配列@getに変数で値を追加していきたい時は

while(....){
@get = $hensu
}

で行えますでしょうか?

62 名前:56 投稿日:2001/05/17(木) 08:48 ID:.GKme7Xc
>57
Win板で聞いてきたんですが
誰も答えてくれません(泣)
ロゴ投票まとめてた人の目につかないだけかもしれませんが。

投票した人間のログを記録するようなCGIが
欲しいということです。
一応フリーの投票用の探したんですが
ログファイルとか残すタイプがなかったもので。

63 名前:初心者 投稿日:2001/05/17(木) 08:52 ID:rW7cRx.k
$i = 0;
while(....){
$get[$i] = $hensu;
++$i;
}

と行わなければ、やっぱり駄目でしょうか?

64 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 08:57 ID:rZ3d9O0s
>>63
push @get, $hensu;
Perlの本でも買ってきたら?

65 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 08:58 ID:/ddSlCio
>>63

while(...) {
        push @get, $hensu;
}

66 名前:65 投稿日:2001/05/17(木) 08:59 ID:???
被った・・・

67 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 09:47 ID:WmKEiYPc
Perlで簡単なプロクシサーバー(つーかただのフィルタみたいなもんだけど)
を書いているのですが、ActivePerlで fork 使うと速攻で落ちます。
やっぱりWindowsで fork は無理ですか?ちなみにスクリプトの方のバグかと
思ってLinuxでテストしたら普通に動きました。なんかActivePerlは
かわりにスレッドが使えるとかなんとか聞いたような気がするんですが
どうなんでしょう。

68 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 10:21 ID:???
>>67
Perlのバージョンは?

69 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 10:28 ID:???
>>68
ActivePerl-5.6.0.616です

70 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 10:30 ID:???
>>62
#---
sub logsave{
local *LOG;
open LOG, '>>log.dat' or return;
flock LOG, 2;
print LOG <<EOD;
${\time()}<>$ENV{REMOTE_ADDR}<>$ENV{HTTP_USER_AGENT}
EOD
close LOG;
}
#---

71 名前:68 投稿日:2001/05/17(木) 10:47 ID:???
>>69
スマン、俺じゃ分からん。
Perl5.6.0.623でforkのテストをすると成功する事もあるがDLLのエラーで落ちる事もあった。
スレッドはサパーリわからん。"perldoc Thread"とでもしてくれ。

72 名前:69 投稿日:2001/05/17(木) 11:02 ID:WmKEiYPc
>>71
あら、残念。ActivePerlじゃなくても最近のPerlは
スレッド使えるみたいだけど、スレッドに関する資料が
少なくてよくわからないよ。ちなみに perldoc は見た
んだけど、スレッドが使えるって言うのはこのモジュールの
ことを指すの?なんか実験的な機能とか書いてあるけど…
まあとりあえずちゃんと読んでみるよ

あと、とりあえず perl -V 打ったら
usethreads=undef
ってなってたからこのままじゃスレッドは使えない
のかな。もしかしてこれを有効にするにはソースから
なんかオプションつけてコンパイルしなくちゃならないの?

わから〜ん!誰かヒントを!

73 名前:初心者 投稿日:2001/05/17(木) 12:35 ID:rW7cRx.k
if($data[2] =~ /^$data2[0]/){
}

以上のようにコーディングしたら
if文のセンタックスエラーでこけてしまいました。
//で変数は使えないのでしょうか?

74 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 12:46 ID:WmKEiYPc
>>73
パターンマッチの中では[]は特別な意味あり
ちなみに変数は使える。

$tekito = $data2[0];
if ($data[2] =~ /^$tekito/) {}

とかにしたら?

75 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 13:40 ID:???
syntax errorなら何処かでセミコロンが抜けているに一票

76 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 13:42 ID:???
ちなみに>>74は不正解。
#!/usr/bin/perl
$data[2] = 'abc()';
$data2[0] = 'ab';
print $data[2] =~ /^$data2[0]/;
__END__

77 名前:74 投稿日:2001/05/17(木) 14:09 ID:???
>76
ほんとだ、真になってた。適当書いてスマソ

78 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 16:19 ID:eJAJlr4A
>>67-72
おおー。ActivePerlの5.6って、
スレッドを使ってforkのエミュレーションするようになったんだ。
perldoc perlfork をざっと見てみました。
まだpipeは使えないんだね。

79 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 19:33 ID:KWAHrWxw

二次元配列で配列の二次元目(?)の要素数を調べには
どうしたらいいでしょうか?
$hoge[0][$n]の$nが何個か知りたいんです
あんまりPerlでは二次元配列はつかわないんでしょか?

80 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 19:52 ID:PKwP8X0M
>>79
$size = scalar @{$hoge[0]}

Perlの2次元配列は実際には「配列へのリファレンス」の配列。
つまり$hoge[0]等は各々が配列へのリファレンスである。
@{$hoge[0]}としてデリファレンスすると配列の実体になる。
あとは定石通りscalar関数で配列サイズを取得。

81 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 19:59 ID:???
>>79
自分が知らないというだけで「使われていない」と思うのはどうか。
まぁ修得が若干難しいというのは確かだが。

#!/usr/bin/perl
$aryref0 = [qw(0 1 2 3 4 5)];
$aryref1 = [qw(0 1 2)];
$aryref2 = [qw(0 1 2 3 4 5 6 7 8 9)];

@ary = ($aryref0, $aryref1, $aryref2);

print <<EOD;
$#{$ary[0]} + 1 = ${\($#{$ary[0]} + 1)}
$#{$ary[1]} + 1 = ${\($#{$ary[1]} + 1)}
$#{$ary[2]} + 1 = ${\($#{$ary[2]} + 1)}
EOD
__END__

82 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 22:02 ID:???
>>80-81
サンキュー
{$hoge[0]}って囲む事を知らなかったから問題だったんだな
説明もわかりやすかったし
スクリプトもわかりやすくて助かりました
あまり使われていないのかって書いたのは
Cの参考書には二次元配列について書いてあっても
Perlの参考書には書いてなかったからさ
Perlはいろんな方法がある分二次元配列とかは
そんなに使わないのが普通なのかなって思って
サブルーチンの中でグローバル変数を
あんまりつかわないのと一緒で
大体他の方法で抜けるのが一般的かなと思ったんです

ほんとにありがとう

83 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 22:53 ID:???
Perlの参考書に書いていないのは
CGIスクリプトを作る際に必須な概念ではないってのが大きいんじゃないかな。

84 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/17(木) 22:57 ID:693Tbg52
>>82
そんな本はすてちまえぇ!

85 名前:名無しさん 投稿日:2001/05/17(木) 23:36 ID:ENQ64Pv6
mod_perl
てなんて読むの。

もどぱーる?
もじゅーるぱーる?

86 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/18(金) 05:54 ID:YOZjqt/s
う。なやまず「もっどぱーる」とよんでた。
どうなんだろう。

87 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/18(金) 10:09 ID:???
おれも「もっどぱーる」派

88 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/19(土) 00:46 ID:pQYsUf86
>>85
「もっとPerl!」を、方言にした感じで「もっどぱーる」

89 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/19(土) 04:44 ID:???
なにも知らずに動けばそれで良しな私は
 @data[x]
$data[x]
を一緒に使っちゃってますが、やはり問題ありますよね?

90 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/19(土) 07:15 ID:pQYsUf86
 詳しいことは知らないが、Perl6からは、@data[x]は、配列のスライスではなく、
配列の要素を指す記述方法になるらしい。
 配列のスライスは、別の記述方法が用意されるらしいです。

91 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/19(土) 10:14 ID:???
>>89
問題あり

92 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/19(土) 12:36 ID:mE7mDJyE
半角カナの処理ってどうされてますか?
おいらはjcode.plで全角にしちゃってますがその他ってなにか方法
ありますか?

93 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/19(土) 13:29 ID:???
ベツニ。メールジャネーンダカラメクジラタテルコトモアルマイ<ハンカク
ISO-2022-JPッツーワケデモナイノニゼンカクニシチマウノハドウカトオモウ
                                  
                                    

94 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/19(土) 14:13 ID:???
JavaScript で頑張る。

95 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/19(土) 16:25 ID:???
すごく恥ずかしい質問なのですが
JAVAのコメントアウトみたいに
/*
ココがコメントにょ
*/
みたいな機能はないのでしょうか?

96 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/19(土) 17:14 ID:wk52aSL.
>>95
POD形式のコメントにするのが正式だと思う。
参照: perldoc -q "comment out" および perldoc perlpod

ちょこっと部分的にコメントアウトしたいときは
=pod
この部分はパースしないよ
=cut
だけでいいかもな。

97 名前:_gunzip 投稿日:2001/05/19(土) 20:53 ID:???
>>95
Cみたいに /* */ や // が使いたい場合は、
----------
#!/usr/bin/perl -MFilter::cpp

/*
複数行コメント
*/

print "ok!"; //一行コメント

----------
とする手もあります。
本当は96さんのようにするのがベストだし、自分も普段は
そうしているのだけれど、一応、雑学的知識として....
#事前にCプリプロセッサ(うちでは"gcc -E")に食わせているだけです。

98 名前:95 投稿日:2001/05/19(土) 22:32 ID:1jbpiiuM
96さん97さん、ありがとうございました。

#入門本に載って無くてずっと#を20行とか打ってました・・・

99 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/19(土) 23:10 ID:???
>>98
いや#を20行というのが間違いというわけではないよ。
PODにしろCプリプロセッサに食わせるにしろ、"完全に無視される存在ではなくなる"からね。

100 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 01:40 ID:???
いろいろ方法があるんですねえ。ていうかそれがPerlというものか。
このスレのPart1から全部まとめて「Perlの雑学」っていう
サイトを作ったら面白いかもなあ。

101 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 02:44 ID:???
>>100
> このスレのPart1から全部まとめて「Perlの雑学」っていう
> サイトを作ったら面白いかもなあ。

それマジで誰かやってくれないかな。
漏れは取捨選択できるレベルじゃないからダメっぽいけど…。

102 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 04:11 ID:???
勉強がてらに作ろうかしらん

103 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 04:15 ID:???
>>102
頼むよ。

104 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 04:28 ID:???
>>102
場所を用意してくれるんなら少しは協力するぞ。

105 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 05:44 ID:???
アカウント提供しようか?

106 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 05:47 ID:???
PERL勉強できるHPある?
せっかくLINUXいれたので・・・。

107 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 05:50 ID:???
ヒューレットパッカードのマシンですか?>106

108 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 07:26 ID:???
>>107
まだそんな事でつっこむのかよ。
サブッ

109 名前:not 107 投稿日:2001/05/20(日) 08:17 ID:???
>>108

誰も突っ込まなくなったらもうダメだ。

110 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 08:18 ID:???
>>106
このスレの>>2のリンク集の[お薦め]のとこ。って"の"が多いね。

111 名前:名無しさん 投稿日:2001/05/20(日) 08:31 ID:/uasmmyo
Apache::PerlRunとApache::Registryの違いって何ですか。

112 名前:(・∀・)イイ!! 投稿日:2001/05/20(日) 10:31 ID:3QTA/xf2
パイオニアのHPアニメ板の奴らにハッキングされました。
http://ton.2ch.net/test/read.cgi?bbs=news&key=990241282&ls=100

113 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 11:36 ID:???
>>102
http://xbbs21.virtualave.net/xbbs/up/
ここにページを圧縮してアプしてくれれば、
こっちで見られるようにするよ。

114 名前:初心者 投稿日:2001/05/20(日) 13:32 ID:4X2s.QbM
すみません助けてください。
perlでAとBのファイルのレコードマッチングで
同じレコードを抜き出してCというファイルを作るのですが
foreachの入れ子で作るとどうしても抜き出すレコードが
2レコードずつ出力されてしまいます。

どこかによい例がありませんでしょうか?

115 名前:初心者 投稿日:2001/05/20(日) 13:31 ID:4X2s.QbM
すみません助けてください。
perlでAとBのファイルのレコードマッチングで
同じレコードを抜き出してCというファイルを作るのですが
foreachの入れ子で作るとどうしても抜き出すレコードが
2レコードずつ出力されてしまいます。

どこかによい例がありませんでしょうか?

116 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 13:39 ID:???
>>115
まずはそのスクリプトを書くなりアプするなりしたらどうだ。

117 名前:初心者 投稿日:2001/05/20(日) 13:48 ID:4X2s.QbM
すみません、こんなかんじです。

@new = <NEW>;
foreach $new_rec (@new){
#---関数 comp_update
$subname="comp_update";&local_time;
&comp_update;
$val = &comp_update;
if($val){
if($hit_sw eq "0"){
print OUT "$new_rec2---unm\n";
}
print OUT "$new_rec2\n";
}
}
#
sub comp_update{
# 新旧更新情報ファイルの比較
$hit_sw = "0";
$new_rec2 = $new_rec;
@new_data = split(/\s+/,"$new_rec");
@old = <OLD>;
foreach $old_rec (@old){
@old_data = split(/\s+/,"$oup_rec");
if(($new_data[0] eq $old_data[0]) && ($new_data[1] eq $old_data[1]) && ($new_data[2] eq $old_data[2])){
$hit_sw = "1";
if($new_data[3] eq $old_data[3]){
return[0];
}else{
return[1];
}
}
}
if($hit_sw eq "0"){
return[1];
}
}

118 名前:初心者 投稿日:2001/05/20(日) 13:50 ID:4X2s.QbM
段差がつかなくてすみません
あと4行目はファイルの突き合わせには意味のない
サブルーチンです。

119 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 14:00 ID:???
なんつーか…いっちゃ悪いが無茶苦茶だな
思うに問題は"return[n]"じゃないか?勘だが。
真偽値を返すつもりなら"return(n)"と書いてみな。

120 名前:初心者 投稿日:2001/05/20(日) 14:11 ID:4X2s.QbM
>>119
nって数字ではないのですか?
アルファベットの“n”ですか?
メインルーチン側はどうやって真偽を判断するのですか?

121 名前:_gunzip 投稿日:2001/05/20(日) 14:14 ID:???
解決にはならないが、気になる点。
>return[0];
return(0);
[]じゃなくて()だよ。(このままだと、0という要素を持った配列へのリファレンスを
返すことになってしまうよ)

>$hit_sw eq "0"
数値を""でくくるのは、なんか変。
$hit_sw = 1; $hit_sw == 0;

>$new_rec2
こういった変数の付け方は、後から見ると(or 他の人が見ると)何を指しているのか
分かりづらいのでやめよう。(しかもグローバル変数で突然現れるし......)

>$old_data[0] eq $new_data[0] とか
どんなフィールドを比較しているのか.....わからん。

>@old = <OLD>;
毎回読むの?最初の一回でファイルの終端まで全部読んでしまうから
二回以降@oldは空じゃない?

#どういったことをやりたいのかを(114より詳しく)正確に書いて欲しい。

122 名前:_gunzip 投稿日:2001/05/20(日) 14:17 ID:???
>2レコードずつ出力されてしまいます。
ってことは、

>if($hit_sw eq "0"){
>print OUT "$new_rec2---unm\n";
>}
>print OUT "$new_rec2\n";
>}
の後者のprintが要らない?......というか、よくわからん。

123 名前:ははは 投稿日:2001/05/20(日) 14:28 ID:???
デバッグする気になれんよ・・・・・

124 名前:初心者 投稿日:2001/05/20(日) 14:38 ID:4X2s.QbM
>>121
やりたいことは 更新情報であるNEWファイルのレコードを
OLDファイルのレコードと比べて、
互いのレコードデータの項目[0]〜[2]まで一致したら
日付(YYYYMMDD・・・)の入っている項目[3]を比べ
差異があればOUTファイルへ出力させます。
但し、NEWファイルにしかないレコードもunmatchとして同じく出力させます。

>>@old = <OLD>;
>毎回読むの?最初の一回でファイルの終端まで全部読んでしまうから
>二回以降@oldは空じゃない?
NEWのレコード1行毎に、OLDファイルは頭から再び
探したいのですけど・・・意味ないのでしょうか?

125 名前:初心者 投稿日:2001/05/20(日) 14:57 ID:4X2s.QbM
>return[0];
>return(0);
>[]じゃなくて()だよ。(このままだと、0という要素を持った配列へのリファレンスを
>返すことになってしまうよ)

スミマセンここもう少し詳しく教えてください。
1度シンタックスエラーになり
リファレンスマニュアルを読むと[]と書いてあったので変えたのですが・・・
戻り値に真偽を与えメインルーチン側で真偽を判断する方法がよくわからないのです。

あと 一度、配列にファイルハンドルで全てあたえたら
繰り返し処理でやる意味はないのですか?
open...
@old = <OLD>;
close...
とファイルを開いて全て読みこんでファイルを閉じるのが正しい
使い方なのでしょうか?

126 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 15:12 ID:???
>>125
悪い事は言わないからまともな本買って勉強し直しな。
その方が君のためになる。

127 名前:_gunzip 投稿日:2001/05/20(日) 15:18 ID:???
ああ、昼寝してた。すまん。

#!/usr/bin/perl -w

use constant NOT_EXISTS => 0;
use constant EXISTS => 1;
use constant LAST_MODIFIED => 3;

@old = map{ [ split ] } <OLD>;

while($rec = <NEW>){
    chomp $rec;
    $is_exists = NOT_EXISTS;
    @new = split(/\s+/,$rec);
    
    foreach $old (@old){
        if(($new[0] eq $old->[0]) && ($new[1] eq $old->[1]) && ($new[2] eq $old->[2])){
            $is_exists = EXISTS;
            if($new[LAST_MODIFIED] ne $old->[LAST_MODIFIED]){
                print $rec , "\n";
                last;
            }
        }
    }
    if($is_exists == NOT_EXISTS){
        print $rec , "---unmatched\n";
    }
}

やりたいのはこういったこと?

128 名前:_gunzip 投稿日:2001/05/20(日) 15:19 ID:???
>print $rec , "\n";
print OUT $rec , "\n";
だな。それにNEW,OLDも開いてない。

129 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 15:25 ID:???
綺麗なソースだ…。
流石_gunzipさんです。

130 名前:_gunzip 投稿日:2001/05/20(日) 16:00 ID:???
ああ、また寝惚けて読んでなかった。すまん。
>>125
>1度シンタックスエラーになり
うーん。あり得ないような。
>リファレンスマニュアルを読むと[]と書いてあったので変えたのですが・・・
どんな記述だったのか知りたいなあ。
>戻り値に真偽を与えメインルーチン側で真偽を判断する方法がよくわからないのです。
うう....言ってることが分からない。戻り値として返されたものを評価すればいいだけでは(?)

>あと 一度、配列にファイルハンドルで全てあたえたら
一回目の&comp_update()の呼び出しで
>@old = <OLD>;
@oldには($/未変更時)ファイルハンドルOLDの各行が一行ずつ入る。
ついでにEOFもセットされる。(最後まで読んだので)
二回目の&comp_update()の呼び出しで
>@old = <OLD>;
OLDにはもう残っていないので@oldは空になる。

>>129
ありがとう。何か変なところがあったら指摘してくれると嬉しいです。

131 名前:初心者 投稿日:2001/05/20(日) 17:39 ID:4X2s.QbM
>>126
そうしたいのは山々なのですが(ここからは言い訳になります)
コンピュータはインターネットとゲームをするていどの
ど素人だったのが
COBOLの研修を2週間程度受けて、いきなり配属され
一人ぼっちでperlと格闘している最中の新入社員なのです。
(でもperlってコンパイルしなくていいのが好き)

周りは年老いたおじサンばかりで若いというだけで引継ぎも
ままならないままサーバ管理をまかされてしまいました・・・・

>>127
あまりにも・・・高等すぎてよくわかりませんが
有り難くコピペさせて勉強させていただきます。

先ほどの突き合わせ処理の問題はなんとか解決できました。
やはり御指摘の通り @old = <OLD>を繰り返し処理の中で
行っていた事が原因でした。
(2行づつ書きこむのは別の原因でしたが)
perlのマニュアルは沢山買いこみましたが
肝心の無い様が私にとってチンプンカンプンで・・・
今の仕事向いてないのかもしれません・・・


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

追伸:どこかおすすめのPerlのサイトありませんでしょうか?

132 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 17:49 ID:MGMWE3cQ
全角のA..Z1..9を半角のA..Z1..9に置き換えたいんですが、
上手い方法ないですか?
tr/a/a/g; tr/1/1/g;
みたいにやってもだめでした。

133 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 18:09 ID:???
>>131
関連サイトは>>2を参照

しかし…君を悪く言うつもりは無いが、
酷い会社だなそこは…それともそういうものなのか。
ま、頑張れや

>>132
jcode.pl(またはJcode.pm)のtr()関数を使えばいい
#!/usr/bin/perl
require 'jcode.pl';
$str = 'ZENKAKU123';
jcode::convert(\$str, 'euc');
jcode::tr(\$str, 'A-Z0-9', 'A-Z0-9');
print $str, "\n";
__END__

134 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 18:31 ID:P53jKHxs
>>131
リファレンスとして便利なPerlサイトはいっぱいあるけど、
Perlをいちから学ぶためのサイトは知らないなあ。

Perlの本を沢山買い込んであるなら、やっぱ最初はそれを
読むことから始めるほうがいいんじゃないの。
この↓参考書籍スレッドも参考になるよ。
http://corn.2ch.net/test/read.cgi?bbs=php&key=988809842&to=9

135 名前:初心者 投稿日:2001/05/20(日) 18:40 ID:4X2s.QbM
>@oldには($/未変更時)ファイルハンドルOLDの各行が一行ずつ入る。
>ついでにEOFもセットされる。(最後まで読んだので)

すみませんもう一つだけ
eofなんですけど、ファイルの一括処理
>@old = <OLD>;
を行った時も下記の様に使えますか?

@old = <OLD>;
foreach $old_rec(@old){
if(eof(OLD)){

#最終行の処理

}
}

マニュアルには eof(ファイルハンドル)を指定すると
書いてあるのですが、この場合もファイルハンドルで
いいのでしょうか?

136 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 18:49 ID:???
>>135
@old = <OLD>;
とした時点で配列"@old"とファイルハンドル"OLD"は何の関係も無くなる。
同じ事をしたいのならwhileで回せ

while(defined($old_rec = <OLD>))
{
&nbsp;&nbsp;if(eof(OLD)){
&nbsp;&nbsp;&nbsp;&nbsp;#最終行の処理
&nbsp&nbsp;;}
}

137 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 18:50 ID:???
台無しだ(;´Д`)
while(defined($old_rec = <OLD>))
{
  if(eof(OLD)){
    #最終行の処理
  }
}

138 名前:132 投稿日:2001/05/20(日) 21:00 ID:Ir3q0zHo
>>133
無事変換できました。3日悩んでいたのでとても嬉しいです。
ありがとうございました。

139 名前:馬鹿 投稿日:2001/05/20(日) 22:34 ID:???
www.microsoft.com
http://www.microsoft.com
http://www.microsoft.com/
とかの入力から、これを
www
microsoft
com
に分解するにはどうすればいいの?

140 名前:_gunzip 投稿日:2001/05/20(日) 22:45 ID:???
>>131
直接には役に立てなかったけど、上手くいってよかった。
お仕事頑張って。(ちょっと無責任かな.......)

>この場合もファイルハンドルでいいのでしょうか?
はい。ちなみに、
perldoc -f eof
でPerlの関数(この場合はeof)についてのマニュアル(英語)を読むことが出来ますよ。
他のも色々試してみてください。

>>139
これでいいか?

#!/usr/bin/perl

@url = split /\n/ , <<;
www.hogehoge.com
www.hogehoge-u.ac.jp
hogehoge.com
http://hogehoge.com/
http://hogehoge.com
http://www.hogehoge.com/

foreach(@url){
    m%([0-9a-z\-]+\.)*?([a-z0-9-]+)\.([a-z]{2,3})(?:\.([a-z]{2}))?([^a-z]|$|/$)%i;
    print "$_ :\t \$1 = $1, \$2 = $2, \$3 = $3, \$4 = $4\n";
}

141 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/20(日) 22:47 ID:???
>>139 こんな感じ??

$str = "http://www.microsoft.com/";
$str =~s/(http:\/\/)?([^\/]+)(\/)?/$2/;
@array = split /\./, $str;

142 名前:馬鹿 投稿日:2001/05/20(日) 23:21 ID:???
>>140-141
マンセーありがと。

143 名前:めっちゃ初心者です 投稿日:2001/05/21(月) 21:53 ID:Ra9UJdqo
よくわかりませ〜ん

/を,に変換したいのですが美味くいきません
こんな感じです。

$moji = "111/222/333";
$moji =~ tr///,/;
print "$moji";

/という文字がやっぱ不味いんでしょうか?でも/をどうしても,
に変換したいんです。
宜しくおねがいします。

144 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/21(月) 22:14 ID:???
\/

145 名前:めっちゃ初心者です 投稿日:2001/05/21(月) 22:17 ID:???
>>144

美味くいきました。ありがとう
ネタじゃないっす。
すいませんもっと勉強します

146 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/21(月) 22:24 ID:???
>>144
たった2バイトの回答で感謝されるのも珍しい(笑)

147 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/21(月) 23:18 ID:???
>>146
気づく時は「あ〜っ」という感じなんだろう(笑)

148 名前:初心者 投稿日:2001/05/22(火) 17:16 ID:v5lFmpjo
すみません
「スカラー変数の値の左端からn桁を抜き出す」
コマンドってありませんか?

149 名前:初心者 投稿日:2001/05/22(火) 17:17 ID:v5lFmpjo
すみません
「スカラー変数の値の左端からn桁を抜き出す」
コマンドってありませんか?

150 名前:初心者 投稿日:2001/05/22(火) 17:18 ID:v5lFmpjo
すみません
「スカラー変数の値の左端からn桁を抜き出す」
コマンドってありませんか?

151 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/22(火) 17:33 ID:???
substr($str, n, 1)

152 名前:初心者 投稿日:2001/05/22(火) 17:56 ID:v5lFmpjo
ありがとうございます。

153 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/22(火) 23:57 ID:???
perlにC言語のファイルを組み込むことはできますでしょうか?
また、できるとすればどうやったらできるんでしょう?
やっぱり変換するしかないのかな・・・・。

154 名前:疑問。 投稿日:2001/05/22(火) 23:59 ID:???
そのファイルにアクセスされたら他のプログラムを動作させること
ってどうやるんでしょうか。
サブルーチンではなく、普通のファイルを、なのですが・・。

155 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 00:04 ID:???
>>154
require "./file.pl";

156 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 00:13 ID:???
>>156
$ perldoc perlxs

157 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 00:31 ID:???
$ call japu

158 名前:JAPU 投稿日:2001/05/23(水) 02:38 ID:???
perlxs は既に提示されているので、別解を。
http://search.cpan.org/search?dist=Inline

少し前の The Perl Journal に載っていたんだったかな。

159 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 11:29 ID:Qg5ERlzM
VisualC++みたいな形の、GUI環境のデバッグツールはありますか?

160 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 12:06 ID:???
http://homepage1.nifty.com/wizman/
>>159
使ってみて報告してくれ

161 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 17:39 ID:Lqr/QSWw
#!/usr/bin/perl

$str = "12345";
$str =~ tr/0-9/0-9/;

print "Content-type: text/html\n\n";
print $str, "\n";
print "</body></html>\n";

とすると出力が

0203040506

となってしまいます、普通に 12345 とは表示できないのでしょうか?

162 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 17:48 ID:???
>>161
>>133

163 名前:antique 投稿日:2001/05/23(水) 17:54 ID:???
eucで
-----------------------------------
require './jcode.pl';
$str = "12345";
jcode::tr(*str, "0-9","0-9");
print $str;

164 名前:antique 投稿日:2001/05/23(水) 17:53 ID:???
eucで
-----------------------------------
require './jcode.pl';
$str = "12345";
jcode::tr(*str, "0-9","0-9");
print $str;

165 名前:antique 投稿日:2001/05/23(水) 17:56 ID:???
かぶる・だぶる のワンツーパンチ。

あ、タイムスリップもしてる(w

166 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 18:02 ID:Lqr/QSWw
EUCでですね。。。できました(^^;
ありがとうございます

167 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 23:12 ID:???
最近モジュールなるものを知ったのですが、
ローカル(win98/httpd)で使用することは出来ますか?

つーか使い方もまだ良く分からないんだけど(ぉ

168 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 23:16 ID:???
>>167
モジュールを使ってみようとしましたか?

169 名前:167 投稿日:2001/05/23(水) 23:44 ID:???
>>168
はい。

170 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/23(水) 23:52 ID:???
>>169
はいってアンタ…(w
使ってみた結果は?

171 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/24(木) 12:36 ID:???
平和だね(w

172 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/24(木) 14:35 ID:???
マターリとしたのもたまには イイ!(・∀・)

173 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/25(金) 00:05 ID:wtGhDgwQ
age

174 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/25(金) 01:07 ID:???
よくあるフレーム式のチャットを組んでいるのですが、
メッセージを送信した後に記事表示部をリロードするには
どうすればいいのでしょうか? 教えてください。

175 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/25(金) 01:37 ID:???
>>174
HTMLの勉強をしよう。
<form method=POST action=undex.cgi target=under>

それともオートリロードの仕方かい?
<meta http-equiv="refresh" content="90;url=under.cgi">
必要ならunder.cgi?name=$nameとかにすればよろし。

176 名前:175 投稿日:2001/05/25(金) 01:38 ID:???
タイプミスしたけど自分で修正してくれ。

177 名前:174 投稿日:2001/05/25(金) 02:53 ID:???
>>175
無事解決しました。
ありがとうございました。

178 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/25(金) 07:29 ID:tY41esp2
Perl6はいつ頃でるんでしょうか?

179 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/25(金) 10:03 ID:???
今年の夏あたりにコアが出来るとかいうのをどこかで読んだ気がする。

180 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/25(金) 23:58 ID:???
cronの使い方がイマイチ分からないのですが、
やはりtelnet設定してやらナイト無理ですか?
ちなみにサーバはf2sです。

181 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 00:11 ID:ykv1O/hI
CGIのソースをいろいろ見て参考にしたいのですが、
使用されているCGIのソースをこっそりダウンロードする方法ってありますか?

182 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 00:57 ID:AODUSOWA
>>181
無い。あまりそんな質問されると厨房だと思われますよ。

183 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 01:05 ID:???
>>182
IDが微妙にカッコ(・∀・)イイ!

184 名前:弐ch編者 投稿日:2001/05/26(土) 07:58 ID:???
今は去年の新人をいじめてる。
こいつはやめそうにないんで
とりあえず泣かそうと思ってる。

185 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 08:12 ID:???
>>182
本気でIDカッコ(・∀・)イイ!
# アドゥソワ?

186 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 19:51 ID:ojerd3UA
perlccで途中のcのファイルを残せないのでしょうか?perlからCへの
移植に使えるかと思ったんですが・・・。

187 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 19:58 ID:GHTZid3c
メモ帳で
printf"Hello World\n";
と書いてsample001.plで保存。
Perlでperl sample001としてもなにも起こりません。ソースのパスを
指定してないからなんでしょうが、パスを変更する方法がわかりません。

188 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 20:07 ID:???
>>186
undef@2ch.net$ perl -MO=C foo.pl >foo.c

189 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 20:14 ID:???
>>187
undef@2ch.net$ export PATH=$PATH:/home/hoge/bin

190 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 21:26 ID:???
>>187 なんでsample001.plの.pl抜かしてんだよ

191 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 21:32 ID:???
>>187
・printf
・.plを抜かす
・「なにも起こらない」

ってことでネタと断定

192 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/26(土) 22:02 ID:???
>・printf
確かにあまり使わないが、別に誤りでもなかろ。

193 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/27(日) 00:00 ID:???
質問なんですけど、よく
open(FILE,"$filename") or die('...');
ってしてますよね?
sleep(1) until open(FILE,"$filename");
みたいなのは駄目なんでしょうか?

194 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/27(日) 00:06 ID:???
>>193
ファイルがずっと開けない状態にあったらどうなるのかな?

195 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/27(日) 00:40 ID:???
そもそもファイルがなかったりとかね

196 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/27(日) 03:38 ID:???
>>186

>perldoc perlcc

$ perlcc -c file # Creates a C file, 'file.c'
$ perlcc -c out.c file # Creates a C file, 'out.c' from 'file'
$ perlcc -c -e 'print q//' # Creates a C file 'a.out.c'

197 名前:187 投稿日:2001/05/27(日) 04:03 ID:fXHTNImE
いやネタじゃないですよ、最初に書くソースってことでcのまね
してみただけです。ちなみに
perl e:/書類/ユーザー/perl/sample001.pl
ってやったらMS-DOS窓が閉じちゃいました。なにか表示されたのが
一瞬見えましたが。perl5.6.1です。

198 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/27(日) 05:41 ID:???
>>197
DOSプロンプトで起動してるのか?
system(exit);
でもやらんと閉じない気がするのだが。

199 名前:187 投稿日:2001/05/27(日) 07:32 ID:daAcq/BI
>DOSプロンプトで起動してるのか?

え?PerlのアイコンwクリックでDOS窓が開きませんか?

200 名前:187 投稿日:2001/05/27(日) 07:37 ID:daAcq/BI
失礼しました。DOSじゃなかったです。
あれがPerlのインターフェイスですね。

201 名前:187 投稿日:2001/05/27(日) 07:41 ID:daAcq/BI
system(exit);とやってもなにも起こらず・・・。
ActivePerl-5.6.1.626-MSWin32-x86-multi-thread
これ以外になにかインストールしないといけないんでしょうか。

202 名前:187 投稿日:2001/05/27(日) 08:29 ID:daAcq/BI
試しにDOSプロンプト立ち上げてからPerl 〜とやってみたら
ちゃんと動作しました。これでなんとかなりそうです。
お騒がせしました。

203 名前:_gunzip 投稿日:2001/05/27(日) 08:33 ID:???
>>202
>試しにDOSプロンプト立ち上げてからPerl 〜とやってみたら
・・・今まではどうやっていたの?

204 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/27(日) 09:30 ID:NfbVrjcI
>>203
>>199
> PerlのアイコンwクリックでDOS窓が開きませんか?
にあるとおり、Windowsで普通にActivePerlをインストールすると hoge.pl をダブルクリックで
DOS窓起動→hoge.plが起動→hoge.pl終了→DOS窓終了→一瞬で窓閉じたー
ってなる。
あと、DOS窓内で直接 hoge.pl ってやっても関連付けの関係で起動できたりする。

205 名前:187 投稿日:2001/05/27(日) 12:04 ID:IqGMfkVQ
>>203
204さんの解説どおりです。204さんありがとう。

206 名前:_gunzip 投稿日:2001/05/27(日) 19:16 ID:???
>>204
丁寧な説明ありがとう。
確かに一瞬で消えちゃうね。何をしたのかさっぱり分からない......

>>205
いちいちコマンドラインから
perl xxxx.pl
とするのが面倒なら、comファイルを作ってくれる
http://www.vector.co.jp/soft/dos/util/se028129.html
みたいなのもあるよ。
これなら、いちいちperl,sed,awkのどのスクリプトかを意識することなく
xxx | yyy | zzz みたいに書けるよ。

207 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/27(日) 21:50 ID:???
>>206
おおっ!
凄い便利そうですね。
205じゃないけど早速使ってみま…あれ?
…落として展開したらこんなドキュメントが…

>本ディレクトリに収められているのは、受動喫煙(Passive Smoking、他人の煙
>草の煙を吸わされること)による健康被害の問題に関する資料です。

(゚Д゚)ハァ?

208 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/27(日) 21:55 ID:???
AN HTTPD で、ImageMagick を動作させたいのですが、
やっぱ無理っすかね?

209 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/27(日) 22:06 ID:???
>>206の_gunzip氏は偽物か?

210 名前:207 投稿日:2001/05/27(日) 22:11 ID:???
なんか知らんがベクターのアーカイヴが壊れてたのだろうか(;´Д`)
↓こっからダウソしたやつはマトモだった。
今から使ってみる。

http://www.asahi-net.or.jp/~bi3t-aoym/sos111.lzh

>>209
つーわけで、_gunzip氏のミスとか偽者という訳ではなさそうです。

211 名前:209 投稿日:2001/05/27(日) 22:14 ID:???
>>210
サンクス。
…漏れもビクーリしたよ(w <受動喫煙

212 名前:207 投稿日:2001/05/27(日) 22:58 ID:???
ああリダイレクトが、パイプが…!(嬉)
上等です。_gunzipさん感謝っ!
.
.
.
…ただ付属のmksos.comがうまくいかないのは俺だけ?(;´Д`)
デフォルトがjperlだし(;´Д`)

しょうがないのでrunperl.com
#perl %0 %@
($program = $0) =~ s{^.*[/\\]|\.[^./\\]*$}{}g;
exec 'perl', $program, @ARGV;
exit $!;

213 名前:_gunzip 投稿日:2001/05/28(月) 06:04 ID:???
>>207
appeal/ディレクトリね。自分も展開してみて驚いた。(→削除)
自分も煙草は吸わんです。(´ー`)y−~~

>>209-210
ちょっと事情が分からないのだけど・・・もしかしてappeal/ディレクトリしか無かったとか?
それと、1.11に上がっていたとは知らなかった。ありがとう。

>>212
>…ただ付属のmksos.comがうまくいかないのは俺だけ?(;´Д`)
>デフォルトがjperlだし(;´Д`)
うーん。これだけでは、どこが上手くいかなかったのか分からないけれど、
mksos.comを↓のように修正すればperl(≠jperl)でも動くし、
ちゃんとperl(≠jperl)用のcomファイルを吐くようになるよ。(1.11では一行づつずれる)
____________________________________________________

15c15
< #jperl %0 %@
---
> #perl %0 %@
22c22
< join($;, 'p','Perl (jperl)', 1, '.pl', 'Perl', 'jperl %0 %@'),
---
> join($;, 'p','Perl (jperl)', 1, '.pl', 'Perl', 'perl %0 %@'),
160c160
< close(HDR), last if /^#jperl/;
---
> close(HDR), last if /^#perl/;
____________________________________________________

214 名前:207 投稿日:2001/05/28(月) 09:44 ID:???
>>213

>ちょっと事情が分からないのだけど・・・もしかしてappeal/ディレクトリしか無かったとか?
そゆことです。
展開中にエラーが出て…(;´Д`)
展開ソフト(ラプラス)のバグでしょうかね。

>mksos.com
_gunzipさんうまくいきました?
俺の場合、jperlはともかく、mksosしても
mksosファイルの最後に目的のスクリプトが追加されるだけで、
動作はmksosと同じになってしまいます(;´Д`)

215 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/28(月) 12:22 ID:???
>>214
Ver1.13ではOKやった(らぷらす)

216 名前:_gunzip 投稿日:2001/05/28(月) 21:06 ID:???
>>214
>そゆことです。
>展開ソフト(ラプラス)のバグでしょうかね。
そうだったんだ・・・受動喫煙云々しかなかったら、そりゃ驚くね。
自分は五年以上前からLHAユーティリティ(16,32)使ってます。

>mksos.com
あれ?>>213のように修正しても上手くいかなかった?
うちでは上手くいってるのだが・・・
>mksosファイルの最後に目的のスクリプトが追加されるだけで、
から推測するに、14行目だけしか修正していないのでは?
mksos.comは自分自身を開いて、#jperlから始まる行まで(ヘッダ部)を複写しているので、
(素直にsos.hdrを読めばいいのに、と思うが・・・158-161行参照)
14行目の#jperl %0 %@を#perl %0 %@に修正して、取りあえずperlで起動するようにしただけでは、
mksos.comは#jperlで始まる行を見つけられないので、自分自身を最後まで複写し、そしてその後ろに
指定されたファイルを読み込んで追加書き込みを行う、というわけ。
(って我ながら分かりにくい説明だな・・・)
うーん。とにかく>213のを試して欲しいなあ。(既にやっていたのならすまん)
____________________________________

・・・・・sos.hdrの中身・・・・・・
(改行をあけないで)
#perl %0 %@
____________________________________

というファイル(comhdr)でも作っておいて
cat comhdr example.pl >example.com
で連結するだけの方が手軽かも。

217 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/28(月) 23:57 ID:???
Perlの勉強を全てWEB上のものを使ってやろうとすれば
どういった感じ&どういった資料を使ってで勉強します?
前もって知っているプログラム知識はCの初級者から中級者レベルぐらいだとして。

いや、急にそう言う奴にPerl教えろって言われて・・(鬱

218 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/29(火) 03:25 ID:???
>>217
まずこのスレの >>2 を見る。

219 名前:22世紀を目指す名無しさん 投稿日:2001/05/29(火) 16:24 ID:876XnkeU
#! /usr/local/bin/perl

open(IN,"count.dat");
@lines=<IN>;
close(IN);

($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);

$count=$lines[$hour];
$count=$count+1;


open(OUT,">count.dat");
flock(OUT,2);
print OUT "$count";
flock(OUT,8);
close(OUT);

時間毎のアクセス数の集計をしたいのだけど、
↑のプログラムじゃ駄目なんですか?
どこが駄目なのかわからんす

220 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/29(火) 16:57 ID:???
>>219
そりゃダメだろう。

chomp($lines[$hour]);
$lines[$hour] = $lines[$hour]+1 . "\n";


open(OUT,">count.dat");
flock(OUT,2);
print OUT @lines;
flock(OUT,8);
close(OUT);


じゃないのか?

221 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/29(火) 18:06 ID:r6iK.VsQ
XML::Parser (というかexpat)でxmlファイルをパースした時に、
テキストノード中の&gt;とか&lt; 等が
元の文字( > とか < )に戻るのを防ぐ方法(オプション)がありますか?
いちいち変換するのは鬱なので。
# でもモジュールのドキュメントにはそれらしい物もなかった…

222 名前:207 投稿日:2001/05/29(火) 21:46 ID:???
>>216
あ…160行目をいじってませんでした。
お騒がせしてスミマセソ(;´Д`)

223 名前:219 投稿日:2001/05/30(水) 11:15 ID:???
>>220
ありがと!!!!
やってみます

224 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/30(水) 12:10 ID:???
CGIで、どんな串でも生IP引き出せる技あるんだけど
その技を知っている人いますか?

225 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/30(水) 13:08 ID:???
>>224
(゚Д゚)ハァ?
中学卒業してからこいや。な?

226 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/30(水) 13:27 ID:4wOldUvA
>>220

#! /usr/local/bin/perl

open(IN,"count.dat");
@lines=<IN>;
close(IN);

($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);

chomp($lines[$hour]);
$lines[$hour] = $lines[$hour]+1 . "\n";

open(OUT,">count.dat");
flock(OUT,2);
print OUT @lines;
flock(OUT,8);
close(OUT);

でやってみたんだけど駄目です。
時間毎のアクセス数の集計をしたいのだけど、
色々調べてやってみたんだけど、どこが駄目なのかわからんす。
誰か分かる人教えてください

227 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/30(水) 13:57 ID:???
>>226
はじめに
0
0
0
・・・・って感じに25行続いてるcount.datを用意ておくこと。
それでもだめなら、数回動かしたあとの count.dat を貼り付けてくれ。

228 名前:220 投稿日:2001/05/30(水) 14:01 ID:???
>>226
1: count.datに24行分の0が用意されていない
2: count.datにパスが通っていない
3: パーミッションがおかしい
4: Perlのパスが通っていない
5: flockが使えない

他にはなんだ?
つーか、何がどうダメなんだよ?
CGIは動くのか?
エラー表示はないのか?
count.datはどうなってる?

君の聞き方に問題はないのかい?
少なくともこっちがローカルで試した分にはきちんと動いてるぞ。

229 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/30(水) 15:28 ID:???
>>221
パーサオブジェクトをnewするときに、NoExpand => 1 を指定する
方法はどうかと思って試してみたけど、使えないですねー。

つーか、XML::Parserのソースを読んでみたら、
entityを展開するあたりは「TO-DO」事項となってて、
まだコードも流動的みたいです。

230 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/30(水) 17:46 ID:OOYQyBGY
Perl で、Cの構造体みたいなのを
つくるときは、リファレンスとハッシュで作りますよね?

その場合で質問したいのですが、データ構造を「固定化」するのは
どうやるのですかね。
つまり、
foo.str1 / foo.str2 みたいなメンバ(Cでいえば、ですけど)しか
許してないのに、foo.srt1 とかタイプミスしてるお馬鹿さんに
エラーを出してほしいわけですよ。
ハッシュでやると、タイプミスでも、新たなキー、バリューのペアとして
認識されちゃうので・・・・。
ちなみに、constant pragma はダメっす。
やってみたけどうまくいかない。涙。

231 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/30(水) 18:07 ID:???
>>230
方法その一
擬似ハッシュを使う
#!/usr/bin/perl
use 5.005;
use constant NL => "\n";
$hash = [
    {
        a => 1,
        b => 2,
        c => 3,
    },
    "value a",
    "value b",
    "value c",
];

print $hash->{a}, NL; # $hash->[ $hash->[0]->{a} ] と等価

print $hash->{z}, NL; # 致命的エラー

#新たなフィールドを作成するには

$hash->[0]->{z} = 4;    # まずIndexをいじってから
$hash->{z} = "value z"; # 値を入れる
__END__

232 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/30(水) 18:11 ID:???
方法その二
 メソッドを介してのみアクセスする

方法その三
 Tie::Hashを使って、
 未定義のキーにアクセスしようとするとエラーを起こさせるクラスを書く。
 (探せば既にCPANにあるかも知れない。)

233 名前:CGI串 投稿日:2001/05/31(木) 00:38 ID:4JRetkV.

CGI串を作ってみたんだけど、ウェブメールみたいに、レスポンスヘッダのロケーションで飛ばされる場合、
目的のファイルにアクセスできないのですが、対処方法がありますか?

use Socket;
read(STDIN,$_,$ENV{'CONTENT_LENGTH'});
($par0,$par1)=split(/=/);
$par0="";
$par1=~tr/+/ /;
$par1=~s/%([0-9a-fA-F][0-9a-fA-F])/pack('C',hex($1))/eg;
while($par1)
{
$par1=~/^
http:\/\/([^:\/]+)([^\r\n]+)/;
$par1="";
socket(AUXFIL,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
connect(AUXFIL,sockaddr_in(80,inet_aton($1)));
select(AUXFIL);
$|=1;
select(STDOUT);
$|=1;
print AUXFIL "GET $2 HTTP/1.0\r\n\r\n";
while(<AUXFIL>)
{
s/\r*\n$/\r\n/;
if(/^set-cookie[\s:]+/i)
{
$par0.=$_;
next;
}
if(/^location[\s:]+([^\r\n]+)/i)
{
$par1=$1;
next;
}
if(/^content-type[\s:]+/i)
{
$par2=$_;
next;
}
if(/^\r\n$/)
{
$par2.=$_;
last;
}
}
close(AUXFIL) if $par1;
}

234 名前:CGI串 投稿日:2001/05/31(木) 00:39 ID:4JRetkV.
if($par2=~/^content-type[\s:]+image\/(\w+)/i)
{
$par1='TMPFIL';
$par2="temp.$1";
open($par1,">$par2");
}
else
{
$par1='STDOUT';
print $par0.$par2;
}
while(<AUXFIL>)
{
print $par1 $_;
}
close(AUXFIL);
if($par1 eq 'TMPFIL')
{
close($par1);
print $par0."content-type:text/html\r\n\r\n";
print "<html>\r\n";
print "<head>\r\n";
print "<meta http-equiv=\"content-type\" content=\"text/html;charset=x-sjis\">\r\n";
print "<title>image</title>\r\n";
print "</head>\r\n";
print "<body>\r\n";
print "<p><center><img src=\"$par2\">\r\n";
print "</center></p>\r\n";
print "</body>\r\n";
print "</html>\r\n";
}

235 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/31(木) 01:03 ID:???
(゚Д゚)ハァ?
レスポンスのヘッダのロケーションを見て目的のファイルにアクセスすればいいだろ?

236 名前:CGI串 投稿日:2001/05/31(木) 01:27 ID:???
>>235
書いたソースでも、ロケーションを辿っているのですが、目的のURLがロケーションの中に
出てこないんですよね。どうしてでしょう?

237 名前:221 投稿日:2001/05/31(木) 02:43 ID:???
ありがとうございます。>>229

そうなんですよ<NoExpandでできない
しょうがないんで、ファイルをパースする前に&を全部&amp;に変換してます。

238 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/31(木) 02:44 ID:Tcn2CYCI
>>236
アクセスできなかったURLって、たとえばどこよ。

239 名前:CGI串 投稿日:2001/05/31(木) 09:09 ID:hqu7A44A
http://www.email.com/login/snap/login.jhtmlからログイン後の
http://www2.email.com/snap/index.jhtml?dest=welcome
http://www.email.com/login/snap/login.jhtmlは、POSTでフォームを送信しているが、GETで
http://ltd.snap.com/main/redirect/ab/1,295,,00.html?sn=em&mn=(username)&pw=(password)&fr=trueでも
http://www2.email.com/snap/index.jhtml?dest=welcomeへアクセス可能です。

240 名前:CGI串 投稿日:2001/05/31(木) 09:10 ID:hqu7A44A
http://www.email.com/login/snap/login.jhtmlからログイン後の
http://www2.email.com/snap/index.jhtml?dest=welcome
http://www.email.com/login/snap/login.jhtmlは、POSTでフォームを送信しているが、GETで
http://ltd.snap.com/main/redirect/ab/1,295,,00.html?sn=em&mn=(username)&pw=(password)&fr=trueでも
http://www2.email.com/snap/index.jhtml?dest=welcomeへアクセス可能です。

241 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/31(木) 14:40 ID:1N8fTgyg
オブジェクトからそのオブジェクトが属しているクラスの名前を呼び出すやり方は
わかったのですが、オブジェクトから現在のオブジェクトの名前を呼び出すには
どうしたらいいのですか?

242 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/31(木) 14:51 ID:???
「オブジェクトの名前」ってなに?例えばどんなの?

243 名前:名無しさん@お腹いっぱい。 投稿日:2001/05/31(木) 15:23 ID:???
$objname = { foo => 'bar', hoge => 'fuga' };
$self= bless $objname;

コレの"$objname"ってのが知りたいとか(ムリ

244 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/01(金) 16:51 ID:SCNbEuy6
自宅のローカルPCにApacheインストールして
perlもインストールして勉強してる人いますか?

ブラウザで
http://127.0.0.1/~***/index.html
で表示できるようになりましたが
http://127.0.0.1/~***/*.plはそのまま文字列のまま
表示されたり、エラーが返ってきます。
↓のはCGIのためのPerl実践入門 技術評論者のp224のです。
#!/usr/local/bin/perl
$|=1;
print <<"HERE";
content-type: text/html


<html>
hello,world!
</html>
HERE
↑の場合は500servererrorになってしまいます。
*.cgi拡張子のサンプルはうまくいくのですが
*.plはトラブルばかりです。Apacheのconfファイルに
何か追加記述が必要なのですかね・・・。

245 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/01(金) 17:09 ID:9xf3QHUM
>>244
おれも Win2kにいちおうApache入れてます。
.plをCGIとして実行したいなら、httpd.confで
AddHandler cgi-script .cgi

AddHandler cgi-script .cgi .pl
とすればいいんじゃなかな?今試したら動きました。

246 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/01(金) 17:28 ID:SCNbEuy6
>>245
245さん、レスありがとうございます。
書かれたようにhttpd.confに追加記述してみました。

ですが、やはり500のエラーが返ってきてしまいます・・。
なんでなんでしょうね?

私もWin2000でApacheはc\webにapache.exe、
その下にwwwwというフォルダを作り*.cgiも*.plも置いて実行しています。
perlは>>244で書いてあるとおりパスのところへインストールしてあるんです。

もうちょっと格闘してみます。245さん、ありがとうございます!

247 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/01(金) 17:52 ID:???
突然ですが、ちょっと質問です

CGIで
「ある時間になったら自動的に0にリセットされる」
プログラムってあるかな?

日にちごとのカウンターと言うのは
「本日のお客様は○○名です」と言うのは、最終更新した日と
   現在の日が異なった場合リセットするのはわかってます。

最終更新した時刻に関係なく、夜の0時になったら自動的に
カウンターがリセットされる。そんなプログラムってないですか?

248 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/01(金) 18:11 ID:???
cron
CGIとは無関係だが

249 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/01(金) 18:14 ID:???
あれ…?
STDINがキーボードの時、
eof(STDIN)をすると入力を促されるんですが、正常ですか??

% perl -e "print eof(STDIN)"

250 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/02(土) 01:01 ID:???
>>248

247ではないですが、cronの設定が出来ないサーバで擬似的にcronを
実装するにはどうしたら良いでしょうか?

ってそんな方法あるわけないか。

WINのhttpdで勉強してますけど、上級テクニックを覚えるためにはやはり
unix系のOSで勉強しないとイケマセンかねぇ・・・。

251 名前:minima 投稿日:2001/06/02(土) 07:24 ID:???
>>247 さん

$filename = 'times.dat';

print "いらっしゃいませ\n";

($tmday, $tmon, $tyear )
  = ( gmtime( time + 9 * 60 * 60 ) )[3..5];

if( open fp,"$filename" ){
  ($mday, $mon, $year )
    = split ',',<fp>;
  close fp;
}

if( ($tyear>$year) or ($tmon>$mon) or ($tmday>$mday) ){
  print "今日最初のアクセスです(´ー`)\n";
  if( open fp,">$filename" ){
    print fp "$tmday,$tmon,$tyear";
    close fp;
  }
}

基本はコレでいいかと。

252 名前:251 投稿日:2001/06/02(土) 07:37 ID:???
>>251 さん

補足っす

> 最終更新した日と
> 現在の日が異なった場合リセットする



> 夜の0時になったら自動的に
> カウンターがリセットされる

は,見た目には同じことだと思って↑を書きました。

253 名前:252 投稿日:2001/06/02(土) 07:38 ID:???
>>251 じゃなくて >>247 さんへ。

254 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/07(木) 11:10 ID:ym.eiAto
Perlのデータの型を調べる方法ってありませんか?

Data::Dumperの出力を見ると数値を文字列をちゃんと識別してるようなのですが、
ソースを見ても分かりませんでした。
よろしければご教授願います。

255 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/07(木) 13:02 ID:XmkeoP0E
>>254
とりあえず、ref $var; とかやってみれ。
String なのか int なのかを調べたいって言うなら、
print "int" if ($var eq $var+0);
とかかな?

256 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/07(木) 13:29 ID:v985Z4cI
ヒアドキュメントの中で計算をすることってできますか?
(例
$foo=$bar=1;
print <<"EOF";
$foo+$bar
EOF

これだと「1+1」
って表示されますよね?「2」って表示したいんですが、、、
その前で$hoge=$foo+$bar;
として$hogeを表示すればいいのはわかるんですが
あんまり一時変数をつくりたくないもんで、、、
なにか、トリッキーでもいいんで一時変数を作らなくていいやり方などないでしょうか?

257 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/07(木) 13:56 ID:???
>>256
ヒアドキュメントじゃないとダメなの?
ヒアドキュメントじゃ出来ないと思うけど。

$foo=$bar=1;
print <<"EOF";
なにか
EOF
print $foo+$bar;
print <<"EOF";
なにか
EOF

258 名前:e2j 投稿日:2001/06/07(木) 14:03 ID:???
>>256
キリ番おめでとう
#!/usr/bin/perl
$foo = $bar = 1;
print <<EOD;
${\
   ($foo + $bar)    # 括弧は必須
}
@{[
      $foo + $bar       # 括弧は不要
]}
EOD
__END__

259 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/07(木) 14:16 ID:v985Z4cI
>>257
かっちょいい答えありがとうございます!
リファレンスを使うのかな?とか思ってたんですけど
やはり(?)そういうかんじですかね。

${\($foo + $bar)}
んーでもどうしてそうなるのか若んないや。
()の中は2になるわけだから
スカラー変数のリファレンスに"\2"を渡してるわけですよね。
\ってのはどういう意味があるんだろ、、、

260 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/07(木) 14:19 ID:v985Z4cI
>>257
あ、確かにそういう風なやり方もできるんですけど
ヒアドキュメントを途切れないように長く続けたいんですよ。
(続いてないとhtmlデザインとプログラムの分離が起こってしまうから)
しかも単純な計算をするところはヒアドキュメントの中でやればわかりやすいですよね。
(ヒアドキュメントの前で計算して変数を作るより)
結構わがままな望みでしたけどね(^^;

261 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/07(木) 14:20 ID:v985Z4cI
あう、何度もすみません
>>259
>>258さんへ向けてです

262 名前:e2j 投稿日:2001/06/07(木) 14:29 ID:???
"\"ってのはリファレンスを得る演算子です

$foo = 2;
$bar = \$foo;
print ${ $bar };
print ${ \ 2 };

>>258に追加
無茶苦茶ですがこういうことも可能です。
print EOD;
${\do{
        use strict;
   print "Hello world\n";
 my $foo = my $bar = 1;
   foreach my $i(0 .. 5){
    $foo += $i;
    }
 $foo + $bar;
}
EOD

263 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/07(木) 14:34 ID:v985Z4cI
>>262
うひゃ、、、さすがにそこまでやるとなると
ヒアドキュメント切ります、、、
しっかしそんなこともできるんですねー

勉強になりました。

264 名前:254 投稿日:2001/06/07(木) 14:49 ID:???
>>255
いや、そういうわけではなく、
例えば "1" と 1 の違いを調べることが出来るのか、
という事を知りたいのです。
数値じゃない文字列に0+をすると-wの元で警告が出るのも嫌ですし。

265 名前:257 投稿日:2001/06/07(木) 14:57 ID:???
>>258
そんな事が出来るのか・・・。
勉強になりました。
サンクス。

266 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/07(木) 14:58 ID:???
>>264
Perlでは数値と文字列を区別しない。
これが素人ウケするところ。
だから"1"を数式にも使える。

267 名前:254 投稿日:2001/06/07(木) 15:15 ID:???
>>266
それは承知ですが、それでも区別したいんですよ。
Data::Dumperでは確かに区別されているので、方法はあると思うのですが。

#!/usr/bin/perl
use Data::Dumper;
my @list = (1, '2', 0+'3', 4 . "");
print Dumper(\@list);
__END__

268 名前:_gunzip 投稿日:2001/06/07(木) 18:45 ID:???
>>267
Perlは内部で数値と文字列を区別してるよ。ただ、
>数値じゃない文字列に0+をすると-wの元で警告が出るのも嫌ですし
が「数値か文字列か知りたい」理由ならば、use warningsして、numeric警告
をオフにするのが一番。
この辺りはperldoc perlexwarnが詳しい。

#!/usr/bin/perl -w

use warnings;
{
    no warnings qw[ numeric ];
    $str = "ABC";
    print $str * 5;
}
-------
0 (-w,-Wでも警告無し)
------
あと、内部でどのようにデータが格納されているかを知りたければ、
Devel::Peekの出力が助けになるかもしれない。
-----------
#!/usr/bin/perl -w
use Devel::Peek;
$str = "15";
$int = 15;
Dump($str);
Dump($int);
-----------
SV = PV(0x176eb98) at 0x1765768
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x176020c "15"\0
CUR = 2
LEN = 3
-----------
SV = IV(0x1763ce8) at 0x1765774
REFCNT = 1
FLAGS = (IOK,pIOK)
IV = 15
-----------
構造体のFLAGSメンバに注目。IOK,POKの意味についてはperldoc perlgutsほか、
http://gisle.aas.no/perl/illguts/
を読むのがいい。

269 名前:_gunzip 投稿日:2001/06/07(木) 19:01 ID:???
>構造体のFLAGSメンバに注目。
じゃなくて、(flagsメンバなんて無いし)
SV = PV(0x176eb98)
SV = IV(0x1763ce8)
ここら辺ね。
あと、口調が変に偉そうになったのは申し訳ない。

270 名前:_gunzip 投稿日:2001/06/07(木) 19:39 ID:???
なんか勘違いしてた。
>ソースを見ても分かりませんでした。
おそらく、Dumper.pmを読んだのだと思われるけれど、
Data::Dumper::Dumper()は大抵Dumpxsを呼ぶから、
おそらSvTYPE()マクロあたりで数値型か文字列型かを
判別しているのではないかと思うよ。
・・・とにかく、Dumper.xsを読めば分かると思ふ。

試しに、>267のスクリプトを
#!/usr/bin/perl
use Data::Dumper;
my @list = ("w",1, '2', 0+'3', 4 . "");
print Data::Dumper->Dumpperl([\@list]);
としてXSを呼ばないようにして、違いを比べてみては?

それと、昔
http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521
の828,829辺りで同じ事を書いた記憶が。

271 名前:254 投稿日:2001/06/07(木) 21:00 ID:???
>>270
Perl内部の事はわかりません(泣)

が、一応求める答えはわかりました。
Data::DumperはXsubを使ってたんですね…

お手数かけました。ありがとうございます。

272 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 00:08 ID:???
うー、もしかしてWindowsだとDB_Fileの$DB_RECNOって使えないんでしょうか。

273 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 00:14 ID:???
>>272
そう判断した理由は?

274 名前:272 投稿日:2001/06/08(金) 00:40 ID:???
>>273
このコードが動きません…。
間違ってはいないですよね…?
#!/usr/bin/perl
use DB_File;
use Fcntl;
use strict;
use warnings;
my @file;
my $db = tie @file , DB_File => 'hoge.dat' , O_RDONLY, 0666, $DB_RECNO
    or die "can't open hoge.dat: $!$^E\n";

__END__

275 名前:_gunzip 投稿日:2001/06/08(金) 00:42 ID:???
>>274
エラーメッセージは?

276 名前:272 投稿日:2001/06/08(金) 00:55 ID:???
>>275

D:\> perl foo.pl
can't open hoge.dat:
D:\>

空です…わけ分からんです

277 名前:_gunzip 投稿日:2001/06/08(金) 00:58 ID:???
>>276

#!/usr/bin/perl
use DB_File;
use Fcntl;
use strict;
use warnings;
my @file;
my $db = tie @file , DB_File => 'hoge.dat' , O_RDWR | O_CREAT, 0666, $DB_RECNO
or die "can't open hoge.dat: $!$^E\n";

ファイルが存在しなかった場合、作成するようにしないと。(O_CREAT)
詳しくはperldoc -f sysopen

278 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 02:15 ID:cJiaW2fQ
メールアドレスをsendmailのBccに入れたいのですが入ってくれません。
$HOGE{$in{'hoge'}}に値が入っていることは確認できています。

%HOGE = (
'A','a@mail.co',
'B','b@mail.co',
);

open(OUT,"| $sendmail -t");
print OUT "To: $mailto\n";
print OUT "From: $mailfrom\n";
print OUT "Bcc: $HOGE{$in{'hoge'}}\n";
print OUT "\n";

途中で、
$mailbcc = $HOGE{$in{'hoge'}};
として
print OUT "Bcc: $mailbcc\n";
のようにしてもダメです。何がいけないんでしょう?

279 名前:278 投稿日:2001/06/08(金) 02:17 ID:???
ちなみに、メールはBcc以外ちゃんと届きます。

280 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 04:58 ID:???
>>278-279
普通はこれで問題なくBcc:に送れるよなー。
OSやsendmailのバージョン書いてみたら?

281 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 05:26 ID:???
メールって改行はCRLFじゃなかったっけ?
この問題とは多分関係ないけど。

282 名前:278 投稿日:2001/06/08(金) 10:43 ID:0V.Sa7B.
うーむ、やっぱり何かがおかしい?
FreeBSD 4.2 のバーチャルホスト
Sendmail 8.11.2
です。

283 名前:276 投稿日:2001/06/08(金) 11:28 ID:???
>>277
いえ、ファイルが存在するのは確認済みですよ、当然。
だから何か別の…って、ありゃりゃ成功した!?

そんな…?
って、O_CREATを外しても成功…?

.
.
.

…これは…どうもRDONLYでオープンすることは出来ないって事らしいです。
ううぅ…かなり悩みましたが、これって仕様なんでしょうか。

284 名前:276 投稿日:2001/06/08(金) 14:13 ID:ikkb28As
DB_Fileの配列…むっちゃ速いですね…
indexがあるわけではないのに何故こんなに速いんでしょうか



Benchmark: timing 10000 iterations of DB_File, getline...
DB_File: 3 wallclock secs ( 2.58 usr + 0.00 sys = 2.58 CPU) @ 3875.97/s (n=10000)
getline: 4 wallclock secs ( 3.68 usr + 0.00 sys = 3.68 CPU) @ 2717.39/s (n=10000)

285 名前:276 投稿日:2001/06/08(金) 14:14 ID:ikkb28As

#!/usr/bin/perl
use DB_File;
use Fcntl;
use strict;
use warnings;
use Benchmark;
my @file;
my $db = tie @file , DB_File => 'hoge.dat' , O_RDWR, 0666, $DB_RECNO;

open IN, 'hoge.dat';
binmode IN;my($t_length, $s, $i, @index) = (0);sub getline($);

my @list = (1, 100, 1000, 2000, 3000, 5000, 10000);
push @list, reverse @list;
timethese(10000, {
    DB_File => sub{
        foreach $i(@list){ $s = $file[$i];   }
    },
    getline => sub{
        foreach $i(@list){ $s = getline($i); }
    },
});

sub getline($){
    my $n = shift;
    if(defined($index[$n])){
        seek IN, $index[$n], 0;
        return scalar(<IN>);
    }
    local $_;
    while(<IN>){
        $index[$.] = ($t_length += length($_));
        $. == ($n +1) and last;
    }
    return $_;
}
__END__

286 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 16:00 ID:GuCXLnfI
perlでcookieを相手に送るには
どうしたいいんでしょうか?

287 名前:286 投稿日:2001/06/08(金) 16:01 ID:GuCXLnfI
らが抜けてますな、、
よろしくお願いします

288 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 16:42 ID:???
>>287
print "Set-Cookie: $cookie\n";

言うまでも無いが、$cookieには適切な書式のクッキーが入っているものとする

289 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 20:40 ID:eaozRcTQ
カールさんのサイトって今どこかにありますか?
あったら教えてください。検索してもリンク切れのところばっかりで。

290 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 20:47 ID:???
>>289
ほらよ
http://plaza28.mbn.or.jp/~curl/

291 名前:22世紀を目指す名無しさん 投稿日:2001/06/08(金) 20:58 ID:???
sendmailでReceivedを隠す(または偽装)方法ってありますか?
ちょっとした事情で必要なのですが・・・・・
よろしくおねがいします。

292 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 21:15 ID:???
> ちょっとした事情

SPAM

293 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 22:30 ID:???
> ちょっとした事情

ボム

294 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 22:33 ID:???
> ちょっとした事情

MLでジサクジエン

295 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/08(金) 22:45 ID:uMb8RtP.
ちょっとずれているかもしれないが、Web中継のことで質問です。
あれって、一体どのようにやればいいのでしょうか?
どんな道具が必要なのか、是非教えて下さい。

簡単にいうと、赤ちゃんが生まれいくまでの過程を全世界中に
オンラインムービーを流す技術が欲しいのです。

296 名前:295 投稿日:2001/06/08(金) 22:47 ID:uMb8RtP.
あっ、別に赤ちゃんじゃなくて、ディープな車レースを流したいだけです。

297 名前:289 投稿日:2001/06/09(土) 13:24 ID:y1DFOqBY
CGIスクリプトを配布してるところでお願いします。
もうないんでしたっけ?

298 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/09(土) 16:09 ID:???
勝手に流していいのか?

299 名前:295 投稿日:2001/06/09(土) 17:40 ID:aiiOiIcw
>>298
いいですよ。某会社の常務からの依頼ですので、
許可とやらの問題はありません。

300 名前:電動ナナシ 投稿日:2001/06/09(土) 17:55 ID:???
こういうのがあるじゃんか。
http://www.realnetworks.com/products/producerplus/index.html?src=homeintl_jp&mcc=rlhmpg

301 名前:電動ナナシ 投稿日:2001/06/09(土) 17:54 ID:???
こういうのがあるじゃんか。
http://www.realnetworks.com/products/producerplus/index.html?src=homeintl_jp&mcc=rlhmpg

302 名前:電動ナナシ 投稿日:2001/06/09(土) 17:58 ID:???
わっ、タイムスリップ・・・
鬱だし脳

303 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/09(土) 23:53 ID:GnWQlRGQ
情けない質問で申し訳ないが質問させてください。

FreeBSD 4.2 / apache 1.3.20 にてperlのCGIを実行させたく
試行錯誤しているのですが、巧く行かずに苦労しています。
現在は〜/apache/cgi-bin/printenv の実行は正常に行われる環境です。

実行させたいperlスクリプトは、KENT-WEBさんのYY-BOARDです。
どう、巧く行かないのかと言いますと、perlを見つけられない???のではないかと。
試しにtelnetで該当dirに行きまして、./yybbs.cgiとタイプしますと
>./yybbs.cgi: コマンドが見つかりません.
と怒られてしまいます。
ですが、perl5 ./yybbs.cgiとタイプしますと希望の結果が帰って来ます。
yybbs.cgi1行目のperlへのパス指定は合っているハズなのにどうして
こんな事になるのでしょうか???

何方かアドバイスしていただけますでしょうか。

304 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/09(土) 23:55 ID:Stf2UWrU
>>303
ブラウザで試して御覧なさい。

305 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/09(土) 23:57 ID:GnWQlRGQ
>>304
説明不足でした。
ブラウザでの表示は403 Forbiddenとなっています。
けど、、、うぅーむ???
馬鹿ですか?ワタシ

306 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/10(日) 00:01 ID:???
chmod 755 ./yybbs.cgi

307 名前:303 投稿日:2001/06/10(日) 00:04 ID:4dlL9Pdo
>>306
確かに755としています。
ちなみにapacheのUserはnobodyからhttpdというユーザに変更
していますが、弊害ありますでしょうか?

308 名前:306 投稿日:2001/06/10(日) 00:07 ID:???
んじゃ、
> yybbs.cgi1行目のperlへのパス指定は合っているハズなのに
がまちがってるんでは?
1行目と
which perl5
の結果でも見比べてー。
それ以上はわからん。

309 名前:303 投稿日:2001/06/10(日) 00:13 ID:4dlL9Pdo
>>308
httpd.conf中の
Options Indexes FollowSymLinks

Options Indexes FollowSymLinks ExecCGI
に変更するのを忘れていたようです。大変失敬。

で、状況が変わりました。
ブラウザでは500 Internal Server Errorとなっており、
error.logには、Premature end of script headersが記録されました。
ん〜???

310 名前:306 投稿日:2001/06/10(日) 00:25 ID:???
そのエラーだとどうせ改行コードだろ・・・・
なんか疲れた。

311 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/10(日) 00:29 ID:???
ヘッダ吐かずに死んだな。

312 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/10(日) 00:31 ID:M/Q/m3rw
えっと、ディレクトリにあるファイルの名前を取得して、リストにい
れたいですが、どうしたらいいでしょうか?

313 名前:306 投稿日:2001/06/10(日) 00:31 ID:???
と言うか、
> 試しにtelnetで該当dirに行きまして、./yybbs.cgiとタイプしますと
> >./yybbs.cgi: コマンドが見つかりません.
> と怒られてしまいます。
をまず直せ。
CGI以前の問題。
多分、/usr/bin/perl5\r とか言うファイルを探しに行くからエラーになるの。
改行コードの問題じゃなければ、/usr/bni/perl5 とかを探しにいって略。
何も考えずにエラーメッセージをGoogleに突っ込んだら山ほど出てくるんだから、
多少は自分で考えたほうがいいと思うぞ。

314 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/10(日) 00:33 ID:???
opendir DIR, "./";
@dir = readdir DIR;
closedir DIR;
print "$_\n" for (@dir):

315 名前:303 投稿日:2001/06/10(日) 00:38 ID:4dlL9Pdo
>>313
手を煩わせて申し訳ない。自分でもあれこれ探してはいるのですが…
>コマンドが見つかりません
これを解決しないことには、とは自分も考えています。
改行コードの問題は知りませんでした。

出直してきます。

316 名前:312 投稿日:2001/06/10(日) 00:43 ID:???
>>314
ありがとです。

317 名前:306 投稿日:2001/06/10(日) 00:47 ID:???
>>315
これで最後ね。
とりあえず、1行目の最後に -- を付けて、
#!/usr/bin/perl5 --
とか(もちろん自分の環境に合った奴)に変えてみ。
改行コードが原因なら ./yybbs.cgi で起動しないのはこれで直るはず。
原因は自分で調べること。

318 名前:303 投稿日:2001/06/10(日) 01:13 ID:4dlL9Pdo
>>317
大変良く理解出来ました。
やはり改行コードの問題だったようです。
有難う御座いました。

319 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/10(日) 10:11 ID:fkqIyGrs
>>300
何分、初心者なもので、そういうのがあることを
今初めて知りました。有難うございました。
あと、検索してみると、とても勉強になるサイトがありましたの
はっときます。
http://www.din.or.jp/~ya3/real/

320 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/11(月) 01:55 ID:8pqT6lXA
WebProgの意味がわかりません。
誰か教えてください。お願いします。

321 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/11(月) 02:38 ID:KPOx6cx2
>>320
まだ申請が受理されてないけど、こんな感じです。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=991479482

#しかし↑この申請、下がりまくってるねえ。

322 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/11(月) 10:31 ID:TvlqC4OU
ヒントだけでいいんで教えてください。
SAFEってありますよね。
変数のネームスペースにおけるCHROOTみたいなの。
あれの原理って・・・?
Perlには、あれを行うための秘密の機能とかがあるのですか?
モジュールのソースを読んだんですが、原理がわからんです。

323 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/11(月) 23:07 ID:pKfL8KNc
>>321
有り難うごさいます。

このタイトルは、初めて来る人はわからないと思います。
Web_PG
こう書いてくれると助かる。

324 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/11(月) 23:48 ID:4YVegt0Y
カンマ区切りで書かれた a.csv の、
4番目の項目が「ok」だったら、
その行の3番目と6番目のセルをタブ区切りで b.csv に保存する。
というのはどうしたらいいでしょう?

325 名前:rubbish_lister 投稿日:2001/06/12(火) 00:00 ID:???
#!/usr/bin/perl
use IO::File;
use strict;
my $a = IO::File->new('a.csv');
chomp(my @b = grep{ (split/,/)[3] eq 'ok' } IO::File->new('a.csv')->getlines);
IO::File->new('>b.csv')->print( map{ join("\t", (split/,/)[2, 5]) . "\n" }@b );
__END__
>>324

326 名前:rubbish_lister 投稿日:2001/06/12(火) 00:01 ID:???
ぬ、4行目の"my $a ..."は不要ね

327 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/12(火) 00:38 ID:???
>>325-326 さん、ありがとう
ばっちりでした。感謝感謝!!

328 名前:_gunzip 投稿日:2001/06/12(火) 08:31 ID:???
>>322
ヒントになるかどうか分からないが。

#Safe.pm(209-222)
return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
# $root には"Safe::Root1"のような文字列 $obj->{Mask} は制限用ビットマスク
# $evalsub はcoderef

/* Opcode.xs(257-295) */

void
_safe_call_sv(Package, mask, codesv)
    char *Package     #一時的なパッケージ
    SV *mask        #opコード制限マスク
    SV *codesv     #実行するサブルーチン
PPCODE:
    [中略]
    
    ENTER; #スコープに入ります
    
    [中略]
    
    # 内部API関数 void Perl_save_hptr(pTHXo_ HV** hptr) を呼び出し、
    # 他パッケージへのポインタを格納した最上位スタッシュ defstash への
    # ポインタを一時待避させる。(スコープ終了時に自動回復)
    save_hptr(&PL_defstash);
    
    # 内部API関数 HV* Perl_gv_stashpv(pTHX_ const char *name, I32 create)
    # により、パッケージ名 Package のHV(スタッシュ)へのポインタでdefstash
    # (メインスタッシュ)を置き換える。
    # パッケージ名 Package が存在していなければ(あり得ない)
    # GV_ADDWARN により警告
    PL_defstash = gv_stashpv(Package, GV_ADDWARN);
    
    [中略]
    
    # 引数として与えられたcodesv(SV*にキャスト済み)を呼び出す。
    perl_call_sv(codesv, GIMME|G_EVAL|G_KEEPERR);
    
    [後は眠いので略]
    

#間違いが有れば教えて欲しひ。

329 名前:_gunzip 投稿日:2001/06/12(火) 08:35 ID:???
一時的なパッケージ -> 一時的な*ルート*パッケージ

330 名前:教えて坊主 投稿日:2001/06/12(火) 09:05 ID:qzJs/a5U
すみません。今LWP使っていろいろ試してるんですが、LWPで取得してきた
HPに画像ファイル(.jpg)があったとして、それを自分のPCに保存する
プログラムを書いています。(ようは右クリックして保存を自動化するもの)
どうも上手くいかないので、わかる方いましたら教えてください。
宜しくお願いします。

331 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/12(火) 09:35 ID:M/ZGscH2
>328さん

ふむふむふむ。
やはり、Perlの秘密(でもないのかな?)の
内部関数を呼び出していたのですね。
このヒントを頼りに、自力(←もう他力になってるけど(爆笑))更生を
目指します。

332 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/12(火) 11:44 ID:sehxFmlg
<input type="radio" name="hobby" value="野球">
<input type="radio" name="hobby" value="テニス">
として、両方$hobbyにぶち込みたいのですが、
DBに登録するときには、最後の一個しか入りません。
&hobby=....&hobby=....&となるせいなのですが。
初心者スミマセン

333 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/12(火) 12:25 ID:???
>>332
<input type="checkbox" name="hobby1" value="野球">
<input type="checkbox" name="hobby2" value="テニス">

334 名前:rubbish_lister 投稿日:2001/06/12(火) 13:36 ID:???
>>330
間違っても共用鯖ではやらないように。
#!/usr/bin/perl
#getimage.pl
use LWP::Simple;
binmode(STDOUT);# Windowsでは必須
print get(shift);
__END__

C:\> perl getimage.pl http://hoge.net/foo/bar.image > bar.image

>>332
Queryを解析する時に
$data{$name} .= ", $value";
とでもすればよろしい

335 名前:324 投稿日:2001/06/12(火) 14:24 ID:cGbuu4QE
度々すみません。>>325 でrubbish_listerさんに教えていただいた

#!/usr/bin/perl
use IO::File;
use strict;
IO::File->new('a.csv');
chomp(my @b = grep{ (split/,/)[3] eq 'ok' } IO::File->new('a.csv')->getlines);
IO::File->new('>b.csv')->print( map{ join("\t", (split/,/)[2, 5]) . "\n" }@b );
__END__

で、6番目の項目が重複していたら b.csv に書き出さない、
とするにはどうしたら良いでしょう?

336 名前:rubbish_lister 投稿日:2001/06/12(火) 15:30 ID:???
#!/usr/bin/perl
use IO::File;
use strict;
my %exists;
IO::File->new('>b.csv')->print(
    map{ sprintf("%s\t%s\n", @{ $_ }[3, 6]) }
        grep{ $_->[4] eq 'ok' and not $exists{ $_->[6] }++ }
            map{ chomp; [ undef, split /,/ ] }
                IO::File->new('a.csv')->getlines
);
__END__
>>335
あまり大きなファイルを処理するのには向かないが

337 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/12(火) 16:29 ID:???
たとえば、

  ../index.html<br>
  ../doraemon.html<br>
  ../nobita.html<br>
以下続く・・・

というふうにしたいのですが、

$chon = "../";

print << "EOF";
  $chonindex.html
  $chondoraemon.html
  $chonnobita.html
EOF

とすると
$chonindex.htmlやら$chonnobitaやらの変数があることに
なって困っています。どないしたらいいでしょうか?

338 名前:tkx 投稿日:2001/06/12(火) 16:52 ID:9FWW9dnw
<form action="〜.cgi" method="post" target="_blank">

</form>
という風に別ウインドウにCGIをpostで引き渡すのって反則なんでしょうか?
IE5.5+winやNN4.7+winでは問題なく作動するんですがNN6.0+winではpostした内容が一切引き渡されないんです。
NN6.0+winのバグであれば、これを回避する方法ってないでしょうか?

339 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/12(火) 16:58 ID:???
>>337
$chon = "../";

print << "EOF";
  ${chon}index.html
  ${chon}doraemon.html
  ${chon}nobita.html
EOF

俺も昔引っかかった。

340 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/12(火) 17:08 ID:Ah5wBUQA
ちょっと教えてください。

時間を使いたいんです。
例えば
$date_now ;#現在の日時
$date_soon ;#現在から1ヵ月後

とした場合、$date_nowの方は
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
で取れますよね?
一ヵ月後となると。。。難しいですか?

今現在はPostgreSQLに一回$date_nowを落としてから1ヶ月足して
それを$date_soonに入れなおしてますがあまり効率的ではないような
気がするんで。。。

341 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/12(火) 17:22 ID:???
>>340
$mon=$mon+2

342 名前:T女の竹田 投稿日:2001/06/12(火) 17:25 ID:???
>>340
1月31日の一ヶ月後は何月何日にしたいの?
30日後とかなら簡単だよ。
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+60*60*24*30);
じゃないのかな。

343 名前:340 投稿日:2001/06/12(火) 17:40 ID:Ah5wBUQA
>>341
それだと13月とかでませんか?

>>342
2月28日にしたいんですが難しいですか?
閏年とかも計算して。。。
今のままの方がやっぱり楽なんですかね(^^;

344 名前:T女の竹田 投稿日:2001/06/12(火) 18:16 ID:???
>>340
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
@dayinmonth = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$year+=1900;
($year_next, $mon_next, $mday_next) = ($year, $mon, $mday);
$year_next++ if $mon == 11;
$mon_next++;
$uruu = 1 if $mon_next == 1 && ($year_next % 400 == 0 || ($year_next + 1900) % 4 == 0 && $year_next % 100 != 0);
print "$dayinmonth[$mon_next]\n";
print "$uruu\n";
$mday_next = $dayinmonth[$mon_next] + $uruu if $mday_next > ($dayinmonth[$mon_next] + $uruu);

う゛〜、ぜんぜんスマートじゃないけど。。。。

345 名前:T女の竹田 投稿日:2001/06/12(火) 18:17 ID:???
あ゛〜、ミスまでまじってるし。6行目の$year_next + 1900は$year_nextです。

346 名前:T女の竹田 投稿日:2001/06/12(火) 18:44 ID:???
それか、こんなのかなぁ。

$time_temp=time();
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($time_temp);
$time_temp+=60*60*24*31;
do {
    (undef, undef, undef, $mday_next,$mon_next, $year_next,,,) = localtime($time_temp);
    print "$year_next $mon_next $mday_next\n";
    $time_temp-=60*60*24;
} while ($mday_next > $mday || $mon_next != ($mon + 1) % 12);

347 名前:T女の竹田 投稿日:2001/06/12(火) 18:46 ID:???
あ゛〜、確認用コードが残ってた。。
print "$year_next $mon_next $mday_next\n";
は要らないです…はぁ〜なにやってんだろ。

348 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/12(火) 19:15 ID:???
モジュールありそうな気がします
私は探してないですが探してみたらどうですか

349 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/12(火) 20:50 ID:???
ん〜、Date::Calc とかつかってみたら?
使ってないからどうかわからんけど。

350 名前:335 投稿日:2001/06/12(火) 21:18 ID:???
>>336 rubbish_listerさん
再びたいへんありがとうございました。
非プログラマな私には救世主です。

351 名前:337 投稿日:2001/06/13(水) 00:28 ID:???
>>339
ありがとうございました。

352 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/13(水) 00:28 ID:mJODJwMk
jcode.pl と jcode.pm とではどちらを使用するのが、
良いでしょうか。自分のPCだけでの使用範囲です。

353 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/13(水) 00:42 ID:???
Jcode.pm

354 名前:rubbish_lister 投稿日:2001/06/13(水) 00:44 ID:???
別にどちらでも構わないと思いますよ。
ただ、予め文字コードが分かっていて、半角カナを使わないのなら
文字コード変換はNKF.pmの方が圧倒的に高速でした。
参考にどうぞ。

355 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/13(水) 00:49 ID:???
>>353さん、>>354さん、ありがとうございます。
NKF.pmもためしてみます。

356 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/13(水) 01:50 ID:???
NKF.pm は使い方がいまいちわからない・・・・・

357 名前:(-_- 投稿日:2001/06/13(水) 08:05 ID:20J.4Zf6
cgi.pmを使用してparam()でフォームの内容を取得して
文字コード変換をおこなうのは可能ですか?

358 名前:340 投稿日:2001/06/13(水) 10:46 ID:5WiWUamY
T女の竹田様

ありがとうございます。
スクリプトも大変勉強になりましたが、何事もめんどくさがらずにやると
いう姿勢も学ばせていただきました。

359 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/13(水) 12:20 ID:???
>>357 可能です。

360 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/14(木) 10:11 ID:???
>>359
「cgi.pmを使用して」がどこにかかるかによらない?(国語の問題)
「文字コード変換を行う」にもかかると考えると無理っぽい。

361 名前:341 投稿日:2001/06/14(木) 20:15 ID:???
>>343
if ($mon eq 13){
$mon=1
}

362 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/14(木) 21:07 ID:zRHTE03A
perlとは関係ないかもしれませんが、
ゆいちゃっとのkill.datの書き方がわかりません。
どなたか教えていただけないでしょうか

363 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/14(木) 21:51 ID:elt2x50M
ファイルの更新日時を変えたいんですが
追加オープンしてみたんですがうまくいかないようです。
上書きオープンならなんとかなるんですが
なるべくファイルを書き換えずに変更したいんです。
どうしたらいいんでしょうか?

364 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/14(木) 21:53 ID:q9Gx71xM
漢字のパターンマッチングをやりたいんですが、うまくいきません。
教えてくださ〜い。

if($moji ne ~/[亜-龠]/ )

これで、$mojiが、漢字じゃなかったら、って感じになると思うんですが、うまくマッチングしません。何故でしょうか?

365 名前:>>363 投稿日:2001/06/14(木) 22:24 ID:???
utime

366 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/14(木) 23:36 ID:HVlmJCFw
>>364
・ 「=~」演算子の否定形は「ne ~」じゃなく「!~」。
・ 漢字のマッチは日本語モードでないと実行できない。

#!/usr/local/bin/perl -Lsjis
・・・
if ($moji !~ /[亜-龠]/)
・・・

367 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/15(金) 04:39 ID:r3DAHg.Y
>>366さん、ありがとーございます!!

で、それを実行してみました。そしたら、、

Internal Server Errorがでます。

たぶん、

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

これが原因だと思うのですが、エラーを出なくするには、どうしたらよろしんでしょうか?
宜しくお願いします。
この呪文は勿論、プログラムの最初に記述するのですよね?

368 名前:ななしサソ 投稿日:2001/06/15(金) 09:24 ID:JAlA10oI
formから送られてくるデータを格納の際の質問です。
<textarea>内の改行をそのままデータとして処理したいのです。
この改行と1レコードを区切る改行は、皆様どう区別されているのでしょうか?
1.データに入れる際に→すべて<BR>に置換する。
2.データにはそのまま入れ、表示するときに<BR>に置換する。

HTML表示だけならば1でよさげですが、1.2両方とも
CSV吐き出しでほかのアプリケーション(たとえばエクセル)で
扱うときに問題がありそうですが・・・。

1.だと文章中に<BR>があってわけわからん。
2.だとレコード構造が壊れる or 改行が"・"とか表示?
\r, \n \r\nと使い分けできるのかな?

369 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/15(金) 11:29 ID:???
データの保存形式によるのでは

私の場合は,1データ1行のデータとか1行で一つの内容を表すとかそういった場合は1(必ずしも<br>にするとは限らないけど)
xmlで保存だったらそのままかな

というかHTML表示もCSV吐き出しも原理は同じかと思われ

370 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/15(金) 11:29 ID:7EF0hPLo
ファイルの内容を置き換えてコピーするスクリプトをつくったのですが、
スペースのところで改行されてしまいます。
配列そのままをコピー先のファイルに書き込むと、
もんだいはないのですが・・
よい方法ありませんか?


open(FILE_TO,">>file_to");
open(FILE_FROM,"file_from");

# modify string
@string_array = <FILE_BASE>;
foreach $string(<@string_array>){
$string =~ s/hogehoge/foofoo/;
print FILE_TO $string;
print FILE_TO "\n";
}

# write to file
close(FILE_TO);
close(FILE_FROM);

371 名前:S 投稿日:2001/06/15(金) 11:38 ID:O2mrj.vg
>>370
「スペースのところで」という意味がよくわかませんが…。

$string に改行が入ったままなので、
print FILE_TO $string ですでに改行されてます。次の行でさらに
print FILE_TO "\n"; とする必要はないです。

372 名前:T女の竹田 投稿日:2001/06/15(金) 11:42 ID:???
あ、先越されちゃった(^^;)

>>370
書き間違いだと思うけど、
FILE_BASEはFILE_FROM、あと<@string_array>は@string_arrayだよね。
念のため。

373 名前:370 投稿日:2001/06/15(金) 13:42 ID:???
コピー元
<META name="GENExxxx
コピー先
<META
name="GENExxxxx
って感じだったんです。
>FILE_BASEはFILE_FROM、あと<@string_array>は@string_arrayだよね
これが原因でした。
直したらうまくいきました。

半日なやんだ原因がこれだけだったとは・・

でも思い切って聞いてみてよかった。
ありがとうございました

374 名前:ななしサソ 投稿日:2001/06/15(金) 15:58 ID:JAlA10oI
>369
サンクソ
>というかHTML表示もCSV吐き出しも原理は同じかと思われ
そうなんですど、つまり今度はデータとして使いたいときに、
改行があるから、レコードがおかしくなりますよね?
($1 tab $2 tab $3 tab \n)で1レコードなのに、
$2の中に\nが入ってる訳です。
($1 tab $2 tab $3 tab \n)が2レコードになってしまいます。

375 名前:ななしサソ 投稿日:2001/06/15(金) 15:58 ID:JAlA10oI
>369
サンクソ
>というかHTML表示もCSV吐き出しも原理は同じかと思われ
そうなんですど、つまり今度はデータとして使いたいときに、
改行があるから、レコードがおかしくなりますよね?
($1 tab $2 tab $3 tab \n)で1レコードなのに、
$2の中に\nが入ってる訳です。
($1 tab $2 tab $3 tab \n)が2レコードになってしまいます。

376 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/15(金) 17:02 ID:m1xvu7Zs
>>374
吐き出したCSVをそのまま別アプリで読みたいってわけ?
ならそのソフトが読める形式でデータ吐くしかないでしょ。

377 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/15(金) 17:06 ID:???
http://www.din.or.jp/~ohzaki/perl.htm
↑みりゃ分かんべ。

378 名前:ななしサソ 投稿日:2001/06/15(金) 17:25 ID:JAlA10oI
>377 おぅ、サンクソ!!!
印刷して、今晩ゆっくり勉強します。

>376 CSV→SQLで読める形式変換Perl書いてくだしゃい。
ODBC使ってもゴミと一緒に改行吐き出しやがるし、(バグ?)
いったいどうすりゃいいんだ?

379 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/15(金) 19:05 ID:???
クソクソうるせーぞ。黙れ。

380 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/15(金) 20:54 ID:???
ごめんクソ(大爆笑)

381 名前:363 投稿日:2001/06/15(金) 22:29 ID:???
>>365
utime で変更日時とアクセス日時変更できるんですね。
ありがとうございます。
これから試してみることにします。

382 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/16(土) 01:30 ID:s.BBQbAs
open(LOG,">>./log.dat")などとファイルに追加書き込みする場合、
ファイルロックは不要なのでしょうか。

383 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/16(土) 01:42 ID:???
プロセスA        プロセスB           ファイルX
↓             ↓                 ↓
writeシステムコール  ↓
↓             ↓                 ↓    
Xに"hoge"を出力せよ writeシステムコール
↓             ↓                 ↓
h              Xに"foo"を出力せよ     h
↓             ↓                 ↓
o              f                  hof
↓             ↓                 ↓
g              o                  hofgo
↓             ↓                 ↓
e              o                  hofgoeo




(´д`)マズーー

384 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/16(土) 01:42 ID:???
なるほど。

385 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/16(土) 17:27 ID:???
open(OUT, "+< outfile.txt");
flock(OUT, 2);
truncate(OUT, 0);
seek(OUT, 0, 0);
print OUT "........";
close(OUT);
と書いた場合、ロックが解除されるまで別プロセスは待つのでしょうか。
open(OUT, "+< outfile.txt") || die("ファイルオープンに失敗\n");
と書いた場合はロックがかかっていると書きこまずに終了してしまうので、
確実に書きこみをさせたいのです。
また、1つのファイルに対して読みこみ→処理→書きこみとする場合、
読みこみの時からロックするべきなのでしょうか。

386 名前:rubbish_lister 投稿日:2001/06/16(土) 22:46 ID:???
openの成功はflockに関係ないが…。
何か疑問があればまずテストしてみてはどうだろうか。

387 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/16(土) 23:48 ID:2gIPolvU
>>382-384
>open(LOG,">>./log.dat")
(1) writeがアトミック動作
(2) openにappendモードがある
が満たされてればロック不要でしょ。
だからUNIX系やWin2000ならロック不要。
Win95はどうだったかな・・・。

388 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/17(日) 02:58 ID:???
「writeがアトミック」を満たすにはsyswriteを使わなくてはだめでわ?

389 名前:387 投稿日:2001/06/17(日) 14:33 ID:kJNCMImk
>>388
あ、そのとおりだね。syswriteじゃないと、でかいデータは
複数回に分けて書き込まれるのでアトミック性がなくなる。

390 名前:名無しさん@いつも空腹 投稿日:2001/06/17(日) 16:56 ID:zspd2eTk
掲示板などのCGI起動回数をカウントするにはどうすれば良いですか?

最近、私のホームページにアクセスする人の多くは
掲示板(bbs.cgi)を直接ブックマーク登録しているらしく
アクセスカウンタが寂しい状態です

391 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/17(日) 17:32 ID:???
>>390
掲示板にカウンタをつけてトップページと共有する

392 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/17(日) 19:56 ID:m7qST3dg
会社に好きなおねーちゃんがいるんです。
そのおねーちゃんをひーひー悦ばすぱーる教えてください。
やっぱり真珠埋め込みですかね。

393 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/17(日) 21:42 ID:???
>>392
初心者がいきなりモジュール等に頼るのは感心しません。
まず基礎的な知識を覚えてから経験をつみましょう。

394 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 08:08 ID:???
真珠が気持ちいいと思ってるのは馬鹿なヤクザだけ
無知な童貞逝ってよし

395 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 08:08 ID:???


  ハハハ
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ^∀^)<  あほか  この低脳が
>>392
 ( つ ⊂ ) \_________
  .)  ) )
 (__)_)     (^∀^)ゲラゲラ  シネ

396 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 09:09 ID:fCtvXMRU
392曰く

真珠が気持ち良くないって言ってるのは、
真珠入りヤクザにケツほられたことない
男だけ

とのこと。

397 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 09:46 ID:cfKmX2RE
>>387
syswriteってバッファリングしないって事ですよね?
やっぱり、一つのファイルをガリガリ読み書きする場合、
相当パフォーマンスは落ちるのでしょうか。

398 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 10:20 ID:???
>>394
激しく同意!

399 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 15:29 ID:zLGH8Szo
>>397
バッファリングが効果を発揮するのは、
1文字ずつとか1行ずつとか小分けに読み書きする場合なので、
sysread/syswriteで一気にファイルを読み書きするんだったら
パフォーマンスは落ちないです。

400 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 16:43 ID:478GYAHs
ドキュンな質問ですいません。はじめてPerlをやるんですが、
いきなりつまずいています。
送信して書き込むと言う単純作業なんですが以下のように書いたんですが
動作しません。間違えがあったら指摘して下さい・・・

    elsif ($in{'menu'}) {

        open(IN,"stitle.log") || &error("Open Error : stitle.log","LK");
        @line = <IN>;
        close(IN);

        # 更新
        open(OUT,">stitle.log") || &error("Write Error : stitle.log","LK");
        print OUT @line;
        close(OUT);
    }

print <<"EOM";
<form action="$script" method="POST">
<input type=hidden name=pass value="$in{'pass'}">
<input type=hidden name=mode value="admin">
一行目 <input type=text name=menu size=30>
<input type=submit value="サブタイトル">
</form>
EOM

401 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 16:47 ID:???
>>400
何故それで動くと思えるのかが不思議だ

402 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 16:56 ID:478GYAHs
ドキュンな質問ですいません。はじめてPerlをやるんですが、
いきなりつまずいています。
送信して書き込むと言う単純作業なんですが以下のように書いたんですが
動作しません。間違えがあったら指摘して下さい・・・

elsif ($in{'menu'}) {

open(IN,"stitle.log") || &error("Open Error : stitle.log","LK");
@line = <IN>;
close(IN);

# 更新
open(OUT,">stitle.log") || &error("Write Error : stitle.log","LK");
print OUT @line;
close(OUT);
}

print <<"EOM";
<form action="$script" method="POST">
<input type=hidden name=pass value="$in{'pass'}">
<input type=hidden name=mode value="admin">
一行目 <input type=text name=menu size=30>
<input type=submit value="サブタイトル">
</form>
EOM


>>401
だからドキュンな質問なんです。本当にわからないです。

403 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 16:59 ID:???
全部出しなさい。

404 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 17:08 ID:???
>>402
何度も書くな。
どうせ自分で考えたスクリプトじゃないんだろうから、元のスクリプトを完全に写せ。
写し終わったら氏ね。

405 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 17:12 ID:478GYAHs
>>403

sub kanri {
    local(@line, $menu);

    if ($in{'menu'}) {

        open(IN,"stitle.log") || &error("Open Error : stitle.log","LK");
        @line = <IN>;
        close(IN);

        # 更新
        open(OUT,">stitle.log") || &error("Write Error : stitle.log","LK");
        print OUT @line;
        close(OUT);
    }

# 管理画面
    &header;
    print <<"EOM";
[<a href="$script?">初期画面に戻る</a>]
<table width="100%"><tr><th bgcolor="navy">
<font color="#FFFFFF">管理モード</font>
</th></tr></table>
<P><blockquote>
<form action="$script" method="POST">
<input type=hidden name=pass value="$in{'pass'}">
<input type=hidden name=mode value="admin">
一行目 <input type=text name=menu size=30>
<input type=submit value="サブタイトル">
</form>


EOM

}
exit;

まだ作り中ですが・・・

406 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 17:22 ID:???
elsifは何処いったんだよ。

もう良い。お前CGI作成/改造に手出すな。

今日の教訓:ドキュソにも程がある

407 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 17:23 ID:???
elsifは何処いったんだよ。

もう良い。お前CGI作成/改造に手出すな。

今日の教訓:ドキュソにも程がある

408 名前:S 投稿日:2001/06/18(月) 17:41 ID:???
初心者コーナーだから仕方ないのでは…。

>>405
どういう風に「動作しない」のかきちんと書きましょう。
動くけど更新されてないとか、エラーで動かないとか…。

・ @line を全く更新していない。$menu を追加するのでは?
・ どうせファイル全体を @line に入れるなら、
 open(IN,"+<stitle.log");
 @line = <IN>;
 (@lineの更新処理)
 seek(IN,0,0);
 print @line;
 truncate(IN,tell(IN));
 close(IN);
 と一度のファイルオープンで終わらせるようにしましょう。

409 名前:S 投稿日:2001/06/18(月) 17:42 ID:???
まちがえました。
print @line; → print IN @line;

410 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 18:09 ID:???
syswrite と、$| = 1 でバッファリングoffした print とは
どう違うんですか?

411 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 18:17 ID:???
>>410
お前には同じに見えるのか。
すげーな。

412 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/18(月) 22:22 ID:???
>>411
試しに説明してみて。

413 名前:410 投稿日:2001/06/18(月) 23:18 ID:2vmGPgqA
>>411
syswriteはstdioを通さないとかありましたけど、何が起こるのか良く解りません。
御分かりなら説明orポインタを示して貰えると有り難いです。

----

ところで、Perlで flush とかいう操作をするにはどうすればいいんでしょう。
select FILE; $| = 1; print '';
でできますか?

414 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 00:01 ID:???
引数が全然違うだろうが。ヴァカか?(藁

415 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 00:04 ID:???
>>414
もうちょっと説明して。馬鹿だから。

416 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 00:06 ID:???
>>414
なんだその程度か。期待して損した。

417 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 00:10 ID:???
>>414
久々に真性アホを見つけた。さらしあげ。

418 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 00:38 ID:???
>>414
プ

419 名前:414じゃないが 投稿日:2001/06/19(火) 00:56 ID:???
あれ?syswriteって書き込むサイズを指定する必要があったと思うけど..........

420 名前:_gunzip 投稿日:2001/06/19(火) 01:09 ID:???
>>413
perldoc -q flush すると出てくるよ。
http://www.perl.com/pub/doc/manual/html/pod/perlfaq5.html#How_do_I_flush_unbuffer_an_outpu

>>419
5.6からは指定する必要なし。
perldoc -f syswrite or perldoc perldelta

引数が二個しか無ければ、長さを勝手に計算してスタックに積んでくれる。
/* pp_sys.c */
PP(pp_syswrite)
{
    dSP;
    int items = (SP - PL_stack_base) - TOPMARK;
    if (items == 2) {
        SV *sv;
        EXTEND(SP, 1);
        sv = sv_2mortal(newSViv(sv_len(*SP)));
        PUSHs(sv);
        PUTBACK;
    }
    return pp_send();
}

421 名前:rubbish_lister 投稿日:2001/06/19(火) 01:22 ID:???
バッファなしprintとsyswriteは何が違うんでしょうね。
小細工をしている分printの方が重いような…
と思いBenchmark.pmで測定するも、差は見られず…。

# やはりPerlを知るためにはCを学ばなければいけないのか…。

422 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 01:33 ID:AOjMGb9g
両者の違いは、でかいデータを書き込むとき、
バッファなしprintだと1KBごとに細切れに書き込むので
その境目でタスクスイッチが発生する可能性があるけど、
syswriteは全部いちどに書くのでアトミック性が保証される。
ということかも。
・・・根拠はFreeBSDのstdioのソース+想像90%

423 名前:410 投稿日:2001/06/19(火) 01:40 ID:Y5lp4EqE
>>414, >>419
言葉が足りなくてすみません。そういう違いは解ってます。
上のほうでも出てるアトミック性がどうのという話とか、
「stdio を経由しないので、 print と一緒に使うと混乱する」とか、
Programming Perl にも書いてある partial write(書き込み途切れてる?)とか、
ファイルシステムとの関連というか…そこらへんでの違いを知りたいと思いまして。
OS関連のことが良くわからないので…。

>>420
こちらも言葉が足りなくてすみません。
該当ページは以前読んだのですが、最初からautoflushにする方法しか無いようでした。
+> でオープンしたファイルに何か書き込んだあと、それを読むという操作を
したいのですが、でかいファイルにけっこう細かく書き込むので書き込みが
終わるまではバッファリングさせておきたいのです。

その後自分で実験したら、書き込んだあと読むために seek で巻き戻すと flush される
ようで、心配することもないのかな、という感じです…。

長文すみません。

424 名前:超初心者 投稿日:2001/06/19(火) 04:01 ID:nKH5a7VE
こんにちは。もしかしたら板違いかもしれませんが、
http://cheese.2ch.net/test/read.cgi?bbs=art&key=982673377&st=508&to=509
こういうのって本当に問題あるんですか?
著作権法の侵害になってしまうのでしょうか?

425 名前:_gunzip 投稿日:2001/06/19(火) 04:22 ID:???
>>423
んーいまいち具体的に何を知りたいのか見えないけれど、
処理の流れは↓のようになっていることは、知って置いた方がいいかな。

・syswrite()
PerlLIO_write()もといシステムコール
write(int filedes, const void *buff, size_t bytes)
    filedes --> syswriteに渡されたファイルハンドル(から得られるディスクリプタ)
    buff --> syswrite に渡した文字列
    bytes --> 書き込むバイト数(指定されなかった場合Perlが内部で計算する)
を呼び出してその場で書き込む。

・バッファリング無しのprint
PerlIO_write()(≠PerlLIO_write) もといstdioライブラリの
fwrite(const void *ptr, size_t size, size_t count, FILE *fp) に、
    ptr --> print に渡した文字列(ちょっと違う)
    size --> 1 固定だよ
    count --> 文字列長(Perlが内部で計算する)
    fp --> printに渡されたファイルハンドル(から得られるFILE構造体へのポインタ)
を渡して呼び出し書き込むよう指示する。
その後、IOフラグを調べてIOf_FLUSH ビットがセットされていた場合
(つまり、バッファリング無しに設定されていた場合)PerlIO_flush()もとい
stdioのfflush(FILE *fp)を呼んで、まだ書き込んでいないデータをカーネルに渡す。

>後
>書き込んだあと読むために seek で巻き戻すと flush されるようで
いや、そんなことはないと思うが......。たしかdo_seek()はそんなことはしないはず。
>最初からautoflushにする方法しか無いようでした。
IO::Handle を利用して、適宜バッファを書き出したいときに
$io->fflush();
するのが一番スマート && 安全じゃないかな。

426 名前:_gunzip 投稿日:2001/06/19(火) 06:49 ID:???
>$io->fflush();
$io->flush();
癖が。

427 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 15:10 ID:???
$datdirというディレクトリの中に
20010617.dat 最終更新日6/19 14:00
20010618.dat 最終更新日6/18 15:00
20010619.dat 最終更新日6/19 18:00
というファイルがあった場合、
最終更新日順に@fileに入れるにはどうsortすればいいんでしょうか?

428 名前:rubbish_lister 投稿日:2001/06/19(火) 16:01 ID:???
>>427
@fileに入るのはファイル名のみですか?
#!/usr/bin/perl
use IO::Dir;
use File::stat;
my $dir = '.';
my @file = map{ $_->[0] }
        sort{ $b->[1] <=> $a->[1] }
            map{ [$_, stat($_)->mtime] }
                grep{ not /^\.\.?$/ }
                    IO::Dir->new($dir)->read;
foreach(@file){
    print $_, "\n";
}
__END__

429 名前:電動ナナシ 投稿日:2001/06/19(火) 16:53 ID:???
>>424
法律板の方がいいと思うぞ。

430 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 18:29 ID:???


  ハハハ
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ^∀^)<  あほか
 ( つ ⊂ ) \_________
  .)  ) )
 (__)_)     (^∀^)ゲラゲラ キエロ カイセンキッテクビモキレ ケラ

431 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 18:48 ID:???
>>428
はい、ファイル名のみです。ありがとうございました。

432 名前:410 投稿日:2001/06/19(火) 20:02 ID:tqiPK0Uc
>>425
ありがとうございます。syswrite は最初からダイレクトに書き込む、
$| = 1 はバッファ(?)に書き込んだ後それを flush、という感じなんでしょうか。
こういう違いが知りたかったので勉強になりました。

>seek

open F, "+>hoge.txt";
print F 'hoge';
open F2, "<hoge.txt";
# seek F, 0, 1;
read F2, $buf, 1024;
print $buf;

こんなので試しました。このままでは何も表示されず、# を外すと "hoge" と出力されます。
seek すると書き込まれているように見えるのですが…。

433 名前:410 投稿日:2001/06/19(火) 20:10 ID:???
あ、flush は flush.pl を見たら >>413 と同じことをしていたので、これを使おうと思います。
プロバイダのサーバではモジュールが使えないので。

434 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 20:14 ID:???
そんなアホな。

435 名前:[cgi:38762] 投稿日:2001/06/19(火) 20:26 ID:???
下記のようなN88ベーシックをパールで書くとどうなりますか?
2:"A"; lbtmp
4input "?x(%)=";x:
input "? "p(mmhg)=";p
6:gosub 500
8:print "t="; using "####.####";t;"c"
10:end
12:lp:rem lb.pres
14:input"x(%)=";x:
input "t(c)=";t
16:gosub 514
18;print "p="; using "####.####";p;"mmhg
20:end
*lh :rem ent.lb
24:input"?x(%)"=";x:
input"? t(c)=";t
26:gosub 525
28:print "h="; using "####.####";h;"kc/kg"
30:end

よろしくお願いします。

436 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 22:49 ID:???
>>435
スレ違いだ氏ねヴォケ。←おやくそく。
しかしまじでCGI-MLにはこんなのが流れるんですか?

437 名前:337 投稿日:2001/06/19(火) 23:20 ID:???
クッキーに2バイト文字をかきたいのですが、どうしたらいいでしょうか?
現在、下のようにCGIでクッキーをセットしてるのですが・・・
  print &setCookie("POSTNAME", $FORM{'postname'});
  sub setCookie {
    local($tmp, $val);
    $val = $_[1];
    $val =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
    $tmp = "Set-Cookie: ";
    $tmp .= "$_[0]=$val; ";
    $tmp .= "expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
    return($tmp);
  }

438 名前:337 投稿日:2001/06/19(火) 23:21 ID:???
さげてしまったのでageます

439 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/19(火) 23:24 ID:lwqdY8As
何か問題でもあるん?

440 名前:337 投稿日:2001/06/19(火) 23:29 ID:???
えっと、ジャバスクリプトでクッキーに格納された文字を以下のように読み出しているのですが、
文字化けした状態で出てくるのです。
--
<html><head>
<SCRIPT LANGUAGE="JavaScript">
<!--
getname = getCookie("POSTNAME");
if (getname == "") {
  getname = "";
}

function getCookie(key, tmp1, tmp2, xx1, xx2, xx3) {
  tmp1 = " " + document.cookie + ";";
  xx1 = xx2 = 0;
  len = tmp1.length;
  while (xx1 < len) {
    xx2 = tmp1.indexOf(";", xx1);
    tmp2 = tmp1.substring(xx1 + 1, xx2);
    xx3 = tmp2.indexOf("=");
    if (tmp2.substring(0, xx3) == key) {
      return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
    }
    xx1 = xx2 + 1;
  }
  return("");
}
// -->
</SCRIPT>
</head><body>
<SCRIPT Language="JavaScript">
<!--
mmbb = unescape(getname);
document.write("名前:<input type=text name=postname size=30 value=",mmbb,">");
// -->
</SCRIPT>
</body></html>

441 名前:439 投稿日:2001/06/19(火) 23:36 ID:lwqdY8As
>>440
JavaScriptで呼び出す場合IEだと確かに化けるね。
NNだと問題ないけど。

$val =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;

消すと大丈夫だよ。
その代わり;とか含むとCookieがちゃんと設定されない。
2chはそうなってるね。
IEのシェアが大きいから仕方ないのかな。

つか糞IEバグ直せよゴルァ

442 名前:rubbish_lister 投稿日:2001/06/19(火) 23:38 ID:???
>>440
多分文字コードがUTF-8だからですね。

Perl5.6以上ならpackとJcode.pmで何とかなりますが、
それ以下のバージョンの場合はどうすればいいのやら…。

443 名前:439 投稿日:2001/06/19(火) 23:42 ID:lwqdY8As
ん?UTF-8のせいなの??
NNではOKだからIEのバグだと思ってたが。

444 名前:rubbish_lister 投稿日:2001/06/19(火) 23:55 ID:???
確かそうだったと…
m/%u([a-fA-F0-9]{4})/
って形ならUTF-8なのではないか。

試してないでアレですが。

445 名前:rubbish_lister 投稿日:2001/06/19(火) 23:56 ID:???
「UTF-8なのではないかと」です(汗

446 名前:337 投稿日:2001/06/20(水) 00:01 ID:???
>>439
消してもダメでした・・・

>>rubbish_l
クッキーの中身をみたところ
テスト中=%A5%C6%A5%B9%A5%C8%C3%E6
でした。UTF-8とやらみたいであります。
弱りました。当方Perl5.0の鯖なんす。

447 名前:439 投稿日:2001/06/20(水) 00:04 ID:???
むぅ。俺が作った2ちゃん型BBSはそれで直ったんだが・・・。

あとはよう分からんスマソ。

448 名前:rubbish_lister 投稿日:2001/06/20(水) 00:06 ID:???
>>446
え?
いやそれは(URIエスケープされているとはいえ)普通のEUC-JPですが…?

449 名前:rubbish_lister 投稿日:2001/06/20(水) 00:10 ID:???
って、待てよ?

もしかしてCGIスクリプト側でセットしたクッキーをJavaScriptで読み出そうとしてます?
ちと勘違いしてました。すみません。
…となると…>>441さんの方法しか思いつきません。もうしわけない。

450 名前:337 投稿日:2001/06/20(水) 00:15 ID:???
文字コードはEUCで、cgiスクリプト側で設定したクッキーをジャバスクリプトで読もうとしています。。。

451 名前:_gunzip 投稿日:2001/06/20(水) 00:27 ID:???
>>437
ほういちさんの所は上手くいっていた記憶があるなあ。
http://www13.big.or.jp/~bell/nanashi/perl/

>>432
>という感じなんでしょうか。
そです。
syswrite --> write()でそのまま書き出し。
$| = 1 && print --> バッファリングされるけれど、print関数内で即フラッシュされる。
と考えればいいかと。

>>seek
>seek すると書き込まれているように見えるのですが…。
PerlIO_seekもといfseek()が、シークする前に__flshfp(FILE*,int)を呼び出して
バッファをフラッシュするのを忘れてた(鬱)すまん。
ちゃんと書き込まれますね。

452 名前:S 投稿日:2001/06/20(水) 00:34 ID:???
>>337
IEのescape/unescapeは%uXXXXという形のUnicodeを使ってます。
なので、%XX の形のCookieはIEのunescapeでは戻せません。
クロスブラウザ(?)にするためには、JavaScriptかCGI内部のどちらかに
統一して、セットも取得も両方行う必要があります。
337のように取得をJavaScriptにするなら、セット(escape)もJavaScriptでやりましょう。

# USER_AGENT を見て、IE なら %uXXXX のように変換することもできますけど…。

453 名前:S 投稿日:2001/06/20(水) 00:39 ID:???
>>440 だった。スマソ

454 名前:rubbish_lister 投稿日:2001/06/20(水) 00:41 ID:???
>IEのescape/unescapeは%uXXXXという形のUnicodeを使ってます。

げげ、そうだったんですか…

とりあえず%uXXXXという形に出来ますが、
これはIE専用か…

use utf8;
use 5.6.0;
use Jcode;
$str = 'テスト中';
$str = Jcode::convert($str, 'utf8');
$str =~ s/(.)/ sprintf('%%u%x', unpack('U', $1)) /ge;

455 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/20(水) 12:11 ID:78RSTnoI
すみません
DOSで構文チェックすると
行数とエラーの内容がでてきますよね?
そのエラーの内容を解説してる本とかサイトとか
あったら教えてもらえないでしょうか?
ガイシュツだったらごめんなさい

456 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/20(水) 12:19 ID:rCbZrLc.
>>452
おおすげー俺的にタイムリー
板違いになっちゃうけど、javascriptでURLエンコードする
ライブラリってありませんかね?
色々検索したんだけど、全然見つからない。
ここまで見つからないと、javascriptだと実装不可能なのかなぁ。
と思ってみたり。
perlだと一行なのに。

457 名前:電動ナナシ 投稿日:2001/06/20(水) 14:37 ID:???
escape()

458 名前:S 投稿日:2001/06/20(水) 14:47 ID:???
>>455
英語ならPerl付属のマニュアルの中の perldiag という項目に出てます。
日本語訳は http://www.att.or.jp/perl/man/ ここにあります。

>>456
IEの場合、Unicodeでないエンコードは無理です(Appletを使ってやってる人はいますが)。
デコードならできると思いましたが、日本語と認識してくれないです…。

var encoded = "%82%B1%82%F1%82%C9%82%BF%82%CD%81B";
var decoded = encoded.replace( /%([0-9A-Fa-f][0-9A-Fa-f])/g, url_unescape );
function url_unescape( matchedString, subMatch1 ){
  return String.fromCharCode(parseInt(subMatch1,16));
}

459 名前:455 投稿日:2001/06/20(水) 16:14 ID:uuv79wZI
>>458
ありがとうございます。
また何かあったらお聞きしますと思いますが
宜しくお願いいたします。

460 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/20(水) 16:47 ID:JljLMnck
文字か、アスキーコードを取り出したいのですが、
Perlでは、難しいのでしょうか。

C言語の場合(なにも考えなくてもいい・・・)
int asciicode = 'A'; /* asciicode = 0x65; */

Perl の場合(仮定)
$str = "A";
$asciicode = getAsciiCode( $str); # asciicode = 65;
この getAsciiCode関数が欲しい・・。

my $val = unpack('H2','A');
とした場合、返ってくるのは "41" ですね。近いんですけど、
これは16進数だから、なんとかして10進数に変換しなければいけない・・。

461 名前:460 投稿日:2001/06/20(水) 16:53 ID:JljLMnck
しまったぁ!
こうすればいいんですね・・。jcode.pl のソースみて、
てきとーにやったら、出来てしまった・・。
my $val = unpack('CC','A');
失礼しました。
(なんで、こうやったら、できるのかはわからんが)

462 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/20(水) 18:41 ID:B0.Wtqj2
>>460
unpackはいろいろ使えて便利だけど、
動作が理解できないなら専用の関数使ったほうがいいぞ。

$code = ord('A'); # 10進文字コード←文字
$str = chr(65); # 文字←10進文字コード

463 名前:JAPU 投稿日:2001/06/20(水) 18:44 ID:???
$val = ord "A";

464 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/20(水) 19:20 ID:???
質問です。
iモードの掲示板で、絵文字を入力された場合の対策はどのように
されてますか?

465 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/20(水) 20:42 ID:???
開いたファイルに毎行処理を行うには

while (<FILE>) { 処理 };

foreach (<FILE>) { 処理 };

ではどちらが速いでしょうか?
また、一度配列に入れてからのほうが良いのでしょうか?
教えてください。

466 名前:なー 投稿日:2001/06/20(水) 21:18 ID:f8KvSrzA
>>465
最初に配列にまとめて入れた方が良いと思われ。
whileもforeachも速さは変わらないと思われ。

467 名前:受け売りだから間違ってたらゴメン 投稿日:2001/06/20(水) 21:32 ID:???
>>465
配列に入れるとその分メモリを喰う。
あまりにも大容量な場合は配列に入れないほうがいい。

468 名前:rubbish_lister 投稿日:2001/06/20(水) 21:36 ID:???
いや普通はwhileでは?
数キロバイトのファイルならいざ知らず、
メガバイト単位だと明らかにwhileの方が速いですよ?

469 名前:465 投稿日:2001/06/20(水) 21:50 ID:???
ファイルの容量が大きければ配列に入れずにwhile,
小さければ配列に入れてforeach(配列に対してwhileは使えませんよね??)
ということですね。
ありがとうございました。

470 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/20(水) 22:55 ID:???
>配列に対してwhileは使えませんよね
念のため

while (shift @array) {
 something;
}
とかたまに使うよ

471 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/20(水) 23:08 ID:???
っつーか…

> 最初に配列にまとめて入れた方が良いと思われ。

これは何故こんな考えが?
後学の為に聞いておきたい。

472 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/20(水) 23:12 ID:f8KvSrzA
Win2000でActivePerl626 にTkモジュールを突っ込んだんですが、
「PerlCRT.dllがありません」って言われてTk.pmが落ちます。
どうしたらいいんでしょうか?

ちなみに、そのプログラムはSolarisのperl5.005_3で動いたものなので
コード的にはおかしくないはず・・・・

473 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/21(木) 01:29 ID:???
>>472
特定のコードで落ちるんですか?
それともTk使うと必ず落ちるのか。

474 名前:472 投稿日:2001/06/21(木) 01:47 ID:???
perl -e "use Tk;"
でも落ちます。
これって、なにやっても落ちますよね・・・・

475 名前:473 投稿日:2001/06/21(木) 02:49 ID:???
Win2000にTkを入れたばかりですけど、いちおう動いてまっせ。
"ppm install Tk"でインストールしました。

* ActivePerlのバージョン
v5.6.0 built for MSWin32-x86-multi-thread
Binary build 623

* Tkのバージョン
C>perl -MTk -e "print $Tk::VERSION"
800.022

476 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/21(木) 03:13 ID:???
perl.exe と同じディレクトリか system32 ディレクトリ内に
perlcrt.dll はありますか?

477 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/21(木) 03:32 ID:???
このスレ、勉強になるなあ…ありがたや。

478 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/21(木) 04:39 ID:???
そうだね

479 名前:_gunzip 投稿日:2001/06/21(木) 05:52 ID:???
>>465
while(<>) --> ファイルを一行毎に読み出す。
foreach(<>) --> ファイルを一括して読み、インデックスを回す。
という違いがあります。
......どちらもスピードはあまり変わりませんから、普通はwhile()の方を使います。

480 名前:_gunzip 投稿日:2001/06/21(木) 05:53 ID:???
________________________________________

#!/home/devel/5.7.1/bin/perl -Dtls

print while <>;
________________________________________

EXECUTING...
(while.pl:0) enter
(while.pl:0) ENTER scope 2 at pp_hot.c:1535
Entering block 0, type BLOCK
    =>
(while.pl:0) nextstate
    =>
(while.pl:3) enter
(while.pl:3) ENTER scope 3 at pp_hot.c:1535
Entering block 1, type BLOCK
    =>
______________________________________

(while.pl:3) gvsv(main::_)
    => UNDEF
--> gvsv()コードによりSV ${"main::_"} を取得(undef)、スタックに積む。
______________________________________

(while.pl:3) gv(main::ARGV)
    => UNDEF GV()
--> gv()コードによりGV ARGV(ファイルハンドル)を取得、スタックに積む。
______________________________________

(while.pl:3) readline
    => PV("1\n"\0)
--> スタックからpopしたファイルハンドルから一行読み出し、$_に設定。
PV とは文字列の意。(ちゃんと改行付き)
______________________________________

(while.pl:3) defined
    => SV_YES
(while.pl:3) and
    =>
--> while() 内のテスト。Perl5.001からは while (<>)は
while (defined($_ = <>)) と同義になっている。
(op.c pod/perlop.pod,Change.log --NETaa13486を参照)
この場合、テストはSV_YES(文字列"1")を返した。(-> true)
______________________________________

481 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/21(木) 05:54 ID:???
 

482 名前:_gunzip 投稿日:2001/06/21(木) 05:54 ID:???
...続き

(while.pl:3) pushmark
    => *
(while.pl:3) gvsv(main::_)
    => * PV("1\n"\0)
(while.pl:3) print
    => SV_YES
--> $_の値を取得し、printする。成功したためSV_YESを返す。
______________________________________

(while.pl:3) unstack
    =>
--> スコープ終了。オールクリア (-->ループ繰り返し)
______________________________________

#< .....以上をARGVから読みとれる限り繰り返す..... >#

(while.pl:3) leave
Leaving block 1, type BLOCK
(while.pl:3) LEAVE scope 3 at pp_hot.c:1657
    =>
(while.pl:3) leave
Leaving block 0, type BLOCK
(while.pl:0) LEAVE scope 2 at pp_hot.c:1657
(while.pl:0) LEAVE scope 1 at perl.c:394

483 名前:_gunzip 投稿日:2001/06/21(木) 05:55 ID:???
________________________________________

#!/home/devel/5.7.1/bin/perl -Dtls

print foreach <>;
________________________________________

EXECUTING...
(foreach:0) enter
(foreach:0) ENTER scope 2 at pp_hot.c:1535
Entering block 0, type BLOCK
=>
(foreach:0) nextstate
=>
______________________________________

(foreach:3) nextstate
=>
(foreach:3) pushmark
=> *
(foreach:3) gv(main::ARGV)
=> * GV()
--> while() の時と同じ(省略)
______________________________________

(foreach:3) readline
=> * PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)

--> ファイルハンドルARGVから全て読み出し、一行毎にスタックに積む。
PV は文字列の意。(改行付き)
______________________________________

(foreach:3) gv(main::_)
=> * PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) GV()
(foreach:3) enteriter
(foreach:3) ENTER scope 3 at pp_ctl.c:1703
(foreach:3) ENTER scope 4 at pp_ctl.c:1734
Entering block 1, type LOOP
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
(foreach:3) iter
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) SV_YES
(foreach:3) and
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
--> リストから一つ取り出し$_ にセット。その後 $_をテスト(SV_YES --> true)
______________________________________

484 名前:_gunzip 投稿日:2001/06/21(木) 05:55 ID:???
...続き。

(foreach:3) pushmark
    => PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) *
(foreach:3) gvsv(main::_)
    => PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) * PV("1\n"\0)
(foreach:3) print
    => PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) SV_YES
--> $_の値を取得し、printする。成功したためSV_YESを返す。
______________________________________

(foreach:3) unstack
    => PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
(foreach:3) nextstate
    => PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
--> 次の繰り返しのためのクリーンアップ (-->ループ繰り返し)
______________________________________

#< .....以上を全ての要素に対して繰り返す..... >#

(foreach:3) iter
    => PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) PV("\n"\0) PV("aaa\n"\0) SV_NO
(foreach:3) and
    => PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) PV("\n"\0) PV("aaa\n"\0) SV_NO
(foreach:3) leaveloop
Leaving block 1, type LOOP
(foreach:3) LEAVE scope 4 at pp_ctl.c:1821
(foreach:3) LEAVE scope 3 at pp_ctl.c:1822
    => PVNV(""\0)
-->もう要素が残っていないためSV_NO(文字列"")が返されループ終了
______________________________________

(foreach:3) leave
Leaving block 0, type BLOCK
(foreach:0) LEAVE scope 2 at pp_hot.c:1657
(foreach:0) LEAVE scope 1 at perl.c:394

485 名前:_gunzip 投稿日:2001/06/21(木) 05:59 ID:???
=> スタックの内容
です。
.......それにしても長すぎた。申し訳ない。

486 名前: 投稿日:2001/06/21(木) 06:31 ID:???


487 名前: 投稿日:2001/06/21(木) 06:32 ID:???


488 名前: 投稿日:2001/06/21(木) 06:32 ID:???


489 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/21(木) 06:46 ID:PPJE7E4o
初心質問で申し訳ない。

@aに配列が保存されており、

&subxx($xx,$xx,\@a); #ってな具合でサブルーチンにリファレンスで渡したあと、

sub subxx{
$a = $#$_[2];
}
こういう風に、要素数を読みとろうとすると、なぜかエラーがでます。
どうすればいいんっしょ。

ちなみに、いったん別の変数へぶちこむと、正常に動くんですけどねえ。

490 名前:初心者 投稿日:2001/06/21(木) 06:49 ID:???
>foreach(<>) --> ファイルを一括して読み、インデックスを回す。
なるほど。
>480-484を見ると
>(foreach:3) readline
>=> * PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
全部読んじゃうのね。・・・知らなんだよ〜ありがとう。

#うちのperlは-Dオプションが効かないよ・・・

491 名前:_gunzip 投稿日:2001/06/21(木) 06:51 ID:???
>>489
$a = $#{$_[2]}

>要素数を読みとろうとすると
要素数じゃなくてインデックスの最大値だよ。
要素数は
$count = scalar @{$_[2]}

492 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/21(木) 07:25 ID:???
>>gunzipさん

ども、ありがとうございました。無事できたっす。
いや、しかし、perl面白いですなあ。かなりはまりそうです。

493 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/21(木) 13:41 ID:2DG5zPDk
ディレクトリが無ければ作る、というときに
-d 'hoge' でチェックしたりしないでいきなり mkdir 'hoge' ...
すると、何か問題があるでしょうか?
-d より効率が悪いとか、ディレクトリ上書きしちゃうシステムがあるとか…。

よろしくおねがいします。

494 名前:ねこ丸 投稿日:2001/06/21(木) 14:40 ID:???
↑シェルで試したらエラーが出た。
mkdir: cannot make directory `try': File exists

495 名前:ななし 投稿日:2001/06/21(木) 20:45 ID:???
ちょっと難題を抱えてしまったので質問よろしいでしょうか?

I saw a pan & pen.

と言う文字列があります。これをHTMLの実体参照で変換した後は、

I saw a pan & pen.

になりますが(文章の内容については突っ込まないこと)、この変換した後の文字列をsubstrのように文字を切り取りたいのです。

ちょっと分かりにくいので、先頭から10文字を切り取る動作の結果を例としてあげます。

0123456789 欲しい答え
I saw a pa → I saw a pa

いざプログラムを組んでみるとちんぷんかんぷんです。どなたかご教授を!

496 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/21(木) 20:47 ID:Q1GJ073g
>>493
Linux、FreeBSD、Win95、Win2000は、いきなりmkdirで問題なし。
上書きすると>>494みたいなエラーになり元のディレクトリは不変。
効率は、気にするほど違いないでしょ。どっちかいったら-dのほうが遅い?

497 名前:S 投稿日:2001/06/21(木) 21:32 ID:???
>>495
あの、下の例文の意味がよくわからないのですが、 実体参照を
一文字としてsubstrしたいということですか?
手遊びに作ってみましたが、ちがったら無視して下さい。

# 開始位置は最初からのみ
# $str : 切り取り対象 $n : 何文字切り取るか
sub html_substr{
my( $str, $n ) = @_;

{
my $count = 0;
do{ last if $count++ >= $n }
while $str =~ /?\d{1,4};|&[A-Za-z]{1,7};|./gs;
}

substr $str, 0, pos($str);
}

うーん。遅そう。

498 名前:S 投稿日:2001/06/21(木) 21:33 ID:???
ありゃ。なんか?になってる…。

while $str =~ /

の次は、 & と # です。

499 名前:465 投稿日:2001/06/21(木) 21:38 ID:???
レスを下さった方々、ありがとうございます。勉強になります。
ですが、_gunzipさんのコードは私には高度過ぎてわかりませんでした・・・。
わざわざ書いてくださったのにすみません。

500 名前:ななし 投稿日:2001/06/21(木) 21:57 ID:???
>>497
あ〜いけね〜、
実体参照が変換されるのを忘れていた

I&nbsp;saw&nbsp;a&nbsp;pan&nbsp;&amp;&nbsp;pen.のI&nbsp;saw&nbsp;a&nbsp;paです。鬱陀氏脳

501 名前:ななし 投稿日:2001/06/21(木) 22:23 ID:???
>>497
先ほどは失礼いたしました。
私の質問の意図はSさんの通りです。

で、プログラムのほうは一見それでうまくいくかと思いきや、$nが$strの文字数より大きくなるとnullが帰ってくるようです。

ここからは私のほうで考えてみます。

502 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/22(金) 06:49 ID:zgX1GrJQ
UTF-8をsjisに変換する、または、utf-8でファイルに書きこみたい
のですが、どうすればいいのでしょうか。

503 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/22(金) 08:56 ID:???
Jcode

504 名前:antique 投稿日:2001/06/22(金) 08:57 ID:???
Jcode.pmを使う

505 名前:antique 投稿日:2001/06/22(金) 09:13 ID:???
被った、、、と今更気付く。

506 名前:??? 投稿日:2001/06/22(金) 12:57 ID:ajkueiy.
http://perl.gizo.net/download/imode/ezimode_cgi.txt
↑(ソースです)のi-mode掲示板をつけました。
どうしても、EZ−Webからだと文字化けがおこります。
しかも、「タイトル(=dai)」(フォームサブルーチンより)
の部分だけが…。

EZからだと、書き込み方式が違う(UTF−8??)
てのだけ、突き止めましたが、
それって↓
&jcode'convert(*dai,"sjis");
で対応するんですよね?でも、ダメです。

万策尽きてしまいました。
ぜひ、知識人の方々のお力を…。
お願いいたします。

(それとも、送信メソッドをJ−skyのためにGET
にしたんですが、そのせいでしょうか?)

507 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/22(金) 15:57 ID:???
utf-8ならjcode.plじゃ駄目だろ。
Jcode.pm使う。
http://openlab.ring.gr.jp/Jcode/index-j.html

508 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/22(金) 19:13 ID:le9nN3lE
すみません。Perlとは直接関係がないのですがよろしくお願いします。
画像ファイルにアクセス制限をかけるために、いちどプログラムにて
画像ファイルを読み込み、それを動的にクライアントへ返しているの
ですが、そのときに'Content-type: image/gif'だけでは、IEでだけ
表示されないのです。NN4.7ではOKでした。
1.Content-typeにおいて他に指定する必要のあるものがある
2.他のヘッダーとして指定されていないものがある。
このどちらでしょうか?それともまったく関係のないことなのでしょうか?

509 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/22(金) 19:38 ID:le9nN3lE
ひとつ思ったのですが、ファイルの拡張子はやはりgifやjpgのように、
なっていないとだめなのでしょうか?
いくらContent-typeで指定したところでブラウザが拡張子にて判断して
しまうなら仕方のないことですね。
(Servletなのでクラス名に"."を含めることができません)

510 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/23(土) 05:00 ID:???
【かちゅ〜しゃHP】
http://members.jcom.home.ne.jp/katjusha/ :かちゅ〜しゃ作者のページ
http://members.jcom.home.ne.jp/monazilla/ :2ちゃんねるブラウザ一覧紹介
http://members.jcom.home.ne.jp/katjusha/katjusha2002.lzh :かちゅ〜しゃ直リン
http://www.geocities.co.jp/SiliconValley-Oakland/9028/bin/katjusha2002.lzh :かちゅ〜しゃ直リン

●ボード一覧(最新+α)を配布しているサイト
http://ni_ch.tripod.co.jp/board/

【前スレ】
★2ちゃん専用ブラウザ「かちゅ〜しゃ」★Part9
http://yasai.2ch.net/test/read.cgi?bbs=win&key=992356600

【お約束】
・質問する時は過去ログ、【FAQ】を確かめてからにしてね。
・板がdjときの書き込みは控えてね。
・罵り合いはやめてちょ!

511 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/23(土) 11:46 ID:DIfS2zfo
gethostbyaddr()でホスト名を取得しようとしているのですが
うまくいきません。(IPアドレスが表示されます)
他のCGIではgethostbyaddr()でホスト名が取得できているので
サーバがgethostbyaddr()が使えないということではないと思うんですが…
どのような原因が考えられるでしょうか?

512 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/23(土) 11:47 ID:???
>>511
http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&st=332&to=332&nofirst=true
マルチポストすな

きちんと動くCGIとやらと比較して自分で調べてみろ

513 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/23(土) 12:58 ID:/dnaAWAM
>508
サーバーは何?
サーバーが何かヘッダーを追加してて、そのヘッダーがIEの場合だけ
理解されているとかじゃない?
あと、content-typeの改行コードを、CRLFにしてみるとか、
perlならbinmodeになっているかどうかとか。
それと、おっしゃるように拡張子が、クライアント側で関連付けられていて
それが優先されているとか。IEならありそう。

514 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/23(土) 13:20 ID:???
>511
↓でだめか?

my($host) = &nslook($ENV{'REMOTE_ADDR'}) || '???';

sub nslook{
    my($x) = shift;

    ($x =~ /([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/)
     ? ((gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0] || $x)
     : $x;
}

515 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/23(土) 13:23 ID:???
sub nslook{
my($x) = shift;

($x =~ /([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/)
? ((gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0] || $x)
: 0;
}

ちょっと修正

516 名前:CGI串 投稿日:2001/06/23(土) 16:00 ID:???
CGI串をつくったけど、ウェブメールには通せなかったので、以前質問して、解決しなかった。自分なりにタグのリンクとか
置換する様にしてみました。あいかわらず、ロケーションで5回も飛ばされるけど、ゴールに到達できません。CGI串なので
、当然、ブラウザには、ロケーションを吐き出せません。サーバー側で、クライアントのロケーションを調べる方法ってあるん
ですかね?リファラーも設定したけど、あいかわらずだし。今なぜか、サーバーも、落ちてるし。中止かなぁ。ちなみに、
http://www.email.com/login/snap/login.jhtmlからログイン後のhttp://www2.email.com/snap/index.jhtml?dest=welcomeです。

517 名前:511 投稿日:2001/06/23(土) 17:32 ID:zX58xGlk
>>514=515
やってみましたがダメです。
何も表示されません…

518 名前:あああ 投稿日:2001/06/23(土) 17:41 ID:uDMh12hc
簡単な質問ですが、

$a =~ /^aaa/; で$a の先頭に“aaa"があるかを確認できますが、
$st = "aaa"; $a =~ /^$st/; とやってもうまく動きません。

$a の先頭に $st が含まれているのかを確認する方法ってありま
すか?

519 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/23(土) 19:21 ID:???
>>518
if(index("$a","$st") == 0){  #$aの中にて$stが0バイト目に存在したら
    $ok = 1;
}

520 名前:T女の竹田 投稿日:2001/06/23(土) 19:24 ID:???
>>518
うそ?うまく動かない?そのスクリプト見せて?

521 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/23(土) 19:58 ID:???
実際のスクリプトでは $st の中に正規表現のメタキャラクタが入ってると思われ

522 名前:T女の竹田 投稿日:2001/06/23(土) 21:21 ID:???
>>521
多分そうだよね。
$a=~/\$Q$st$E/;
にしたらうまくいくはず。
ってゆーか自分は昔これ知らないで手動でエスケープしてたなー。ここに
来て勉強になったことのひとつ。

523 名前:T女の竹田 投稿日:2001/06/23(土) 21:22 ID:???
あれれ、めちゃくちゃだ。
$a=~/^\Q$st\E/;
だね。

524 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/23(土) 22:20 ID:uDMh12hc
「うそ?」って、正常に動作するのか?

525 名前:あああ 投稿日:2001/06/23(土) 22:22 ID:uDMh12hc
>>523
試してみます。

\Q \E ってなに? って調べればわかるかな。

526 名前:あああ 投稿日:2001/06/23(土) 22:32 ID:uDMh12hc
>>523

とりあえず、ダメでした。
ちょっと別途試験プログラム作ってから、もう一度組み込みしてみます。

527 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/23(土) 22:35 ID:???
>>526
とにかくソースの一部を出せばすぐに解決するような気がするのだが。(保証はせんが)

528 名前:飛ばんな 投稿日:2001/06/23(土) 23:14 ID:JvcuVhUo
はじめまして
チェックBOXに関してお聞きしたいんですけど
皆さんチェックBOXどのように使ってますか?
複数のチェックBOXにおいて渡す側でリストをつくりたい場合
私はチェックBOXの名前を配列にしてしまって受け取ったほうで
キーとリストを入れ替えるっていうなんか邪道なことやってるんですが
なんかほかにいい方法あるでしょうか?

529 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/24(日) 15:50 ID:???
>526
perlのバージョンは大丈夫か?

530 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/24(日) 21:16 ID:???

え?関係あるの?

531 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/25(月) 03:29 ID:???
0/1/2のどれかがそれぞれ入っている$a,$b,$cのうち、
1つだけが"1"を含んでいることを確かめるにはどうしたら
良いのでしょうか。
どうしてもif文を大量に組み合わせたものしか考えられないのですが
もっと頭の良いプログラムにできないものかと思いまして。

532 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/25(月) 03:40 ID:5VbEnasM
>>531
その程度のサイズなら、3×3×3=27個の要素のテーブルを作るかな。

@table = (0, 1, 1, 1, 0, ・・・以下略);
$hantei = $table[$a * 9 + $b * 3 + $c];

@tableのデータは手作業で作るのが早いと思う・・・。

533 名前:S 投稿日:2001/06/25(月) 04:38 ID:???
if( ( "$a$b$c" =~ tr/1// ) == 1 )
なんていう、Perl批判の引き合いに出されそうな方法も。

534 名前:_gunzip 投稿日:2001/06/25(月) 04:39 ID:???
>>531
いろいろ。
--------------------------------------------
if( (($a == 1) + ($b == 1) + ($c == 1)) == 1 ){
    # 処理
}

--------------------------------------------
@array = (); #作業用配列(ハッシュでも可)
$array[$_]++ for $a, $b, $c;
if( $array[1] == 1 ){
    # 処理
}

--------------------------------------------
#逝かれたコード(真似しないこと)

print "ok" if ($a ^ $b ^ $c) & !($a & $b & $c)

535 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/25(月) 05:55 ID:???
>($a ^ $b ^ $c) & !($a & $b & $c)

こんなのよく思いつくねえ (´ー`)y−~~

536 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/25(月) 10:30 ID:???
どれが1を含んでいるか分からなくていいなら、これで十分じゃ?
if(($a+$b+$c)==1){
処理;
}

537 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/25(月) 14:27 ID:???
1がふたつ、0がひとつの時ダメですな。

538 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/25(月) 14:34 ID:???
ちがった。2,1,0とかのときにダメ。

539 名前:531 投稿日:2001/06/25(月) 16:31 ID:CR99XO02
なるほど、大変参考になります。早速、いろいろ試してみようと思います。
ちなみに自分が出していた結論は変数に2が入っていたらそれを2倍して、
$a+$b+$cが1or5or9になっていたら処理を行う、というものでした。
(組み合わせが
1/4/4
1/4/0
1/0/4
1/0/0
のパターンを識別する)
(かな〜り死んでますね。)

うーん・・自分のプログラミング能力に自信が無い(こんなプログラムしか書けない)
のですが、プログラミング能力を伸ばすにはやはり手を動かして
ひたすらプログラムを書いた方が良いのでしょうか?

540 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/25(月) 16:36 ID:???
>>539
他人の書き方を参考にするのも勉強。
例えばここで出された答えの意味を全部理解できてる?
理解できてなければどうしてそうなるかを勉強する。
理解できるようになったら「こういうやり方もあるんだ」と覚えておく。
もちろんその時に自分で書いてみるのが一番勉強になると思う。

541 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/26(火) 00:21 ID:???
>>539
要領が掴めていないのにたくさん書いてもよくわからんものができあがるだけ。
まずは人の書いたソースをどうやって動いているか分かるようになるまで読んでみては?

542 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/26(火) 11:32 ID:???
面倒くさい
自分のソースを添削してもらったほうば楽

543 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/26(火) 15:14 ID:ai8VquTY
ファイルのリネームって、事前にファイルをオープンする必要ありますか?
rename < 現在のファイル名 > , < 変更後のファイル名 > ;
なぜかうまくいかないのです

544 名前:rubbish_lister 投稿日:2001/06/26(火) 15:31 ID:???
>>543
renameするのにopenの必要は無い。

まず$!を見ること。
Windowsなら$^Eもチェック。

545 名前:名無しさん@MZ-2000 投稿日:2001/06/26(火) 15:31 ID:???
>>543
「なぜかうまくいかない」というのは状況説明としては最低レベル。
エラーが出るならエラーメッセージを書く。

546 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/26(火) 15:34 ID:???
>543
権限無しだろどーせ

547 名前:ななしでお願いします 投稿日:2001/06/26(火) 17:37 ID:MIeivAlo
UNIXのおファイルについて質問です。
例えば、一つのディレクトリに10000のおファイルをぶち込むのと、
100のディレクトリに、100のおファイルをぶちこむのでは、
どちらがいいのでしょう。
UNIXのおファイルシステムは、線形検索との事ですが、
やっぱり入れすぎはよくないのでしょうか。

548 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/26(火) 18:18 ID:Ml2Xpmsg
>>547
そのとおり。ディレクトリ検索はファイル数に比例して遅くなる。
単純計算で、1万ファイル×1ディレクトリ内のファイルアクセスは、
100ファイル×100ディレクトリの数十倍の平均時間を要する。

549 名前:547 投稿日:2001/06/27(水) 00:11 ID:???
>548
どーもです。
安心した℃です。

550 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 00:23 ID:???
>>547
って優香「お」とか「℃」ってなに?

551 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 01:20 ID:FKg3tYUg
下記はやっぱりb案の方が利口でしょうか?

@a = ("11-22-33","22-33-44","55-66-77","88-99-00","22-44-55");
#a案
foreach(0..$#a) {
(@split) = split(/\-/,$a[$_]);
if($split[0] eq '88'){ print $a[$_]."\n"; }
}
#b案
for(@a){
(@split) = split(/\-/);
if($split[0] eq '88'){ print $_."\n"; }
}

552 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 01:25 ID:???
#c案
foreach (@a){
  print "$_\n" if (split '-')[0] eq '88';
}

553 名前:S 投稿日:2001/06/27(水) 01:35 ID:???
d案

foreach( @a ){ print $_, "\n" if /^88-/ }

554 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 01:38 ID:???
e案
print "$_\n" for(grep /^88\-/, @a);

そろそろ限界か?

555 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 02:04 ID:IVYsrfFE
>>551
a案とb案の比較なら当然bがベターだろ。a案は逝ってよし。

556 名前:551 投稿日:2001/06/27(水) 02:05 ID:???
早速色々ありがとう。多分、こんな感じで色々出してくれるとおもいました。
速度的にはどれでしょうか?自分で測れってならいいですけど。

557 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 02:19 ID:IVYsrfFE
>>556
自分でベンチマーク実行すれ。
で、結果はここに公開してね。

558 名前:551 投稿日:2001/06/27(水) 02:22 ID:???
そういえば表示ではなく代入でした。
for(@a){
(@split) = split(/\-/);
if($split[0] eq '88'){ $x = $_; }
}

こんな感じ?
foreach(@a){
if ((split '-')[0] eq '88'){ $x = $_; }
}

こんな感じ?
foreach(@a){ if (/^88-/){ $x=$_; } }

559 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 02:23 ID:???
Benchmark: timing 10000000 iterations of x1, x2, x3, x4...
x1: 13 wallclock secs (13.05 usr + 0.00 sys = 13.05 CPU) @ 766342.25/s
(n=10000000)
x2: 12 wallclock secs (12.96 usr + 0.00 sys = 12.96 CPU) @ 771724.03/s
(n=10000000)
x3: 13 wallclock secs (12.97 usr + 0.00 sys = 12.97 CPU) @ 771128.93/s
(n=10000000)
x4: 25 wallclock secs (25.47 usr + 0.00 sys = 25.47 CPU) @ 392649.60/s
(n=10000000)

x1=b, x2=c, x3=d, x4=e, print は $x = $_ に変えた。
自明な結論: 細かいことを気にするな。

560 名前:551 投稿日:2001/06/27(水) 02:31 ID:???
単純に(times)[0]で1万回繰り返した場合を測ってみました。
558の上から、AVG .90sec、AVG .60sec、AVG .25sec です。
次は、一応データをランダムにして測ってみます。

561 名前:551 投稿日:2001/06/27(水) 02:33 ID:???
スクリプトのベンチなんてあるのか・・・

562 名前:551 投稿日:2001/06/27(水) 02:38 ID:???
参照データ88の部分を毎回ランダムにしたら、
AVG .99sec、AVG .60sec、AVG .60secでした。

563 名前:551 投稿日:2001/06/27(水) 02:42 ID:???
$x = $_ for(grep /^88\-/, @a); に決定。もう師脳。

564 名前:551 投稿日:2001/06/27(水) 02:51 ID:???
良く考えたらケースバイケースだな。配列の大きさにもよるな。納得。

565 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 03:10 ID:???
>>561
Perlのベンチマークなら
use Benchmark;
を使うのが定番。便利だよ。>>559の人もこれ使ったんでしょ。
まあやってる内容はtimesで測るのとあまり変わらないけどな。

566 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 04:27 ID:???
foreach (@a) { print $_ if substr($_, 0, index($_, '-')) eq '88'; }

ってのも一応あるんだな
コピペじゃないので間違ってたらすまん

567 名前: 投稿日:2001/06/27(水) 10:21 ID:38kJ5CJw
 サーバA            サーバB
  index.html           upload.cgi
  edit.cgi             tmp/

上のようにサーバAの index.html 内のフォームから
サーバBの upload.cgi を呼び出してファイルを
tmp/ ディレクトリ以下に保存するようにしたあと、
Location: でサーバAの edit.cgi を呼び出して
index.html を書き換えると言うのはありですか?

サーバAはディスク容量は限られているが広告なし、
サーバBはディスク容量無制限だが広告あり、という
状況です。

568 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 11:40 ID:POUsw9kM
>>567
サーバーAからsocket 使っちゃダメなの?
…ってレンタルだから多分無理なんでしょうな。

569 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 20:35 ID:???
Socket使えないサーバなんてあるの?(大爆笑)

570 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 21:56 ID:???
>>569
アホデスカ?

571 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/27(水) 22:13 ID:???
配送です。それがなにか?

572 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 05:06 ID:???
アホ一丁お届けに上がりました〜

573 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 10:22 ID:???
Socket使えないサーバなんてあるの?

574 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 12:44 ID:???
話の腰折って悪いけど、少し疑問が。

print "hoge";

って1行ずつ出力していくのと、

print <<"EOM";
hoge
EOM

ってまとめて出力していくのはどう違うんだろう。
下の書き方のほうが楽なのに、世の中の多くのスクリプトでは
1行ずつ出力する方式を選んでるってのに疑問が。

やっぱ実行速度とか違うのかな?

575 名前:名無しさん@MZ-2000 投稿日:2001/06/28(木) 13:04 ID:???
>>574
実行速度はそれとわかるほど変わったりしないと思う。
個人的には下のやりかたのほうがよく使ってるよ。

576 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 13:27 ID:???
>>569,>>573
例えばトクトクみたいなところでは別サーバーのデータを読み込むような
スクリプトは禁止されてるよ。

577 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 14:22 ID:C.rSbvu.
ファイルをコピーする関数ってありますか?
cp copyでさがしたのですが無いような・・

578 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 14:33 ID:???
探し方が悪い。

#! perl
use File::Copy;
copy("./hogehoge.txt", "./copyhoge.txt");

579 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 15:01 ID:???
トクトクはSocket使えるが・・・(微笑

580 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 15:53 ID:DvKLUY5M
いきなりすいません
フォームに書き込んだ文字をログファイルに記録すると言う
単純なものを作りたいのですが
↓のようにやってうまくいきません。どこが間違ってるのでしょうか?
#!/usr/local/bin/perl
#ファイルの読み込み
open(IN, "<./a.dat");
$domo = <IN>;
close(IN);

#ファイルへの書き込み
open(OUT, ">./a.dat");
print OUT $domo;
close(OUT);
$domo = $form{'koumoku'};
# サーバ出力
print <<END;
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>ファイルの読み込み</title></head>
<body>
<form action="a.cgi" method="POST">
項目 <input type=text name=koumoku size=30>
<input type=submit value="項目を追加">
</form>
</body>
</html>
END

581 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 16:16 ID:???
>>580
一から勉強しなおせ。
間違ってるなんてもんじゃない。

582 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 16:19 ID:???
>>580
明らかに流れがおかしいよ。
$domoに何が入ってるのか、よく考えながら見直してみ。

583 名前:582 投稿日:2001/06/28(木) 16:21 ID:???
それ以前に、デコードもないな…(ワラ
>581 とかぶったし。

584 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 16:28 ID:???
>>579
Socketは使えるけど規約で禁止されてるの。
>・その他、コマンド発行を行うCGI
>他サーバーへのアクセスおよび攻撃を目的とするため禁止
>・proxy.cgi 系のCGI もしくはそれを含むパッケージ
>・whois.cgi 系のCGI もしくはそれを含むパッケージ
>・flood.cgi 系のCGI もしくはそれを含むパッケージ
>・sendmail.cgi 系のCGI もしくはそれを含むパッケージ
>・その他、他サーバーへのアクセスを行うCGI
>上記CGIを設置の場合は一切の警告なしにアカウント削除を行います。


>>580
よぉく見てみよう。
データを読み込んでからデータを書き換える前に書き込みをしていないかい?
これじゃあ読み込んだデータをそのまま何の手も加えずに書き込み直す事になるよ?

585 名前:579 投稿日:2001/06/28(木) 16:31 ID:???
>>584
なるへそさんくす(微笑)

586 名前:580 投稿日:2001/06/28(木) 16:43 ID:DvKLUY5M
ちょっと書き直してみましたがやっぱりだめです。
ドキュンな質問ですいません・・・
#!/usr/local/bin/perl

# サーバ出力
print <<END;
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>ファイルの読み込み</title></head>
<body>
<form action="a.cgi" method="POST">
項目 <input type=text name=item size=30>
<input type=submit value="項目を追加">
</form>
</body></html>
END

$domo = $form{'item'};

#ファイルへの書き込み
open(OUT, ">./a.dat");
print OUT $domo;
close(OUT);

587 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 16:46 ID:???
「間違ってるなんてもんじゃない」
とあるのに「ちょっと書き直した」だけで動くと思うなよ(藁

588 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 16:47 ID:???
>>580=>>586
>>2のリンクからお勉強サイトに行って勉強してきなさい。
基礎の基礎がなってない。

ここにいる人間だって数字を知らない人間に足し算を教えることは
できないんだよ。
数字から順に教える人間もいないと思うし。
まずは自分で勉強する。
その場は>>2に用意されている。

589 名前:580 投稿日:2001/06/28(木) 16:53 ID:DvKLUY5M
カウンターは作れたのに・・・・

590 名前:名無しさん@MZ-2000 投稿日:2001/06/28(木) 16:54 ID:???
CGI 自体のしくみがわかってないから
>>2 で Perl を学べてもどうしようもないような気がする。
「サーバ出力」「ファイルの読み込み」が謎すぎ

591 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 17:06 ID:???
みんな、ネタにマジレスすんなYO!

592 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 17:08 ID:???
そーいやヒアドキュメントってあんま多くまとめて出力するとエラー出たような。
勘違いかな?

593 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 17:11 ID:???
本当はみんなやり方が分からないんだよw

594 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 17:21 ID:???
こういうの見ると思うんだけど、
初心者はデコードとか自力でやんないで
素直にCGI.pm使ったほうが幸せなんじゃないかね。

$domo = $form{'item'}

use CGI;
$domo = CGI::new()->param('item');

595 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 18:55 ID:???
>>593
激しく同意!
中途半端なレス不要
最後まで丁寧に教えるか放置推奨

596 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 19:57 ID:???
基礎がなっちゃいないやつにコード渡してハイサヨナラってのが良いってか?
といって放置しちゃいつまでたっても厨房のままだから、勉強の方法を教えてるんじゃないか。

597 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 20:30 ID:???

それが中途半端なお節介って言うんだよ

598 名前:名無しさん@MZ-2000 投稿日:2001/06/28(木) 20:35 ID:???
懇切丁寧に指導してほしいんだったら2ちゃんねる以外で聞けば?

599 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 20:41 ID:???

放置すればいいだろ?
お前の理想の2chはここには無い!

600 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 20:48 ID:???
>>595=>>597=>>599
以前ドキュソな質問をして煽られた事を根に持つ厨房

601 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 21:51 ID:???
今度は特定厨房かよ(嘲笑)

602 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 21:53 ID:???
つーかMZ-2000使いは時代遅れだろ

603 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/28(木) 22:02 ID:???
ロクなアドバイスができない連中に限って煽り叩きには積極的なんだよなぁ
いや、俺には支障無いけど基本的には>>595>>599に賛成である
ここは初心者コーナー。無知な人間こそ積極的に参加するべきである

604 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 00:01 ID:dTFZ7jKs
今数当てゲームを作ってます。3ケタの数字を生成し、それぞれの桁の数字に
ダブりがないかをチェックしたいのですが、いろいろやったのですがどうも
うまくいきません。

なにかよいスクリプトがありましたら、教えていただけるとうれしいです。
ちなみに、こんな感じで生成しています。

srand;
for (0..$place-1) {
$rand[$_] = int(rand(9))+1;
}

# $place = ケタ数

605 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 00:03 ID:???
>それぞれの桁の数字にダブりがないかをチェックしたいのですが
999 とかはNGで、566 とか 583 とかはOKってこと?

606 名前:604 投稿日:2001/06/29(金) 00:25 ID:dTFZ7jKs
>>605
説明不足ですいません。
999,566はNG、583はOKです。

昔、女神転生っていうゲームであったコードブレイカーっていうゲーム
なんですよー。だれも知らないだろうけど。

607 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 00:25 ID:???
my $num;
my $nums;

srand;

for (0 .. $place - 1) {
    while (1) {
        $num = int(rand(9)) + 1
        if ($nums !~ /$num/) {
            $nums .= "\0$num";
            last;
        }
    }
}

my @rand = split(/\0/,substr($nums,1));

なんか汚い・・

608 名前:_gunzip 投稿日:2001/06/29(金) 00:29 ID:???
>>606

@map{@rand} = ();

if(keys %map == @rand){
    # ok
}

609 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 00:35 ID:wJE5mVUE
>608
解説きぼん

610 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 00:43 ID:???
>>604
ヒットアンドブローで探せばいろいろ見つかるかも

611 名前:_gunzip 投稿日:2001/06/29(金) 00:58 ID:???
>>609
#--------------------------------------------------------
# ハッシュ%mapをスライスで一気に初期化
#--------------------------------------------------------
# @rand = (7,5,9,1,0) の時、(重複無し)
# $map{'7'} = $map{'5'} = $map{'9'} = $map{'1'} = $map{'0'} = undef
# %map のキー数 = 5, @rand の要素数 = 5
#--------------------------------------------------------
# @rand = (8,8,4,3,2) の時、(重複在り)
# $map{'8'} = $map{'4'} = $map{'3'} = $map{'2'} = undef
# %map のキー数 = 4, @rand の要素数 = 5
#--------------------------------------------------------
@map{ @rand } = ();

# ハッシュ%map のキー数と元の配列の要素数が等しければ、重複は無い。
if(keys %map == @rand){
    # ok
}

612 名前:rubbish_lister 投稿日:2001/06/29(金) 01:00 ID:???
うーん。綺麗に書くのは難しい…。
Perlらしいからいいか (´ー`)y-┛~~

1 while( (join("", sort(split //, $n = int( rand(999) )))) =~ /(\d)\1/ );
print $n;

私も>>608のスクリプトの解説きぼんぬ。

613 名前:rubbish_lister 投稿日:2001/06/29(金) 01:02 ID:???
一歩遅れた(;´Д`)
なるほど>>611

614 名前:604 投稿日:2001/06/29(金) 01:27 ID:???
>>607
>>608
ありがとうございます。おかげでとりあえず完成させることができました。
まだPerlを触りだしたばかりなので、_gunzipさんの方は理解できませんでしたが、
これから勉強していこうと思います。

ちなみに、こんな感じになりました。プログラム初心者なので笑わないように(w
ttp://members.tripod.co.jp/up_for_2ch/test2.txt

615 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 02:19 ID:fQQ8ciRQ
大文字でHOGEと入力すると"Hello, HOGE"と返り、小文字、もしくは別の単語を
入力すると"Who are you?"、数字を入力すると"Type the letters"となるように
したいのですが、どうしてもうまく行きません。

elsif ( $input != /\w/)だとうまく行きます。しかし
elsif ( $input == /\W/)やelsif ( $input == /\d/)
だと全く意図しない結果が出てしまいます。

具体的には
elsif ( $input == /\W/)やelsif ( $input == /\d/)
数字を入力すると"Who are you?"
HOGE以外の文字だと"Type the letters"

なぜこうなってしまうのか教えてください。また、elsif ( $input == //)の
形で、//のところに/dを入れて意図した結果を得るのはどうすれば良いのでし
ょうか?

#!/usr/bin/perl -w

$test = "HOGE";

print "What is your name?: ";
chomp ( $input = <STDIN> );

if ( "$input" eq "$test" ) {

print "Hello,$input\n";

} elsif ( $input == /\d/ ) {

print "type the letter\n";


} else {

print "Who are you?\n";

}


__END__

616 名前:名無しさん@マジ教えてください 投稿日:2001/06/29(金) 02:26 ID:GZ8oljgs
PERLで、ファイルを作って、そこに書きこむことってできますか?
echoでリダイレクトするみたいに、、
やり方教えてください。

617 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 02:39 ID:???
>>615
正規表現の表記方法って知ってる?
elsif ( $input !~ /\w/)
elsif ( $input =~ /\W/)
elsif ( $input =~ /\d/)

618 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 03:00 ID:???
>>616
system('echo >foo.dat Hello');

or

open OUT, '>foo.dat';
print OUT 'Hello';
close OUT;

619 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 03:02 ID:???
>>616
>>618さんの後者のやり方の場合
ディレクトリのパーミッションを変え忘れないようにね。

620 名前:名無しさん@マジ教えてください 投稿日:2001/06/29(金) 03:22 ID:GZ8oljgs
ありがとうございます。
これからやってみます。

621 名前:615 投稿日:2001/06/29(金) 03:25 ID:fQQ8ciRQ
>>617
やっと意味が分かりました。
すんません。

622 名前:616 投稿日:2001/06/29(金) 03:51 ID:GZ8oljgs
なぜかできないです。
ファイルを固定の名前にしても作成されませんし、書き込みもされません。
最終的には、配列の名前をくみ合わせた名前でファイルを作成して
そこに別の配列の内容を書き込みたいんですが、可能なのでしょうか?

623 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 03:54 ID:???
パーミッション

624 名前:616 投稿日:2001/06/29(金) 03:54 ID:GZ8oljgs
具体的には、
$FORM{'namae'}_$zikan.txtみたいなファイルを作り、そこに
$NyuryokuNaiyoを書きこむということをしたいと考えています。
どうやったらいいんでしょうか?

625 名前:616 投稿日:2001/06/29(金) 03:55 ID:GZ8oljgs
サーバはWINDOWSなんですが、、、汁、、どうしたら、、

626 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 04:05 ID:???
エラーメッセージくらい書けよ厨房

627 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 04:06 ID:???
つーか、その程度の知識でCGIスクリプトを書こうとするなよ。危険すぎる。

628 名前:616 投稿日:2001/06/29(金) 04:20 ID:GZ8oljgs
>>626 >>627
エラーがでないんです。CGIの一部で、CSVにFORMの内容を時系列で(当たり前ですか)書き出すようにつくって、
そのバックアップ用に各々FORMの内容を保存しようと考えたんです。
で、理由はわかりませんが、ブラウザで見る限りエラーは表示されません。

また、WINDOWSでパーミッションを変更する方法を知りません。今、探してるんですが。
FTPでは777になっているんですが、WINDOWSでは無理ということだったのでしょうか、、

629 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 04:48 ID:w2xN.oIE
WindowsというとWebサーバはIIS?
IISがわかる奴ここは少ないからなあ。おれも知らない。
とりあえずエラー補足用に
use CGI::Carp qw(fatalsToBrowser);
をスクリプトの最初に入れて、
open(OUT, '>foo.dat') or die "$!";
とでもしてエラーメッセージ出してみたら。

630 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 05:33 ID:???
>>629
ローカルでデーモンとか使ってる可能性も。

631 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 12:23 ID:???
>>616=>>629
Win鯖って事はパスミスじゃないか?
相対パスじゃなくて絶対パスで試してみたら?
あと、""の中で使うなら、\を\\にするのを忘れないようにな。

open OUT, ">c:\\inetpub/wwwroot/user/cgi-bin/$FORM{'namae'}_$zikan.txt";
print OUT "$NyuryokuNaiyo";
close OUT;

632 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 12:24 ID:gTGq9vOI
もっとも効率よく(早くじゃなくて、メモリー、CPUをできるだけつかわずに)
ファイルを読み込むにはどうしたらいいでしょうか。

open(READ,'/my/file');
push(@line,$_) while (<READ>);
close(READ);

としてますが・・・

633 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 12:29 ID:???
>>632
open(READ,'/my/file');
@line = <READ>;
close(READ);

634 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 12:30 ID:???
>>632
ファイル内容の書き換えがないなら
open(READ,'/my/file');
while (<READ>){
処理
}
close(READ);
の方がメモリは食わないと思う

635 名前:名無しさん@MZ-2000 投稿日:2001/06/29(金) 13:49 ID:???
「、、、汁、、」が気になってしょうがない

636 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 14:47 ID:6bTr92VU
確実なロックがしたいんですが、どういったものがあるんでしょうか。
(flock以外しりません
特徴なども教えてもらえるとありがたいです。

637 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 15:12 ID:???
ごめんなさい確実なファイルロックシステムは存在しません

638 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 16:13 ID:???
そうなのですか・・・
では、flockが使えない場合、何を使用すればいいのでしょうか?
見極め方も教えてもらえると非常にありがたいです。

639 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 17:12 ID:6dQwBEa6
time()を使って、いつからだったかからの秒数が取れますよね。
逆に例えば2001年,6月,29日,18時,30分,15秒みたいなモノから
time()を使った様な秒数って取れるのですか?
7月1日以降はコレを表示って感じのものをやりたいんです。

640 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 17:25 ID:???
http://tako.2ch.net/test/read.cgi?bbs=perl&key=984388283
380 名前:JAPU 投稿日:2001/04/30(月) 21:19
NAME
Time::Local - efficiently compute time from local and GMT time

SYNOPSIS
$time = timelocal($sec,$min,$hours,$mday,$mon,$year);
$time = timegm($sec,$min,$hours,$mday,$mon,$year);

# 使うときは、use Time::Local; するように。


JAPUさんいつもありがとうございます。

641 名前:ピーちゃん 投稿日:2001/06/29(金) 17:33 ID:okzsTr02
はじめまして。
変数名を変数で制御する方法を、どなたかお教え下さいますでしょうか。
お願いします。

642 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 17:34 ID:???
>>641
${$hensu}

643 名前:なり 投稿日:2001/06/29(金) 19:27 ID:???
SSI方式のカウンタを作ってます。
例えば200まで来たら数値を0に戻すというようなことがしたいのですが。

$countfile = "./count.log";

というファイルにカウンタ値を格納していっているのですが
count.logの中身を0に戻すやり方を教えてください。


644 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 19:39 ID:???
use IO::File;
IO::File->new('>./count.log')->print(0);

645 名前:なり 投稿日:2001/06/29(金) 20:13 ID:???
ありがとうございます。
ただ自分はほんとに初心者向けの本しか持ってなく
use IO::File;
については解説がなくよくわかりませんでした。すいません。
200以上って場合は200という数値は
どこに記入すればよいのでしょうか。

646 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 20:25 ID:???
use IO::File;
IO::File->new('>./count.log')->print(200);

647 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 20:53 ID:T5IdSdfg
上級者になると簡単な事でもモジュールを使っているような気がするのですが、
大きな利点はなんでしょうか?
モジュールを使うことによっての、悪い点はないのでしょうか?
ご教授ください。
open(FILE,">$countfile"}
flock(FILEOUT,2);
print(FILE '0');
close(FILE);

648 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 22:37 ID:???
>>647
簡単な事だからこそ標準モジュールで
てっとりばやく済まそうってことでしょ。
初心者の人もIOモジュールの使い方ぐらいは
早めに覚えとくといいっすよ。

649 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/29(金) 23:11 ID:???
>>647
モジュールは無関係だが、目をふさぎたくなるような酷いコードだな。
openの末尾はタイポとしても、酷さは変わらないぞ。

650 名前:なり 投稿日:2001/06/29(金) 23:32 ID:???
すいません。やっぱりできませんでした。
明日本屋でも行って調べてみます。

651 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 00:04 ID:???
open(FILE,"+>$countfile");
ここは読み書き両方にしたほうがいいよ。flockの意味がない。

652 名前:647 投稿日:2001/06/30(土) 01:12 ID:???
>648
マジレスありがとう。モジュールを使うと遅くなるとかは関係有りませんか?

>649 651
つっこみありがとう。わざとでした。スマン。

653 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 02:32 ID:???
モジュールを使うと遅くなるってのは確かにある。
オブジェクト指向なモジュールは特にそう。
だが、簡単なものなら速度より簡潔さを重視するし、
そうでない場合も自分で書くより正確なことが多いので多用するね。

ただし、IO::*モジュールは簡単な一発もの以外では使わない。俺はね。

654 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 03:46 ID:piXvKdHw
Intel, APi522e.exeがインストールできないんですが
どこがいけないんでしょうか?

655 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 03:59 ID:???
>>654
「インストールできないんですが」で原因わかるわけねーだろ!
だいたいActivePerl-522て何だっけ? 古すぎてわからんよ。。。
とりあえず最新版入れろ。

656 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 04:13 ID:piXvKdHw
最新版もはいらん。
システムレジストリがどうのってでてるんだが。

657 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 04:14 ID:???
>どうのって
それを書くのが一番。

658 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 04:23 ID:piXvKdHw
アンインストレーションストリングへ書き込むことができない。
あなたはシステムレジストリでHキーローカルマシーンへ書き込む
パーミッションをもっていない。
とかいてあるらしい。

659 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 04:46 ID:coQpTjsk
>>658
Win2000やWinNTで、Administrator以外の一般ユーザでログインした状態で
インストールしたときと出てきそうなエラーメッセージだな。

660 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 05:16 ID:9uBIGUjk
Administratorでログインしてるんだがな・・・。
どうすりゃいいのよ?

661 名前:名無しさん@お腹いっぱい 投稿日:2001/06/30(土) 05:34 ID:G8StaOtQ
HTTP_REFERER等を条件と比較して
別々のページに振り分けるものを作ろうとしているのですが・・・
困っています。
条件に一致するならPRINTで@のHTML部分を出力して
一致しないならAのHTML部分を出力するように記述していますが
一致しない場合のHTMLが404になってしまいます。
何がいけないのでしょうか?
Perl厨房で申し訳ありません・・・

662 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 09:22 ID:???
>>661
何故かって?
それはファイルが存在しないから。

#機種依存文字を使うのやめれ。

663 名前::名無しさん@お腹いっぱい 投稿日:2001/06/30(土) 09:51 ID:G/0pMLQw
>>662
レスどうも。
エラーコードの意味はわかるのですが
なぜ404になってしまうのかが解決できません。
現状ではindex.cgiというスクリプト中に
ページ1とページ2のHTML記述をして出力させるようにしているのですが
両ページの記述方法は同じなのになぜ
後者の方の場合だけ出力されないのでしょうか?
よろしくお願いします

664 名前:昆布茶 投稿日:2001/06/30(土) 10:37 ID:???
↑スクリプトを公開すべし。

665 名前:名無しさん@お腹いっぱい 投稿日:2001/06/30(土) 11:17 ID:G/0pMLQw
ありがとうございます。
つい先日からperlをはじめたので恐縮なのですが
スクリプトを公開しますのでどうかよろしくお願いします。
http://www.geocities.co.jp/Technopolis/6437/index.txt
スクリプトに関するお叱りはありがたいですが
スクリプト以外のことでの誹謗中傷はご遠慮ください。

666 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 11:49 ID:???
>>665
ざっと見た感じだけど、
# if ($ENV{'HTTP_REFERER'} eq $_){
こういうところで、改行コードを除外してないから
flagが1にならないんじゃないか?
それでflagが0でも1でもないから何も表示されないとか。

末尾を
#HTML出力部分
if($flag == 0){
print "$accept";
}elsif(flag == 1){
print "$deny";
}else{
print "$error";
}

とかにしてみるのがよさげ。

667 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 11:53 ID:???
てか、perl -c やってる?
$flag の $が抜けてるよ。

668 名前:667 投稿日:2001/06/30(土) 11:55 ID:???
ゴメソ。
チェック抜けるんだね…鬱…

669 名前:666 投稿日:2001/06/30(土) 11:58 ID:???
>>667
そんなミスもあったのか。
ってコピペした場所にもあるじゃん!

チェック漏れスマソ。

670 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 12:00 ID:???
教えてください
iモードの絵文字に悩まされてます、絵文字を除去するにはどうすれば
いいのでしょうか?

671 名前:E_ERROR 投稿日:2001/06/30(土) 12:05 ID:???
余り今時間無いんで眺めて見ただけだけど。
サーバに上げて見たけど動くんですよね。こっからどうしたいのかな?
強制的にリファ送ったけど認識するし。

>スクリプト以外のことでの誹謗中傷
若し機種依存文字の件だったら662さんは間違った事は言ってないかと。
Script書く上で文字コード・機種依存文字の問題はかなり難しい件であり、
各所でそのネタは重視されています。MLにも入って見れば、ウザイ
ぐらいそれ系のネタは飛び交ってます。
いっぱしのScript書きを目指すならその辺の認識は重要かと私は思うのですが?
その類のネタは知りたかったらすぐ見つかるので検索して勉強する事を
お勧めしますよ。

実は今書きたかったのはこっち(笑)。
私もどっちかというと趣味Script書きなんでへぼなんですわ。

672 名前:E_ERROR 投稿日:2001/06/30(土) 12:09 ID:???
>666
なるほど、ぱっと見で気づかんあほの私もなんだか。
PHPに嵌り切ってるからPerl忘れてるって言い訳しても通じなさそう。
暑い中逝って来ます…。

673 名前:661 投稿日:2001/06/30(土) 13:00 ID:???
なんとか前進できました。
あとここからは自分で勉強して解決しようと思います。
ご意見のほう参考になりました。
レスくれた方々どうもありがとうございました。

674 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 13:16 ID:???
>>670
ttp://www.specters.net/cgipon/labo/it_emoji.html

聞く前に検索くらいしよう。
http://www.google.com/search?q=%22i-mode%22+%8AG%95%B6%8E%9A&btnG=Google+%8C%9F%8D%F5&hl=ja&lr=
Googleで1発だ。
これじゃ初心者丸出しだろ?

675 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 14:03 ID:???
>>674
お恥ずかしい限りです、ありがとうございました。

676 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 14:28 ID:???
>>654-660
おれもMSI形式のActivePerlがインストールできなかったことがある。
ASPackage形式のやつだとインストールできた。
いやあんときはWin2kじゃなくてWin98使ってたんだっけかな?

677 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 14:48 ID:???
ローカルマシン(ダイヤルアップ接続)から
ファックス送信するモジュールとかあります?

678 名前:654 投稿日:2001/06/30(土) 15:31 ID:9uBIGUjk
2000なんすけど。

679 名前:ピーちゃん 投稿日:2001/06/30(土) 16:26 ID:VUBp7HbU
はじめまして。
変数名を変数で制御する方法をどなたかお教え下さいますでしょうか。

680 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 16:30 ID:???
>>678
うちも Win2Kで、APi522e.exeで入れたけど
特に詰まった覚えはないよ。

ちなみにその他の関係しそうな環境。
Apache1.3.14 + PHP4.0.5
何か他のがわるさしてるとか?

681 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 16:31 ID:???
>>679
別スレで同じ事言ってなかったか?
レスが付いていた気がするが。

682 名前:681 投稿日:2001/06/30(土) 16:36 ID:???
>>641-642
違った、このスレだ。(ワラ
どっちにしろ、何度も聞くなよ。

683 名前:ピーちゃん 投稿日:2001/06/30(土) 16:37 ID:VUBp7HbU
681さんへ。
詳しいことはここで聞いてくださいと言われましたので。

684 名前:ピーちゃん 投稿日:2001/06/30(土) 16:39 ID:VUBp7HbU
もう投稿していましたね。
答えてくださった方もいましたね。
申し訳ありません。

685 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 17:09 ID:6E6G/3mk
>>676
自分もMSI形式がインストール出来ない事がありました。
2〜3日後に再ダウンロードしたら無事にインストール出来ましたけど。
大きなファイルの時、こういう事って結構ある様な気が・・・。

686 名前:678 投稿日:2001/06/30(土) 17:55 ID:9uBIGUjk
680
とりあえずオーエス再インストールするよ。

687 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 19:39 ID:thezcssc
Jade.pmの使い方、日本語で解説してあるところありませんか?

jcode.plと違う、Jade.pmの書き方を使いたいのですが。

688 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 20:17 ID:???
>>687
IDかこいい!

689 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 20:31 ID:thezcssc
>>687
Jcode.pmの使い方、日本語で解説してあるところありませんか?

jcode.plと違う、Jcode.pmの書き方を使いたいのですが。

スペル間違ってました。

690 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 20:42 ID:???
http://www.google.com/search?num=100&hl=ja&safe=off&q=Jcode.pm&btnG=Google+%8C%9F%8D%F5&lr=lang_ja

691 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 21:12 ID:???
基本形:
my $jstr = Jcode->new("string");
print $jstr->xxx; # xxx = sjis, euc, jis, utf8
print Jcode->new("string")->xxx;
print jcode("string")->xxx;

だが俺は専らconvertしか使わない。
print Jcode::convert("string", "sjis");

692 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 21:44 ID:???
>>691
ありがとうございます。

http://www.netfort.gr.jp/%7Ekiyoka/jcode_intro/index.html
ユーザーサイト
Jcodeを使おう(実用本位のJcode紹介)

こことか見てたんですがよくわからなくて

693 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 22:28 ID:???
実際のところ、conver()tだけ使えれば十分だと思うがな。

694 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 22:56 ID:???
>>684
具体的にどんなことが知りたいの?
ちょっと抽象的すぎてよく分からない。

695 名前:名無しさん@お腹いっぱい。 投稿日:2001/06/30(土) 22:57 ID:FLPQLr3k
リアル・プロデューサーは変換と転送を同時に行えることが
できるのでしょうか?
手元にパソコンが3台もあるわけがなく、確認しようがないんですので、
スマソ。

696 名前:ヽ(´ー`)ノ 投稿日:2001/07/01(日) 01:25 ID:4azTXvJ2
すいません。
↓ココのメーラーなんですけど、
http://ipveov.virtualave.net/hope/index.html
どうやって使うんですか?
管理人が放置してるみたいなんで
だれか教えてくださいm(_ _)m

697 名前:楽しいCGI 投稿日:2001/07/01(日) 01:42 ID:???
----------------サポートは作者に頼みましょう----------------
--------使い方が判らないものは使わないようにしましょう--------

698 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/01(日) 07:27 ID:???
*.pm
ファイルの使い方が和歌欄所〜!

699 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/01(日) 10:45 ID:???
>>698
Perl Module

700 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/01(日) 14:00 ID:jQM8Nz7E
厨房質問ですみません。
ディレクトリ内のファイル一覧を表示するのに

#!usr/local/bin/perl
print "Content-type: text/html\n\n";
print <<"HEAD";
<html><head><title>ichiran</title>
</head><body>
HEAD
opendir(DIR,"./");
@list=readdir(DIR);
close(DIR);
@list=sort(@list);
foreach(@list){
    print "$_<br>\n";
    }
print "</body></html>";
exit;

という風に書いてローカルで動かしたところ、ちゃんと動いたので
サーバにアップロードして動かしてみたところエラーになって
しまいます。原因はなんなんでしょう?くだらない質問かもしれ
ませんがご教授願います。

ローカル:Win、ANHTTPd、Active Perl
アップ先:hypermart.net

701 名前:' 投稿日:2001/07/01(日) 14:28 ID:???
'

702 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/01(日) 15:11 ID:???
>>700
#!/usr/local/bin/perl

703 名前:700 投稿日:2001/07/01(日) 20:46 ID:???
>>702

あちゃ〜凡ミス・・。
鬱だ。逝ってきまス

あ、それとありがと。

704 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 00:09 ID:???
Content-type: image/gif のようにpngファイルを出力する事は可能ですか?
Content-type: image/png ?

705 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 00:27 ID:???
>>704
可能だろ。
っつか、一度試行すればわかるだろうが。

706 名前:JAPU 投稿日:2001/07/02(月) 07:49 ID:???
http://www.isi.edu/in-notes/iana/assignments/media-types/media-types

707 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 16:31 ID:???
たびたび申し訳ないっす
iモードの絵文字をHTMLで表示するのはわかったんだけどメールで
表示する場合ってどうすればいいんでしょう?

708 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 19:03 ID:???
送信?
受信?
メーラーは?

709 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 20:50 ID:wG0apBZw
WAKWAKざんまいでLWPをインストールしてる人いますか?
ディレクトリ構造を教えてください

710 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 21:05 ID:???
perl 始めて三日目、現在言葉狩りの勉強をやってるんですが、
ちょっと解らないところがあるのです。

$kinsi='うひ';

@kinsiword = (
    '死',
    '殺',
    );

sub kinsi {
        foreach (@kinsiword) {
            $com =~ /$_/gi;
            $com =~ s/$_/$kinsi/gi;
        }
}

コレで送られてきたメッセージ内 ($com) の文字は上手く置換できるのですが、

@kinsiword = (
    '',
    );

とすると、表示がおかしくなります。
例えば、$com が あ なら、 うひb、ひうひ という風に。
空の文字が配列内にあっても何も起こらないようにするにはどうしたら良いのでしょうか。

711 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 21:05 ID:???
perl 始めて三日目、現在言葉狩りの勉強をやってるんですが、
ちょっと解らないところがあるのです。

$kinsi='うひ';

@kinsiword = (
    '死',
    '殺',
    );

sub kinsi {
        foreach (@kinsiword) {
            $com =~ /$_/gi;
            $com =~ s/$_/$kinsi/gi;
        }
}

コレで送られてきたメッセージ内 ($com) の文字は上手く置換できるのですが、

@kinsiword = (
    '',
    );

とすると、表示がおかしくなります。
例えば、$com が あ なら、 うひb、ひうひ という風に。
空の文字が配列内にあっても何も起こらないようにするにはどうしたら良いのでしょうか。

712 名前:見習い君 投稿日:2001/07/02(月) 21:17 ID:???
@kinsiword = ();にする。又は
if ($kinsiword[0]) { &kinsi; }
てな感じに呼ぶ。

713 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 21:25 ID:???
えっと、実は

@kinsiword = (
 '死',
 '殺',
 '',
 '',
);

のような形にも対応させたいのです。
見習い君氏の方法では、やはり同じ結果になるのですよ。

714 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 21:29 ID:???
すみません、いきなり自己解決しました。

sub kinsi {
 if ($kinsiword[0]) {
  foreach (@kinsiword) {
   if ($_){
     $com =~ /$_/gi;
     $com =~ s/$_/$kinsi/gi;
   }
  }
 }
}

お騒がせして申し訳ない。

715 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 21:29 ID:???
すみません、いきなり自己解決しました。

sub kinsi {
 if ($kinsiword[0]) {
  foreach (@kinsiword) {
   if ($_){
     $com =~ /$_/gi;
     $com =~ s/$_/$kinsi/gi;
   }
  }
 }
}

お騒がせして申し訳ない。

716 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/02(月) 21:31 ID:???
先程から二重投稿ばかりでこちらも申し訳ない…

717 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 00:10 ID:iSdl1db6
Perlって、スクリプトだから、ソースの内容を見られちゃいますよね。
コンパイルなどしてバイナリファイル化(もしくは簡単に読めない化)
する良い方法をご存知の方はいらっしゃいますか?

ちょっと調べてperlccっていうのを見つけたのですが、マニュアルによると、
実験レベルで製品などには使用しないようにと注意書きがあって使用を
躊躇しています。

実はお客さんに、Perlのスクリプトが入ったRedHatベースのLINUXマシンを
提供するのですが、中のPerlスクリプトは、簡単には解析してほしくない
事情があります。

最初からCなどでCGIを作ればよかったのですが、今となっては、
その時間もなく。。。らら〜、先見性のなさに、困っています。

718 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 00:20 ID:???
perlccでコンパイル/バイトコードコンパイルするしかないと思うが。
「素人には分からない」ってのなら幾つか方法はあるがな。

719 名前:717 投稿日:2001/07/03(火) 00:45 ID:iSdl1db6
>718

解析するの気力を失わせるだけでも、やる意義はあります。
よろしければ、「素人には分からない」方法のヒントを教えてくださーい。

720 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 01:13 ID:???
つか、隠したいとこだけCにしちゃえばいいじゃん。

721 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 02:34 ID:???
#!/usr/bin/perl
# 簡易エンコード/デコードツール hperl
use strict;
my($encode, $decode, $hperl);
while(@ARGV and $ARGV[0] =~ s/^-//){
    foreach (shift){
        /e/ and $encode++, last;
        /d/ and $decode++, last;
        /h/ and ($hperl = shift), last;
    }
}
if($encode){
    print "#!$hperl\n" if $hperl;
    while (<ARGV>){
        tr[a-zA-MN-Z0-9* _\t<>{}'"\n$:?][N-ZA-Mn-za-m5-90-4 *\t_}{><"'$\n?:];
        print;
    }
}elsif($decode){
    while (<ARGV>){
        $. == 1 and /^#!.*hperl$/ and next;
        tr[N-ZA-Mn-za-m5-90-4 *\t_}{><"'$\n?:][a-zA-MN-Z0-9* _\t<>{}'"\n$:?];
        print;
    }
}else{
    open PERL, "|$^X -";
    while (<ARGV>){
        $. == 1 and /^#!.*hperl$/ and next;
        tr[N-ZA-Mn-za-m5-90-4 *\t_}{><"'$\n?:][a-zA-MN-Z0-9* _\t<>{}'"\n$:?];
        print PERL;
    }
    close PERL;
}
__END__
$ hperl -e foo.pl >foo.hpl # エンコード
$ hperl -d foo.hpl >foo.pl # デコード
$ hperl foo.hpl # エンコードしたスクリプトを実行(但しスクリプト名はあてにしないこと)
$ hperl -h /foo/bar/hperl -e foo.pl >foo # -h のあとにhperlのPATHを書いておく
$ foo # 実行可能スクリプト(CGIとしての動作も可能?)

これで生のスクリプトは読めない。

722 名前:709 投稿日:2001/07/03(火) 10:08 ID:XVjOTMAw
補足します
WAKWAK(
http://www.wakwak.ne.jp)では
CGIスクリプトや自作モジュールの設置場所を/cgi-bin/直下に限定しています

×/cgi-bin/my_module/hoge.pm
○/cgi-bin/hoge.pm

LWPモジュール群(libwww-perl-5.53_94)を展開すると
/cgi-bin/以下にサブディレクトリが作成されるのでWAKWAKでは動作しないのです

require '/cgi-bin/my_module/hoge.pm';

BEGIN {unshift(@INC,'/cgi-bin/my_module/');}
use hoge.pm;
では使えませんでした

ディレクトリ構造を無視して全ファイルを/cgi-bin/に移動しようと思っても
同名ファイルが存在するので上手くいきません

どうすればよいでしょうか?

723 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 10:12 ID:???
んー、管理者に言ってLWPをインストールしてもらうとか。
あと、かりに BEGIN {unshift(@INC,'/cgi-bin/my_module/');} がうまくいってても、
use hoge.pm; じゃ無理。
use hoge; ね。

724 名前:>>wakwak"管理人" 投稿日:2001/07/03(火) 17:14 ID:???
ここ見てたらLWPをインストールしてください

725 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 17:16 ID:???
use Module.pm;という発想に驚いた。

726 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 17:18 ID:???
っつーかrequire '/cgi-bin...' ってなんだよ。
ルート直下のcgi-bin使ってんのか?

727 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 21:01 ID:???
おーい>>726に相対パス教えてやれ

728 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 21:30 ID:???
require './omaemona.txt'

729 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 22:26 ID:???
ネタか?
require './omaemona.txt'
require '/omaemona.txt'
require 'omaemona.txt'
cgi-bin以下にあるスクリプト限定なら同じだろ?
まー意地悪な設定ならエラー扱いされるけど

730 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 22:32 ID:???
以下のような置換が上手く出来ません。
行の先頭に中黒が付いてたらリストとみなして、

<p>ほげ</p><p>・リスト1<br>・リスト2<br>・リスト3<br></p><p>ほげ・ほげ<br>・りすと4</p>

<p>ほげ</p><ul><li>リスト1</li><li>リスト2</li><li>リスト3</li></ul><p>ほげ・ほげ</p><ul><li>リスト4</li></ul>

というようなことをしたいのです。
どうにか良い方法は無いでしょうか。

731 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 22:33 ID:???
>>730
4行目を6行目の様にしたいってことです。

732 名前:238 投稿日:2001/07/03(火) 22:37 ID:???
あとできれば最新20件みたいなのも

733 名前:732 投稿日:2001/07/03(火) 22:38 ID:???
誤爆でした。ごめんなさい。

734 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/03(火) 22:42 ID:???
>>730
あー、さらに追記です。
・リスト3<br></p> のような <br></p> や <p><br> などは段落置換処理を行なって出ないようにしてます。
#ちなみに <br> が複数続くことも無いです。

735 名前:見習い君 投稿日:2001/07/04(水) 00:27 ID:???
>>730
元ファイルの構成がイマイチ判らないんだけど…
こんな感じかなぁ。。恥かしい処理だ。。

foreach $line (@lines) {
    $line =~ s/^・(.*)/<ul><li>$1<\/li><\/ul>/;
    $new .= "$line\n";
}
$new =~ s/<\/li>(<\/ul>\n<ul>)?<li>/<\/li>\n<li>/g;
print <<"EOE";
Content-type: text/html

$new
EOE
exit;

@linesにファイル入れてね。

736 名前:rubbish_lister 投稿日:2001/07/04(水) 01:06 ID:???
s/\//;よりs{/}{};のほうがいいと思われ。

737 名前:rubbish_lister 投稿日:2001/07/04(水) 01:08 ID:???
間違い。
s/\//;→s/\///;

738 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/04(水) 08:49 ID:???
>>735
ありがとうございます。
でもちょっと出来なかったです。

構成っていうとどの辺りを書けば良いんでしょうか。
書きこみ処理はまんま KENT の Aska BBS v1.51 です。
というか Aska を改造してるのですけど…

http://members.nbci.com/nfvxsd/cgi.txt

ここに置いておくので、宜しければ見て下さい。
# 重くて開かない時もあります…

739 名前:見習い君 投稿日:2001/07/04(水) 09:37 ID:???
あ、なるほど。ご指摘ありがとう。見習いますれす。
foreach $line (@lines) {
    $line =~ s{^・(.*)}{<ul>\n<li>$1</li>\n</ul>};
    $new .= "$line\n";
}
$new =~ s{</li>\n(</ul>\n<ul>)\n<li>}{</li>\n<li>}g;
こんな感じになるんかな?

740 名前:見習い君 投稿日:2001/07/04(水) 09:40 ID:???
>>738
重いからあとでね。てか何がダメだったか書いてくれ。

741 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/04(水) 09:56 ID:???
>>740
@lines にファイルを入れるということで、

@lines = $com; #com はデータ (タイトルや投稿者、メッセージなど)

としました。

742 名前:見習い君 投稿日:2001/07/04(水) 17:20 ID:???
(´□`)・・・
行の先頭に「・」がくるって言ったくせに・・・(;;)

743 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/04(水) 17:31 ID:???
>>742
申し訳ないです、説明不足でした…

744 名前:見習い君 投稿日:2001/07/04(水) 17:57 ID:???
sub paragraphの最後にこの2行をつっこみ。
$com =~ s{>・([^<].*?)<}{><ul><li>$1</li></ul><}g;
$com =~ s{</ul><br><ul>}{}g;

時間かかっちゃった(-▽-;

745 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/04(水) 18:24 ID:???
>>744
完璧です、素晴らしい。
ありがとうございました、今度はこれを解析して学習してみようと思います。
#実はどういう処理してるか解らない(汗

746 名前:見習い君 投稿日:2001/07/04(水) 21:36 ID:???
ん、ドット消し忘れた。

747 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/04(水) 23:29 ID:???
前から思ってたんだが… s///o; の o って何だろう?
g と i は解るが、o は未だに解らない…

748 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/04(水) 23:54 ID:???
>>747
パターンを1回だけコンパイルする
と青ラクダ本に書いてある

749 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 00:04 ID:???
>>747
foreach(1 .. 9){
$test = "123456789";
$test =~ s/$_/a/og;
print $test ."\n";
}
こういうことを試してみれば、どういう事かわかると思う。

750 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 13:01 ID:???
処理時間の取得ってどうやるんだっけ…
やり方が見つからないんでここで質問。

ちなみにスクリプトの実行から終了までの時間を取れれば。
#ベンチマークやるんで

751 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 13:10 ID:???
実行速度の比較をするだけなら times 関数とか。

752 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 13:11 ID:???
time perl hogehoge.pl

それとも use Benchmark かしら

753 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 13:58 ID:???
おー、times 使ったら一応比較は出来たよ、さんくす。

use Benchmark は…どうやって使うのか解らない(汗

use Benchmark;
(コード)

その後、結果を出力する方法が解らないっす。

754 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 15:02 ID:???
#!/usr/bin/perl
use Benchmark;

#1

$t1 = new Benchmark;
code;
$t2 = new Benchmark;
print "the code took:", $t2->timediff($t1)->timestr, "\n";

#2
$count = 10000;
timethese( $count, {
    foo => sub{ code1 },
    bar => sub{ code2 },
});

__END__

755 名前:707 投稿日:2001/07/05(木) 17:37 ID:???
え〜、あれから調べてみたんですが
i−modeからFROMタグを使ってsendmailでiーmodeなり
PCにメールを送る際に文字化けが起こるので絵文字を他の文字に変換したりは
していたんですが、i−modeからFORMタグを使ってi−modeに送る
場合はなんとか絵文字が送れないかと思ったのです。
ざっと文献やネットを見回していると「無理だ」とかかれてましたね。。。
でも今話題の出会い系サイトでいくつかのサイトでは送れるんですよね、なんで
だろう?

756 名前:JAPU 投稿日:2001/07/05(木) 18:24 ID:???
>>753
そういう場合はドキュメントを見るのが正解。
man Benchmark
or
perldoc Benchmark

757 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 19:02 ID:WznWMXto
デバッガの x (変数) コマンドみたいに、リファレンス、配列、ハッシュなどを
たどって綺麗に表示してくれるパッケージ等はありますか?

758 名前:_gunzip 投稿日:2001/07/05(木) 19:30 ID:???
>>757
Data::Dumper とか
http://www.bekknet.ad.jp/~bero/docj/module/06/Data_Dumper.html

759 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 20:06 ID:???
>>754
ありがとっす。

>>756
了解、今夜か明日にでも見てみます。

760 名前:名無しさん@お腹いっぱい 投稿日:2001/07/05(木) 20:16 ID:4qZ7uZOM
perlでフォームメールを作ったのですが、そのメールの送信まではうまくいきます。
そこにそのメールの内容をログとしてファイルに記載したいのですが、
どうすればよいのでしょうか?

761 名前:ど素人 投稿日:2001/07/05(木) 20:35 ID:???
これって
どこかまちがってますか?
22時間かかってもわかりません
どなたかキツイ指摘を・・・
環境変数のスクリプトです
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n\n";
print "<title>Proxy checkr</title>\n;
print '<body bgcolor="black" text="dimgray" link="dimgray" alink="dimgray" vlink="orangered">'\n
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
$red = '<font color="silver">';
$endf = '</font>';
if ($host eq "") { $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr }
print "<br><br>\n;
print "$host\n" ;
if ($host =~ /(proxy|prox|squid|cache|www|dns|ns|gateway|gatekeeper|gate|^gw|^fw|firewall)/i){
print "$red<- テスト $endf <br>\n";
$pflag = 1;
}
else {
print "<- テスト<br>\n";
$pflag = 0;
}
$via = $ENV{'HTTP_VIA};
if( $via != "") {
print "$red HTTP_VIA テスト -> $via $endf<br>\n;
print "テスト<br>\n";
$via_flag =1;
}
else {
print "テスト<br.\n;
$via_flag = 0;
}
$client = $ENV{'HTTP_CLINT_IP'};
if( $client != "" ) {
print "$red CLENTテスト-> $clint $endf<br>\n;
}
else {
if ($via_flag == 1) {print "テスト"<br>\n";}
else {
if ( $pflag == 1 ) {print "テスト<br>\n"; }
else { print "テスト?<br>\n";
}
}
print "\n</body>\n";
print "</html>\n\n";
exit;



762 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 20:41 ID:FPnmy2lY
print '<body 〜 vlink="orangered">'\n
                     ↑なにこれ?

763 名前:757 投稿日:2001/07/05(木) 20:58 ID:???
>>758
どもです。

764 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 21:00 ID:???
>>761
つーか、クォーテーションの囲い損ねが沢山…
キツイ指摘する気力も起こらんわ。

765 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 21:08 ID:???
しかし>>761見たいな奴は何見て勉強してるんだろうな。
Perl5対応のマトモな本 or スクリプトなら
普通q/qq/qxクォートやヒアドキュメントが載ってると思うのだが。

…糞本や糞スクリプトが出回っているってことか(鬱)

766 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 21:42 ID:???
まぁなんだ。
とりあえず>>761は注意力をもうちょっと上げてくれ。

767 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/05(木) 22:14 ID:2FhZLyb6
エラーログ 見てみ

768 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 00:29 ID:???
>>765
他人のスクリプトをコピペして使ってるんだろ?
本なんか読んでないに決まってるじゃないか。

・・・昔の俺がそうだったんだよ。

769 名前:ど素人 投稿日:2001/07/06(金) 00:33 ID:???
みなさん
レスありがとうございました
もっと
注意力をあげてきます
動かせるようになったら報告します
本も色々読んだ方がいいのですか
よい本と糞本の区別もつかないもので・・
ありがとうございました

770 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 00:45 ID:???
【Perl,CGI】参考書籍 第2版
http://corn.2ch.net/test/read.cgi?bbs=php&key=988809842

771 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 00:49 ID:???
>>761=>>769
まさかWEBサーバー上でテストしてないだろうな?
スクリプトのテストをするならローカルでやれよ。
参考:http://tohoho.wakusei.ne.jp/wwwcgi6.htm

772 名前:ど素人 投稿日:2001/07/06(金) 00:59 ID:???
>>770
ありがとうございました
たすかります

>>771
はい
Active Perlでやってます

773 名前:ど素人 投稿日:2001/07/06(金) 02:22 ID:???
うごかね〜〜〜〜〜〜
だいたい 俺みたいなスーパー初心者が
「ちょ〜っといぢってみようかな〜」なんて
色気だしたのが間違いでした

フリーシージーアイのパス変更のみで
満足するべきでした
折角レスもらったのにすみません

一から出直してきます m(_ _)m

774 名前:名無し 投稿日:2001/07/06(金) 03:31 ID:YsXZOyrU
サブルーチンについて勉強しています。

一つでは書き込めないため、三つに分けさせて頂きます。
ごめんなさい。

775のスクリプトで

return $result_x, $result_y;

この一行があると無いとでは結果が全く違います。
ここで問題にしたいのは$calc_value[0]と$calc_value[1]に入る値です。
この一行があってもなくても、いつでも
$calc_value[0] = $argument1(つまり10)
$calc_value[1] = $argument2(つまり1)
というわけではないのでしょうか?

また、776にある
my ($result_x, $result_y, $argument1, $argument2);
($argument1,$argument2) = @_;
この二行はそれぞれこのスクリプトの中でどういう役割を果たしているのでしょうか?

宜しくお願いします

775 名前:名無し 投稿日:2001/07/06(金) 03:31 ID:YsXZOyrU
#!/usr/bin/perl -w

$argument1 = '10';
$argument2 = '1';

@calc_value = &return_value($argument1,$argument2);

print "$calc_value[0]\n";
print "$calc_value[1]\n";

sub return_value {


$result_x = $argument1 + $argument2;
$result_y = $argument1 + $result_x;

print "----サブルーチン始----\n";
print "\$result_x = $result_x\n";
print "\$result_y = $result_y\n";
print "\$argument1 = $argument1\n";
print "\$argument2 = $argument2\n";
print "----サブルーチン終----\n";

return $result_x, $result_y;

}

776 名前:名無し 投稿日:2001/07/06(金) 03:32 ID:YsXZOyrU
#!/usr/bin/perl -w

$argument1 = '10';
$argument2 = '1';

@calc_value = &return_value($argument1,$argument2);

print "$calc_value[0]\n";
print "$calc_value[1]\n";

sub return_value {

my ($result_x, $result_y, $argument1, $argument2);

($argument1,$argument2) = @_;

$result_x = $argument1 + $argument2;
$result_y = $argument1 + $result_x;


return $result_x, $result_y;

}

777 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 04:05 ID:???

悪い。
use strict;が無いってだけで目が読むのを拒否しやがった。

778 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 04:08 ID:???
>>774-776

# 775
> $calc_value[0] = $argument1(つまり10)
> $calc_value[1] = $argument2(つまり1)
> というわけではないのでしょうか?
まず、returnしている変数が$result_x,$result_yなのでお望みの結果にはなりません。
常に10,1でいいなら
return($argument1, $argument2);
としてやればいいでしょうね。
# ただ、こんなことやってもこのサブルーチンの存在している意味がないですけど。
ちなみに、サブルーチンに明示的にreturnを指定していない場合は
一番最後に評価された値が戻ります。
@calc_value = (1,undef); という結果になるかと。

# 776
まず、レキシカル変数について勉強しましょう。
グローバル特殊配列@_には、サブルーチンに引き渡された変数が格納されています。
> my ($result_x, $result_y, $argument1, $argument2);
> ($argument1,$argument2) = @_;
まず、4つの変数をレキシカルスコープ宣言した後に、
変数を代入しているわけです。
# 説明下手ですいません。

779 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 05:30 ID:YsXZOyrU
>>778
すみません。775の説明はよく理解したのですが、776の説明がよく理解できません。
@_ = ($argument1, $argument2);
ではなく、逆になっているのが良く分かりません。

また($argument1,$argument2) = @_; をサブルーチンの中に置くのと外に置くのと
では意味が変わるのでしょうか?

()や位置関係が絡むとややこしくって・・・。

お願いします。

780 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 07:56 ID:ex2YDxP.
引数わたし>779

781 名前:778 投稿日:2001/07/06(金) 09:48 ID:???
>>779
仮に、$str1に$str2を入れたい場合、どうします?
$str1 = $str2; とするでしょう?
同じように、$argument1,$argument2に@_を入れてるんですよ。
サブルーチン内では$argument1,$argument2共にレキシカル変数になっているので
もはや10,1という値は入っていません。それを代入してやってるというか。

@_は場所によって、適宜引数が格納されているので、意味は変わるというのが正解でしょうか。

782 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 09:56 ID:???
>>779
一度、本屋さんに置いてある全てのPerl本の「サブルーチン」を
説明している部分を立ち読みすると良いと思いますよ。

783 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 15:44 ID:RNx.m3EU
>>781
なるほど!
自分で色々試してやっと理解しました。
ありがとうございました。

でも参考書の一冊も手元にないのも限界かな・・・。

784 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 17:59 ID:???
>>783 そうだったのか… Σ( ̄□ ̄;)

785 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/06(金) 18:05 ID:YlE0Cv3o
http://www2.to/05F

786 名前:783 投稿日:2001/07/06(金) 22:54 ID:GVXvZTOc
>>784
え?どういう意味ですか?(不安)

787 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/07(土) 20:25 ID:???
http://p4room.mda.or.jp/book/cgi/download/dload.cgi?access3.lzh
なんですけど、外国サーバーに設置すると15時間少なく記録されしまいます。
どのように直せばいいのでしょうか。

788 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/07(土) 20:46 ID:???
>>787
gmtime(time() + 9*60*60);

789 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/07(土) 20:48 ID:???
>>787
タイムゾーンと時間取得の関数について勉強してください。
# $ENV{TZ}, localtime(), gmtime() あたり

790 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/07(土) 20:49 ID:???
>>787
ソ・ー・ス・だ・せ!

791 名前:VEDA 投稿日:2001/07/07(土) 21:22 ID:???
すいません・・
http://cgi18.plala.or.jp/downward/
このCGIで改造途中いきづまってしまいました。
サポートへはきけないのでだれかおしえてくださーいぃ

ここのスクリプトの表示部分のhtml.cgiに「$id」があります。
ちなみに$idの例をあらわすと
1-1とか1-2とかスレッドの番号です

この$idをveda.cgiの860行あたりにある
sub make_partial_message{
の部分で$idのショットカットをつかいたいんです。
どうすればつかえることができますか?
自分のめちゃくちゃな発想では
my $thread = shift;
ここを変えるとおもうのですが・・
どなたかどうかおしえてくださいぃ〜

今日の昼からずっと考えてトライしまくって無理でした・・
目が痛いです。だれかおしえて〜〜〜〜!

792 名前:787 投稿日:2001/07/07(土) 21:29 ID:???
すべてのtimeをtime +15*60*60にかえたら動きました。
みなさんありがとうございました。

793 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/07(土) 21:58 ID:???
>>791
ショットカットって何よ
というか、こっちでない?
http://corn.2ch.net/test/read.cgi?bbs=php&key=988808396&ls=50

>>787
素直にgmtimeで9時間足せば、どこの国だろうが日本時間になるよ

794 名前:VEDA 投稿日:2001/07/07(土) 22:25 ID:???
お そっちいってみます

795 名前:DAZZ 投稿日:2001/07/08(日) 11:11 ID:6Jyxvsmw
URLの関係で、CGI使えないトコにあるフレームセットから、
SSIを呼び出しています。

こういった場合、アクセスログ解析で、
refererを取得する事はできないんでしょうか?

やはり、直接htmlやcgiを指定しないと無理ですか?
どなたかご存じでしたら、教えてください。

796 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/08(日) 11:26 ID:???

これいい加減FAQだよな。

797 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/08(日) 13:08 ID:???
document.write( "<img src='accesslog.cgi?referer=" + document.referer + "'>" );

798 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/08(日) 13:34 ID:???
>>797
それはフレームじゃ無理。

799 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/08(日) 14:51 ID:???
>>795
過去ログに<em>90%同じ</em>質問があり、回答もされています。
読みましたか?

800 名前:DAZZ 投稿日:2001/07/08(日) 16:32 ID:CHSNDL26
みなさま、ありとうございました。

refererとフレームで検索かけつつ見たつもりでしたが、
見逃してしまったようです。

もう一度探してみます。
すいません。

801 名前:名無しさん@お腹いっぱい 投稿日:2001/07/08(日) 20:01 ID:hb0UPetQ
http://www.2ch.com/の時はそのまま出力して、
ttp://www.2ch.com/の時に自動リンクしたいんですが
正規表現が解りません、、、芯だ方が良いでしょうか

802 名前:5.005以上ね 投稿日:2001/07/08(日) 20:38 ID:???
死ぬまえに勉強して下さい。

s|(?<!h)(ttp://[URLにありえる文字]+)|<a href="h$1">$1</a>|g;

hogettp://www.2ch.com でもリンクされるけど、君がどう望んでるのかわからんからne。

803 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/08(日) 20:43 ID:???
>>802
s|([^h]?)(ttp://[URLにありえる文字]+)|$1<a href="h$2">$2</a>|gi;
では駄目なのかな?

804 名前:名無しさん@お腹いっぱい 投稿日:2001/07/08(日) 20:53 ID:???
>>802さん、>>803さん、即答有難う御座います、頭が破裂しそうです
が教えていただいた内容が理解出来る様に精進いたしますです。
あー情けなや、やっぱり芯でしまいたいです。。。

805 名前: 投稿日:2001/07/09(月) 02:22 ID:fbWvSC9U
ランダム性について質問させてください。
例えば、100のパターンの分岐をさせたい場合、

-方法1-
srand();
$randam = int(rand(100));

if ($randam == 1){
    $doreka = "1.txt";
}elsif ($randam == 2){
    $doreka = "2.txt";
}elsif ($randam == 3){
    $doreka = "3.txt";

・・・・・・以下elseまでずっと続く・・・。

-方法2-
パターンを20個つづの5グループに分けて、
最初にグループを選んで、次にグループの中で
パターンを選ぶ・・・

この場合、均等にばらけさせるのは方法2のほうなのでしょうか?
また、他にもっと効率よくばらけさせる方法はあるでしょうか?

806 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 03:10 ID:???
>>805
方法1で充分だと思うけど。
ただしifで分けるんじゃなくて、
$dareka = "$random.txt"; とでもしてやれば。
あと、Perl5以降はsrand要りません。

807 名前:S 投稿日:2001/07/09(月) 03:12 ID:???
@doreka_array = qw( 1.txt 2.txt 3.txt ... 100.txt );
$doreka = $doreka_array[int rand @doreka_array];

みたいなのがいちばん簡単なのではないでしょうか。

$MAX = 100;
$doreka = (int(rand $MAX)+1). ".txt";

も、使えるかも。

均等さは1も2も同じだと思います。もともとrandは引数が大きくなれぱ
ランダムじゃなくなりますし、気にすることはないでしょう。

808 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 03:15 ID:???
>>807
でかい配列は作りたくない気もする。

809 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 10:26 ID:8Wkoq3g6
昔、偏りのある乱数を出すスクリプト書いたとき
807と同じ方法を使ったよ。

んでも805の場合は
出力する値が数字.txtとなってて一体感があるから
$num = int( rand((100) ) + 1; #1-100までのランダムな数字がはいる
$dareka = "$num.txt";

でいいんじゃないかな?

810 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 14:49 ID:8Wkoq3g6
perlでメモリの使用量を見るにはどうしたらいいんでしょうか?

811 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 15:16 ID:???
$ENV{'HTTP_REFERER'}
これでREFERERが取れないことが凄く多いんだけど何故でしょうか?
明らかにbookmarkやコピペじゃない場合でも取得できないんですが。
ログ見てると取れる時間帯と取れない時間帯がありそうな気がするんですが。
鯖の状態によって取れたり取れなかったりするもんでしょうか?

812 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 15:18 ID:???
proxy が削っていることもある。

813 名前:811 投稿日:2001/07/09(月) 16:34 ID:???
串刺してなくても取得出来ないことが多いんですよね。
取得できないからといって困るわけではないんですが。

814 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 17:18 ID:8K4xE7OM
チャットにURLを打たせてメッセージの前に「□」をつけてリンクを張ろうとしているのですが
URLとメールアドレスを打っていないとどちらともにリンクを張らず
かたほうにあるとそちらにリンクを張るようにしたいのですが
if ($in{'email'} eq "" & $in{'url'} eq "") { $name = "$pointer □ <b>$in{'name'}</b>"; }
if ($in{'email'} eq "" & $in{'url'} ne "") { $name = "$pointer <a href=\"
http://$in{'url'}\" target='_blank'>□</a> <b>$in{'name'}</b>"; }
if ($in{'email'} ne "" & $in{'url'} eq "") { $name = "<a href=\"mailto:$in{'email'}\">$pointer</a> □ <b>$in{'name'}</b>"; }
↑のようにしてもうまくいきません。
わかる方がいればよろしくお願いします。

815 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 17:36 ID:???
>>814
&ではなく&&。

816 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 17:49 ID:???
>>810
Windowsでは無意味ですが、
環境変数PERL_DEBUG_MSTATSに1か2をセットしてperlを起動するとメモリ統計を表示できます。
Windowsの場合はどうすればいいのかは分かりませんね。

>>814
"&"ではなく"&&" または"and"を使うと幸せになれます。
ついでにif-elsif-elseを使うと更に幸せになれます。

817 名前:816 投稿日:2001/07/09(月) 17:49 ID:???
かぶった…

818 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 18:53 ID:zlMbWq72
>>814
andにしてみたのですがどうもうまくいきません。
if ($in{'email'} ne "" & $in{'url'} eq "")...はうまくいくのですが
それ以外がどうもだめです。

なにか問題があるのでしょうか?

if-elsif-elseの使い方がいまいちわかりません。

よろしくお願いします。

819 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 19:04 ID:???
>>814=818
試しましたが、&&でもandでも問題ないですけど。
まぁオペランドの違いによって優先順位ありますけどね。
つーか、両方とも値が入っていた時の処理してないから問題あるんでないの?
$in{email}と$in{url}の両方に値があったらどうすんのさ。
このままだと何も出ないじゃん。

>if-elsif-else
本でも買って一から勉強したほうがいいと思いますが。

820 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 19:20 ID:???
>if ($in{'email'} ne "" & $in{'url'} eq "")...はうまくいくのですが
&の意味も分からず何を仰っているのですか?(笑)
もしかしてあなたM女史ですか?(笑)

821 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 20:09 ID:???
ネタに一票

822 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 20:26 ID:???
>>814
if ($in{'email'} eq "" && $in{'url'} eq "") { $name = qq($pointer □ <b>$in{'name'}</b>); }
elsif ($in{'email'} eq "" && $in{'url'} ne "") { $name = qq($pointer <a href="http://$in{'url'}" target='_blank'>□</a> <b>$in{'name'}</b>); }
elsif ($in{'email'} ne "" && $in{'url'} eq "") { $name = qq(<a href="mailto:$in{'email'}">$pointer</a> □ <b>$in{'name'}</b>); }
else{両方入っていた場合の処理;}
ホラよ。
わかったら帰れ。
基本を覚えてくるまで帰ってこないでくれよ。

823 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 20:30 ID:???
if-elsif-else で疑問に思ったんだけど、

if ( 条件1 || 条件2 || 条件3 || 条件4 ) { 処理 }

if ( 条件1 ) { 処理 }
elsif ( 条件2 ) { 処理 }
elsif ( 条件3 ) { 処理 }
elsif ( 条件4 ) { 処理 }
else { }

っていうのはどちらが良いんだろう。

824 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 20:40 ID:???
{ 処理 } に修正をするときに、1 回修正すればいいってのと、4 回修正
する必要があるってんじゃ、手間が全然違うだろ?

825 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 21:07 ID:???
>>823
>>824のいうとおり、普通は…というか常識的には前者だろう。

826 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 21:12 ID:???
ふむ、前者の方で良いのか…さんくす。
ちなみに>>823の処理っていうのは全部エラー処理だったり。

827 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 22:20 ID:???
2ch用ブラウザってどれが一番つかいやすいの?
いっぱいあるけどみんなはなにつかってるんだろ?
今からつかってみようとおもうんだけどサ!
あと2ch用ブラウザは2ch型ならどれでも対応してるんですか?

828 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 22:27 ID:???
>>827
tkz6.plにキ・マ・リ

829 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 22:36 ID:???
>>827
ギコタクの「だから逝ってないでしょ」出張所
http://corn.2ch.net/test/read.cgi?bbs=php&key=991966646

830 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/09(月) 23:00 ID:75iCECGw
まだ発展途上みたいだけど、ちょっと期待。

831 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/10(火) 00:21 ID:lYKZ.3Dg
ファイルハンドルについて勉強しています。

Booksというファイルに任意の文章を書き付けておき、それを行で表示するとい
うものなのですが、++$testだけでなぜ一行ずつ加算されていくのか良く分かり
ません。『++』が一つずつ数を増やしていくためのものだというのは分かってい
るのですが、このスクリプトにおいて数を増やすポイントをどのように認識して
いるのか分かりません。

行頭で必ず行数が一つ増えて表示されるわけですが、『++$test』がどのポイン
トで一行増やすという認識をしているのでしょうか?

うーん。質問の仕方がマズいかな・・・。

このスクリプトにおいて、『++$test』はなぜ『行数を一つずつ増やせ』という
命令だと解釈できたのでしょうか?『$test』については行数を代入せよと指定し
ているわけでもないのに・・・。

自分で作っておきながら混乱してしまいました。


#!/usr/bin/perl -w

$file = "./Books";

open IN, "<$file";

while ( $contents = <IN> ) {

chop ($contents);


print ++$test, "行: ", $contents, "\n";

}
close IN;

832 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/10(火) 00:23 ID:???
ひとつのCGI(imgを呼ぶ方式)で
複数のページのアクセスログをとっているのですが、
どのページを見たログかを知るためには
どのような環境変数を使えばいいのでしょうか?

833 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/10(火) 00:51 ID:???
>>831
アフォか?
マトモな本を読め。

>>832
環境変数で検索しろ

834 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/10(火) 00:51 ID:???
>>831
ファイルハンドルと関係ないが?
ただ単にプラス1する演算子。

ちなみに
++$count
$count++
は、ちょっと振る舞いが違う。

835 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/10(火) 01:55 ID:???
>>831
$testはただ単に行数の表示のみ。
$testは何も指定していない。
whileループで順に行を読み込んでいる。

836 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/10(火) 05:25 ID:???
>>832
ssiは使えないの?

837 名前:831 投稿日:2001/07/10(火) 15:42 ID:kZaiDUJU
>>834
>>835
何となく分かって来ました。
書き付けたファイルの全体を読んでいるのではなく、
行ごとに読み込んでいるんですね?

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

838 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/10(火) 15:43 ID:SGYXQF82
D&Dで渡したファイルのファイル名を第一引数として
処理できるようにってなんかうまい事できないでしょうか?

ActivePerlに関連付けた.plファイルだとD&D自体受け付けない・・

839 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/10(火) 16:39 ID:???
なんでD&Dが必要なんだ?
とりあえず$0は知ってるのかしら。

840 名前:838 投稿日:2001/07/10(火) 17:04 ID:SGYXQF82
ローカルで動かす場合です。
Webとは関係ないですけど他に聞く場所見当たらなかったもんで・・
例えばフォルダをD&Dで渡すとそのフォルダのtreeを表示する。みたいな感じのが作りたいんです。

perl c:\myperl\tree.pl %1
pause

みたいなBATファイル作ってそれにD&Dってやるとうまくいくんですが
直でperlに渡せないもんかなと・・

841 名前:838 投稿日:2001/07/10(火) 17:10 ID:SGYXQF82
直でperlに→直でtree.plに です。

842 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/10(火) 17:12 ID:???
>>840-841
このスレの上の方で書かれていたSOSを試してみたら?
あれでCOMファイルにすればD&Dできるとおもうよ。

843 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/10(火) 17:19 ID:???
SOSはいいよ。マジで。

844 名前:838 投稿日:2001/07/10(火) 17:56 ID:SGYXQF82
おお、これD&Dにも対応してたんですね。すご・・
や、一度落としてたんですが「BAT2COMみたいなやつか」と思って
コマンドラインで使わない限り必要ないと思って使ってませんでした。

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

845 名前:805 投稿日:2001/07/10(火) 23:20 ID:???
ランダム性について質問した者です。
>>806さん、>>807さん、>>809さん返答ありがとうございました。
レス送れてすみません。

846 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/11(水) 06:54 ID:???
うをっ
D&Dってドラッグ&ドロップなんだな?
ある意味で新鮮な文字列に感じたぞ

847 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/11(水) 15:42 ID:9cey.Kcg
<job id="test">
<script language=PerlScript>
    use Win32::OLE;

    Win32::OLE->new('WScript.Shell')->Popup('Argument: '. $WScript->Arguments(0),2);
</script>
</job>

これをhoge.wsfファイルにして、何かをD&Dしてみそ。

848 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/11(水) 17:34 ID:???
>>847
それってPerlをインストールしてなくても有効?

849 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/11(水) 17:36 ID:???
dame!

850 名前:848 投稿日:2001/07/11(水) 18:32 ID:???
駄目か…がっくし。
XPにActivePerl標準搭載してくんねぇかなー。

851 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/11(水) 19:07 ID:???
>>848
別に、今の環境に普通にActivePerl入れればいいだけでは?

852 名前:848 投稿日:2001/07/11(水) 20:58 ID:???
いや勿論マイPCには入れてるけどさ、
知人らに送るときPerlのインストールを強制させるとなると…ね。

853 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/11(水) 21:17 ID:???
N$はPerl使うならVBスクリプト使えって言いそうだ…

854 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/11(水) 21:54 ID:tfiGyRpE
JScriptにしとけ。

855 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/11(水) 23:34 ID:???
(―_―)ソウダネ・・・

856 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/12(木) 10:08 ID:L16.sTWQ
WSHのperlscriptちょっと興味あるんだけど
リファレンスみたいのWeb上でない?
探したけど見つからなかった・・

857 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/12(木) 11:14 ID:Dza9cSXY
わしも知りたい。
現状だとMicrosoftのWSHドキュメントから類推するしかないから。

858 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/12(木) 11:55 ID:Dza9cSXY
WSH with PerlScriptだと、日本語が入っていると、
それがコメントとかでも、エラーを誘発することがあるよ。

859 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/13(金) 14:45 ID:7/Tjfp6w
ドキュメントってこれだけ?

http://www.microsoft.com/japan/developer/scripting/windowshost/docs/reference/default.htm

860 名前:_gunzip 投稿日:2001/07/13(金) 16:34 ID:???
PerlScriptとHTAを組み合わせれば、お手軽なGUIとして結構色々出来そうだな........。

-----------
Perlクイックリファレンス(オライリー)の最後辺りに
ほんの少しだけ顔を出していた記憶があるよ。 >PerlScript

Perl & WSH については↓に幾つか例があるぐらいで、確かに資料が少ないね.....。
http://pages.infinit.net/che/perlwsh/perlwsh0.html
http://cwashington.netreach.net/

861 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/13(金) 17:24 ID:7/Tjfp6w
色々な方法があるんですね。
WSHからだと、IEを作成して外からdocument.body.innerHTMLを書き換える
方法があるんだけど、HTAだと直に自分自身をいじれるから面白そうですね。
Drag&Dropはできないみたいですね。

862 名前:_gunzip 投稿日:2001/07/13(金) 18:30 ID:???
>860で書いたPerlクイックリファレンスのは↓でも読めます。(本家は消えていたのでGoogleキャッシュ)
http://www.google.com/search?q=cache:Cxe9arpl5Eg:www.psu.unibel.by/biblio/books/perlnut/ch20_01.htm&hl=ja&lr=lang_en|lang_ja

今思い出したけれど、↓でもPerlScriptを扱っていたよ。(日本語)
http://village.infoweb.ne.jp/~kusaji/contents/perlscript/old/overview.htm

>>861
PerlScript+HTA なら
$window->{ 'element_id' }->{ innerHTML } = "<p>hogehoge</p>";
で動的に書き換えられるよね。他にも大量のプロパティがあるので当分飽きないと思う。
D&D は出来ないのかな...? (ondrop, ondragstart, ondragend とかはあるけれど)

-------------
PerlScript普及のためには、やっぱり分かりやすい(包括的な)リファレンスが必要だな.....。
(・・・と思って以前書いていたのだが、途中で放り出した。(使っている人少なそうだし)
暇があったらなぁ。)

863 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/13(金) 18:32 ID:???
HTAってなんすか?>>_gunzipさん

864 名前:863 投稿日:2001/07/13(金) 18:38 ID:???
っと、HTML Application ですね。失礼

865 名前:http://N72ch-01p110.ppp11.odn.ad.jp 投稿日:2001/07/13(金) 20:57 ID:V4/V4Mao
while (<>) { }

を使わないで同じ処理をできる方法教えてください・・・・

866 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/13(金) 22:30 ID:???
for(;<>;){}

867 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/14(土) 07:29 ID:???
>>865 perl -n SCRIPT INFILE
コマンドラインのみ。

868 名前:通りすがり 投稿日:2001/07/14(土) 09:36 ID:???
各プロバイダのサーバに、perl のどのバージョンが入っているかを
一覧したようなものはどこかにありませんか?

869 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/14(土) 10:19 ID:???
ところで、何で perl スクリプトの拡張子が cgi なんでしょ。

870 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/14(土) 10:26 ID:???
>>869
perlでやる物って言ったらcgiスクリプトくらいしかないからじゃないの?
ネット上でやるものは・・・・
後知らん。

871 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/14(土) 10:35 ID:???
つかperlの拡張子ってplじゃなかったっけ。

872 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/14(土) 10:53 ID:???
拡張子は、人間がわかりやすいようにつけるものなので(少なくともUNIXでは)、
あまりどれにするかどうかは意味がないものと思われ。

拡張子が.cgiでも.plでも.hogeでも、あるいはなくても、最初の1行目の
特殊コメント

#!/usr/bin/perl

がファイル識別の印なのですから。

もっとも、.htaccessのようにファイルの識別に拡張子を使っている例はある
のが難しいところ。

magicというのもあったなぁ。

873 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/14(土) 11:23 ID:???
>>869
Perlスクリプトの拡張子が.cgiなんじゃなくて、CGIの拡張子が.cgi。
.cgi というファイルにアクセスがあったら、WWWサーバがCGIとみなして
それを「実行」させる。

その後は872の言う通り、最初の行が #!/usr/bin/perl なら Perl によって実行されるし、
#!/bin/sh でシェルスクリプトなのかもしれないし、
#!/usr/bin/ruby で Ruby が使われるかもしれないし
あるいはスクリプトじゃなくてCでコンパイルされたバイナリでも、C++でも、
実行可能なファイルで、結果として適切なContent-Typeを返せば何でも良い。

874 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/15(日) 11:20 ID:???
あー、なるほど。
確かに拡張子なんて余り意味無いですからね…いや無いって言ったらアレなんですが。

何はともあれサンクスです。

875 名前:名無しさん@頭いっぱい。 投稿日:2001/07/18(水) 16:10 ID:p4.NpWMw
AccessのデータをWebで扱えるようにしたいので
VBScriptでAspファイルを書いています。
ここでVBScriptとHTMLを分割して、VBを独立させてしまいたいのですが
まずどうすればよろしいでしょうか?

876 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/18(水) 19:06 ID:???

何故「Perl」スレに書くのか不思議だ…。

877 名前:名無しさん@お腹いっぱい 投稿日:2001/07/18(水) 19:13 ID:gsEdjJ4E
今から保存するファイル名と同じファイルがなかったら指定ディレクトリにそのファイル名で保存して、
あったら保存を止めて、そのファイルを表示するというのをしたいのですがどうしたら言いのでしょうか。

878 名前:名無しさん@お腹いっぱい 投稿日:2001/07/18(水) 19:23 ID:f5fW.spo
>>877
ちょっと修正しますです。

今から保存するファイル名と同じファイルがなかったら指定ディレクトリにそのファイル名で保存して、 表示。
あったら保存を止めて、そのファイルを表示するというのをしたいのですがどうしたら言いのでしょうか。

879 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/18(水) 19:36 ID:???
-f "filename"

880 名前:sage 投稿日:2001/07/18(水) 20:52 ID:???
-e "filename"

881 名前:878 投稿日:2001/07/18(水) 23:58 ID:???
CGI質問スレに書いたほうがよかったですかね?

882 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/19(木) 00:08 ID:???
>>881>>880

883 名前:名無しさん@お腹いっぱい 投稿日:2001/07/19(木) 04:28 ID:DofrXLhM
リファレンスとデリファレンスについて勉強しているのですが、参考になるスク
リプトを元に勉強しているわけではなく、参考書を読みながらどういう機能なの
か探っているだけなのでいまいち理解できないでいます。

これはどういう時に使えば良いものなのか、どういう時に使うものなのか教えて
ください。

884 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/19(木) 04:44 ID:???
10の倍数ってどう表すの?

885 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/19(木) 08:20 ID:???
10n

886 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/19(木) 13:58 ID:???
% 10 == 0

887 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/19(木) 16:39 ID:???
>>885
違うぞ。

888 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/19(木) 17:49 ID:???
10n
n=整数

小学生でもわかるやん

889 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/19(木) 19:01 ID:pJLvWZos
∈10Z

890 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/19(木) 19:06 ID:???
>>883
俺はプログラミングPerlを読みつつ色々スクリプトを書いて理解した。
使い方は覚えれば自然と使うようになると思うぞ。

891 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/19(木) 22:32 ID:QQ.KsOwc
>>888
バーカ

892 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 00:47 ID:???
>>883
使うべき時が来れば、って答えになってないか。
でも自分はそんな感じだったんだよね。
ちなみに自分は実際に使うまで理解できませんでした。

893 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 01:26 ID:???
■PC-Success 個人情報流出に対するホームページ
http://whythishappened.tripod.co.jp


流出ログ一覧直リン!
http://members.nbci.com/zmkanamoe/success/PC-Success.cab 3.08MB 約170ファイル
http://members.nbci.com/zmkanamoe/success/eleven-jp.zip 110KB イレブン
http://members.nbci.com/zmkanamoe/success/coconuts.zip 24KB ココナツ
http://members.nbci.com/zmkanamoe/success/SONY.zip 1.55MB ソニー

イレブンはアダルトグッズ購入者

894 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 01:39 ID:???
掲示板のセキュリティーで気をつけないといけないこと
ってなに?
なんかこの前IP表示するとこでIPにタグ使われて
荒らされてたんだけど これは凡ミスなんかな

895 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 01:55 ID:???
>>894
open MAIL "| sendmail -f $maddr";
とかかな。sendmailのオプションは忘れたんで違うかも。

896 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 01:57 ID:???
>>894
何故-Tしない

897 名前:わ、 投稿日:2001/07/20(金) 03:36 ID:O.8zSDuM
age

898 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 07:49 ID:???
>>896
タグと-Tは無関係では…?

899 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 07:58 ID:???
>>898
その前に、俺には894の言ってる意味がわからん。
IPにタグって何よ?

900 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 10:58 ID:???
>>899
サクセスの掲示板荒らしのときも使われてた。
IP取得に$ENV{X_FORWORD_FOR}(だっけ?)かなんかを見てる掲示板の場合、
ローカルプロクシとかでそこになんか突っ込んどく。
それを表示するから、掲示板閲覧者からするとIPにタグが入ってるように見える。

・・・・って感じだったはず。そっち方面には詳しくないんで適当。
訂正は歓迎するけど煽らないでね。

901 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 12:43 ID:???
>>898
$ENV{X_FORWORD_FOR}をそのまま使ってると汚染された文字列という
ことで警告が出るという意味では。

902 名前:898 投稿日:2001/07/20(金) 16:25 ID:???
>>899
丁寧な説明感謝。
素で意味がわからなかったもので。

それを踏まえた上で。
基本的に、私は外部からの入力は全部チェックしてます。
$ENV{HTTP_X_FORWARDED_FOR}であれば、

$ENV{HTTP_X_FORWARDED_FOR} =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)\D*/
and
print "$1.$2.$3.$4";
くらいですかね。

903 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 16:44 ID:???
いっそ表示しなければ良いのでは。。。。

もしものときにログにさえ残しておけばいいんだし。

904 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 22:40 ID:???
>>903
同意
この話題とは直接関系無いが、IPなんて表示させても何の意味も無いと思うのだが…

905 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/20(金) 23:56 ID:???
>>903
同意。IPは表示させないでログるだけでIDを表示すると良いと思われ。

906 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 02:52 ID:???
「ここはIP取ってるんだぞ」って感じの脅しにもならない脅しに使う。
これで嫌がって荒らさないでくれるといいなぁくらいじゃない?

907 名前:名無し募集中。。。 投稿日:2001/07/21(土) 04:33 ID:???
-f "filename"
-e "filename"
ってどういう違いがあるんですか?

908 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 05:02 ID:dTwqWpWY
以下のスクリプトを実行すると、次のようなエラーが出ます。

Use of uninitialized value at ./perl001.pl line 36, <STDIN> chunk 1.

スクリプトは機能するのですが、この表示が気になるので、どこか悪いところが
あるのかご指摘ください。


#!/usr/bin/perl -w

%list = ( "kamata" => "Ohta",
     "yoyogi" => "Shibuya",
     "sugamo" => "Toshima");

print "名前を入力してください: ";
$name = <STDIN>;
chomp($name);
$orig_name = "$name";
$name =~ s/\W.*//;
$name =~ tr/[A-Z]/[a-z]/;

if ( $name =~ /^mona/i ) {

print "OK\n";

} else {

print "Input your password: ";

$secretword = $list{$name};

if ( $secretword eq "" ) {

$secretword = "guest";

}

$word = <STDIN>;
chomp($word);

while ( $word ne "$secretword" ) {

print "It's wrong. Input again: ";

$word = <STDIN>;
chomp($word);

}

}

909 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 06:07 ID:???
>>907
-e ファイルかディレクトリが存在
-f ファイルが存在
「ファイル演算子」で検索かければ他にも(もっと詳しい)説明があるはず

910 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 08:08 ID:04l8oGkY
本当に下らない事訊いて申し訳ないんですが、

@dayname = ('月','火','水','木','金','土','日');

この1行を入れるとエラーになってしまいます。
何がいけないんでしょうか?
ネタじゃないです。マジなんです。素で。。

環境はWin + ANHTTPD + ActivePerlです。
ホントすいません。

911 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 09:01 ID:???
>>910

(,');のどれかが全角になっているのに100カノッサ

912 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 11:13 ID:???
俺は1000カノッサ

913 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 12:11 ID:???
セミコロンが全角に全部

914 名前:910 投稿日:2001/07/21(土) 15:49 ID:P71/r1DM
>>911-913
んなこたぁない

っていうかそういう記述ミス以外になんか理由ないですかね。
何回も手動で書き直したり、他のファイルで試したりもしたんです。
ダブルクオートにしたりしてもだめでした。

もし何かこの書き方以外でミスしにくい書き方があるならどうか教えてください。

つまらない質問なのは申し訳ないです。

915 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 16:02 ID:???
その行を削除した場合エラーは?

$dayname = ('日','月','火','水','木','金','土') [$wday];
これは?

916 名前:910 投稿日:2001/07/21(土) 16:04 ID:P71/r1DM
>>915
回答ありがとうございます。

この行を削除した場合何もエラーは起きず、問題なく作動します。
っていうかスクリプト自体はもうほぼ完成してるんですが、
なぜかこれだけが引っかかって困っております。

ホントいまさらな感じなんですが…

教えていただいたやり方を試してみます。

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

917 名前:910 投稿日:2001/07/21(土) 16:05 ID:P71/r1DM
っと思ったんですけど
あくまで配列に入れたいんですよね。
このやり方だと配列には入りませんよね?

とりあえずやってみます。

918 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 16:08 ID:???
>>914
> @dayname = ('月','火','水','木','金','土','日');
の最後のセミコロンが全角になってるから
> んなこたぁない
が全然信用できないんだけど。

ま、それはともかく、とりあえず use strict; と -w かな。
@dayname = qw(mon tue wed thu fri sat sun);
にしてみるとか。
あと、どんなエラーメッセージが出るのか教えてくれないと、見当違いな指摘しか出せないかも。

919 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 16:13 ID:???
ぐうううああああああああああぁああああぁあぁ!!!!!!!






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

>>918
ありがとうございます。

自分は生きる価値もない男だと悟ったので逝ってきます。







ああ、いまさら。。。。。。

920 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 16:18 ID:???
>>919
ま…初心者には極めて良くあることだし。
とりあえず先輩が「怪しい」と言った事は*徹底的に*確認してみようね♥

921 名前:910 投稿日:2001/07/21(土) 16:21 ID:???
はい。すいませんでした。反省しました。
もう生意気な口利きません。

精進します。

922 名前: 投稿日:2001/07/21(土) 21:15 ID:kAjGF5YA
そぼくな疑問なんですが、無料サーバーに置くスクリプト
って、どのくらいのサイズまでOKなんでしょうか?
2000とか3000行のファイルを置いても動作するのでしょうか?

923 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 21:31 ID:???
数千行でも軽ければかまわんだろうし、
数行でも負荷が高ければ禁止だろうよ。

924 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/21(土) 21:32 ID:???
>>922
そんなもんここで聞いてどうする。その鯖屋に聞けや

925 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/22(日) 09:18 ID:???
PerlでもWindowsプログラミングは出来ますか?

926 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/22(日) 09:36 ID:???
>>925
http://corn.2ch.net/test/read.cgi?bbs=php&key=991966646&ls=100

927 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/22(日) 23:07 ID:???
そろそろ新スレ。

928 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/23(月) 02:19 ID:???
950まではいいんじゃない?

929 名前: 投稿日:2001/07/23(月) 10:23 ID:???
>>910-922

ヒサシブリニワラタヨ

930 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/23(月) 15:58 ID:ONcVkwDw
単にnantoka.pdfを、<a href="nantoka.pdf">nantoka.pdf</a>としてリンクさせると、
たいてい、ブラウザ自身が(プラグインで)そのまま表示されますが、
fuu.cgi?nantoka.pdfという形式のリンクにして、cgiで何か工夫すれば、
pdfをダウンロードできたとおもいます。
その、「cgiで何か工夫」のやり方を、とんと忘れてしまいました。
教えていただけませんでしょうか?

931 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/23(月) 16:58 ID:???
Content-typeを変える。
拡張子を変える。

ネスケとIEじゃ動作が違うよ。

932 名前:931 投稿日:2001/07/23(月) 17:03 ID:???
Perlの話題じゃないな。こちら↓でどうぞ。
http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&ls=50

933 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/23(月) 17:05 ID:e2J6vTUk
すみません、くだらない質問なのですがよろしくお願いします。
Netfirmの相対パスの書き方がわかりません…。
最初からwwwというディレクトリとcgi-binというディレクトリに分かれてますが、
cgi-binからwwwディレクトリの呼び出しがうまくいかないんです。
下図なのですが、
A.cgiから見て0〜9.gifへのパスを、
B.cgiから見てhoge.gifへのパスを、
C.cgiから見てindex.htmlへのパスをそれぞれ教えてください。

|----/www/
|   |
|   +--index.html
|   |
|   +--/image/
|       |
|       +--/gif/
|       |   |
|       |   +--0〜9.gif
|       +--hoge.gif
|
|----/cgi-bin/
    |
    +--/hoge/
    |   |
    |   +--A.cgi
    |   +--A.log
    |
    +--/hoge2/
    |   |
    |   +--B.cgi
    |   +--B.log
    | 
    +--C.cgi
    +--C.log

934 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/23(月) 17:16 ID:???
>>933
複雑だと思うなら絶対パスで指定しろ

935 名前:933 投稿日:2001/07/23(月) 18:05 ID:???
>>934
そこをなんとかお願いします…
プログラム板の方には鼻くそものでしょうがどうか。

936 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/23(月) 18:07 ID:???
>933

Perlの話題では無いと思われ。
結局htmlファイルとして見せるのだからcgi-binの仮想パスを
http://※/cgi-bin/とすると、相対パスは、
「../image/gif/0.gif」のようになる。

それともbinモードでgifを直接出力しているんなら
話はちがうけどね(w

937 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/23(月) 18:25 ID:???
>>936
はい、すみません。perlに行き着く前の話です。
でもここでしか聞けないのです、すみません。
A.cgiはカウンタなのですが、どうしても画像が表示されないんです。

DDDでNetfirmのカウンタの設置がなんたらとありましたが、
うまくいった方はいるのでしょうか。

938 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/23(月) 18:39 ID:???
何だ?
絶対パスを書けない訳でもあるのか?

A.cgi->0-9.gif
相対パス
./../../www/image/gif/0-9.gif
絶対パス
/home/foo/www/image/gif/0-9.gif

あとは自分で考えろ

939 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/24(火) 00:07 ID:3WzxCf.o
use strictしますと
「Global symbol "$no" requires explicit package name at hoge.cgi line 5.」
というのがいっぱい出て、
Execution of nikki.cgi aborted due to compilation errors.
になります。
execution...はわかるのですが、Global symbol...というのはなんなのでしょうか?

940 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/24(火) 00:40 ID:???
>>939
グローバル変数

941 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/24(火) 14:09 ID:???
>>939
補足:変数をmy宣言すればエラーはなくなります。

942 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/24(火) 21:15 ID:???
すいません、教えて下さい。

@a=(
  ['山田太郎','男','19780101'],
  ['田中花子','女','19901122'],
  ['鈴木一郎','男','19850613'],
);

配列 @a に名前、性別、生年月日が入っている場合、
若い順に'田中花子'、'鈴木一郎'、'山田太郎'となるように
並べ替えるには、どうすればよいのでしょうか?
配列の配列をどうやってsortすればいいか判りません。

943 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/24(火) 21:19 ID:???
@b = sort{ $a->[2] <=> $b->[2] } @a;

944 名前:942 投稿日:2001/07/24(火) 23:33 ID:???
>>943
できました。ありがとうございます。

945 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 06:01 ID:Sh3McWYI
hoge と foo ってどんな意味なんすかね?

946 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 06:08 ID:???
foo {間投} くそっ!、ふん!{名} 狛犬{こまいぬ}、唐獅子{からしし}

hoge は ほげ です。

947 名前:946 投稿日:2001/07/25(水) 06:10 ID:???
ほかに、
bah 【発音】bα':、【レベル】7{間投} ばかばかしい!、ばかな!、フフン!、ヘン!、ベーだ
とか
blah 【発音】blα':、【レベル】6{形} 退屈な、つまらない、毒にも薬にもならない{名} ばかげたこと、ナンセンス
とか
fugaとかahoとかunkoとかも使います。

948 名前: 投稿日:2001/07/25(水) 09:08 ID:???
@pair{0} と言う配列の3番目の要素を取り出したいんですが
@pair{0}[3] とかするとエラーになってしまうんです。
むずかしいぃ・・・

949 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 09:27 ID:???
>>948
すさまじいネタだな。
でも考えすぎ。
もっと単純っぽいのにすればいいのに。

950 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 09:37 ID:???
>>948
そいつはちょいと複雑だな
%pair = (0 => [0, 1, 2, 3]);
$value = (@pair{(0)})[0]->[3];
print "$value\n";

尤も俺ならもっと単純な方法を取るがね。
$value = $pair{0}[3];
print "$value\n";

951 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 09:44 ID:???
いや、これでもいいんだな。
$value = @pair{(0)}->[3];

952 名前:948 投稿日:2001/07/25(水) 10:11 ID:???
皆さん即答有難うございます、ネタですかぁ、、、シオシオ(;´Д`)
実は突然慣れない事をまかされてしまって、必死こいてる次第です。
本を買ってきて勉強しますです。。。WEBと漏れの頭じゃ効率悪すぎ

やりたいのはたったこれだけの事なのですが
リスト1(要素数は不定)
"mother","40yo","aidaho"
"father","45yo","newyork"
"dog","1yo","hawaii"
(以下こんな感じで200行程続く)
リスト2
"aidaho","40yo","mother"
"newyork","45yo","father"
"hawaii","1yo","dog"

用は並べ替えたいだけなのです、 はは・・・・
本屋さんに逝って、本買って何故ネタなのか頑張って考えます、
回答有難う御座いました。

953 名前:948 投稿日:2001/07/25(水) 10:15 ID:???
それで、フォームから受け取ったデータを改行で割って配列に入れて
その要素の一つづつをもう一回配列に入れようと思ったのです。
って何言ってるか解らなくなって来た  頭いたい・・・

954 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 13:01 ID:???
>>950

あなたには、新スレ作成の権利と義務が与えられました。速やかに
このスレのPart.6を作成して下さい(藁

955 名前:949 投稿日:2001/07/25(水) 15:57 ID:???
>>948
ネタじゃなかったのか、スマソ。
んじゃマジレスしておく。参考になればどうぞ。
my @a = qw(mother 40 aidaho);
my @b = qw(father 45 newyork);
my @c = qw(dog 1 hawai);
my %pair = (0 => [\@a, \@b, \@c]);

print @{$pair{0}->[0]}->[0]; # mother
print @{$pair{0}->[0]}->[1]; # 40
print @{$pair{0}->[0]}->[2]; # aidaho
print @{$pair{0}->[1]}->[0]; # father
print @{$pair{0}->[1]}->[1]; # 45
print @{$pair{0}->[1]}->[2]; # newyork
print @{$pair{0}->[2]}->[0]; # dog
print @{$pair{0}->[2]}->[1]; # 1
print @{$pair{0}->[2]}->[2]; # hawai

>>950
よろしく(藁

956 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 16:41 ID:LDIFpqRg
[(種類)(tab)(名前)]というフォーマットのデータを
種類と名前で分けて、それぞれ変数に入れたいのですが
うまくいきません。

neko giko
・・・というデータを使ってやってみました。

$data = "neko giko";
$data = s/(\S+) (\S+)/$syurui,$namae/;
print "$syurui\n";
print "$namae\n";
exit;

結果は何も表示されません。どなたかおしえてください。

957 名前:956 投稿日:2001/07/25(水) 16:44 ID:LDIFpqRg
956です。
[(種類)(tab)(名前)]というフォーマットのデータを・・・
↑の部分わかり難いですが[(種類)(TAB)(名前)]という表示です。

958 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 16:52 ID:???
>>956
$data = "neko giko";
($syurui, $namae) = split /\t/, $data;

959 名前:956 投稿日:2001/07/25(水) 21:55 ID:KeUxvh6I
>>957さん、ありがとうございました。
\tを\sにしたら、うまく動きました。

960 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 23:37 ID:???
自分にお礼か。

961 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 23:39 ID:???
新スレ係は誰かな〜

962 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/25(水) 23:47 ID:???
>>961
シンスレ係に任命

963 名前:956 投稿日:2001/07/25(水) 23:53 ID:???
しまった・・・。申しわけないっす。
>>958さん、ありがとうございました。

964 名前:名無しさん@お腹いっぱい。 投稿日:2001/07/26(木) 00:11 ID:HJVdQqzU
>>946-947
なるほど。これでスッキリしました。
サンクス

965 名前:undefさん 投稿日:2001/07/26(木) 00:41 ID:???
新スレ作りました。
http://corn.2ch.net/test/read.cgi?bbs=php&key=996075607&ls=50

966 名前:950 投稿日:2001/08/06(月) 02:11 ID:???
む、折角新スレ係に任命されたのにあのあと暫く繋がなかったからな…。
惜しいことをしてしまったかな(藁

967 名前:名無しさん@お腹いっぱい。 投稿日:2001/08/17(金) 22:15 ID:???
アターマいいね





dat2html ver0.00 (2001/10/24)
2ちゃんねるは、ここのサーバを使ってるです。。。