トップページ⇒php
1001コメント371KB

Perlコーディング初心者質問スレ Part 43

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/08/12(金) 01:26:47ID:mHnZWvqz
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0614nobodyさん2005/09/28(水) 00:14:48ID:???
lib-www-perl すごいプロレス団体でつね。
0615nobodyさん2005/09/28(水) 00:46:08ID:???
解決しました。

よくわかりませんが、
$sql =~ s/(\\|\'|\\%|\,)/\\$1/g;
にすることによって解決しました。

お騒がせしました。
0616nobodyさん2005/09/28(水) 00:47:05ID:???
Larry Wall Prowrestling
0617nobodyさん2005/09/28(水) 01:02:47ID:MTwQib0M
Perlで数学的な演算をやろうと思っているのですが、
15桁(1÷3の場合は小数第14位)までしか計算出来ないようです。

例えば、1 / 3 を計算すると、
0.33333333333333 となってしまいます。


例えば、1 / 3 の結果を 100桁で出力させたい場合は、
小数第5000位で割り切れる割り算の答えを正確に (= 小数弟5000位まで) 出力したい場合には
どのようなコードにすれば良いでしょうか?

ご教示お願いします。
0618nobodyさん2005/09/28(水) 01:03:41ID:???
誤) 例えば、1 / 3 の結果を 100桁で出力させたい場合は、
正) 例えば、1 / 3 の結果を 100桁で出力させたい場合や、


間違えました。申し訳ありません。
0619nobodyさん2005/09/28(水) 01:34:06ID:???
>>617

Math::BigFloat
0620nobodyさん2005/09/28(水) 08:23:08ID:???
>>617
use bignum;

bignum->div_scale(100);
my $x = 1.0;
print $x/3, "\n";

bignum->div_scale(5000);
my $y = 1.0;
print $y/7, "\n";
06216172005/09/28(水) 17:07:26ID:???
>>619-620
ご教示ありがとうございます。
実際にやってみたら正常に動作しました。

div_scale(); で無限に計算を続けるようになるとおもったら
数百桁までしか計算されていないようなので、
div_scale(1000000000000000000) みたいに馬鹿でかい数をいれたら
期待通りに動作しました。
0622nobodyさん2005/09/29(木) 09:36:51ID:???
 <html>
 <head><title>test</title></head>
 <body>test</body>
 </html>
上のようなHTMLファイルを読み込んで、
gzip圧縮してブラウザにかえすCGIを作っています。

gzip圧縮する部分はネットの記事を参考に出来たのですが
HTMLを読み込んでCGIに出力させるにはどうすればよいでしょうか。
0623nobodyさん2005/09/29(木) 09:53:31ID:???
>>622
そういうことしたいときは、mod_gzip ってものを使うんですが。
0624nobodyさん2005/09/29(木) 10:05:50ID:???
>>622
質問の意味がよく分からんが、

print <<END;

<html>
<head><title>test</title></head>
<body>test</body>
</html>
END

でいいのでは?
0625nobodyさん2005/09/29(木) 10:16:37ID:???
sub fuck {
local $/;
open(F, "fuckyou.html") || die "why don't you fuck?"
my $buf = <F>;
close(F);
return $buf;
}

こーゆーことをしたいとかじゃなくて?
こんな基本すら書けない人間が gzip とか言ってるのってありえんとおもた。
0626nobodyさん2005/09/29(木) 10:26:27ID:???
>>625
http の レスポンスヘッダを返さないと。

>>622
print "\n", `cat hoge.html`;
0627nobodyさん2005/09/29(木) 10:27:10ID:???
>>626
IIS な鯖だったら cat できんわけだが。
0628nobodyさん2005/09/29(木) 13:45:10ID:???
#!/usr/local/bin/perl

use CGI
cgi = new CGI

(formの値をどうたらこうたら)

(メイン演算)



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

print "<html>\n";

(演算結果をprint)

print "</html>";


という感じのPerlのCGIがたくさんあるのですが、
一つだけHTMLソースがベタ書きで出てしまいます。
Win IE ではちゃんと見えるのですが、Mozilla でソース丸見えです。
他も同じように作ってるつもりなのに、なぜこれだけ失敗するのかわかりません。
何か勘所ありましたらお教えくださいませ。 よろしくお願いします。
0629nobodyさん2005/09/29(木) 13:59:24ID:???
>>628
たくさん cgi ファイルがある設計がどうかしていると思われ。
0630nobodyさん2005/09/29(木) 14:05:41ID:???
>>629  ? なんで?
演算ごとに作っておいた方がラク。
0631nobodyさん2005/09/29(木) 14:09:41ID:???
>>628
問題が再現する最小のソースを書くべし。
0632nobodyさん2005/09/29(木) 14:11:47ID:???
>>628
ソースって中濃?とんかつ?
どのソースが見えてる?
0633nobodyさん2005/09/29(木) 14:13:15ID:???
>>630
何をもってラクとするかだよね。
MVC フレームワークとか勉強してみてください。
0634nobodyさん2005/09/29(木) 14:20:46ID:???
>>628
HTMLがテキストで見えるのなら、Content-typeが上手く出力されてないと思われ。
出力されてるヘッダを確認。
0635nobodyさん2005/09/29(木) 14:21:56ID:???
ヘッダって何ですか?とか聞かれる悪寒。
その次に、確認方法きぼんぬ。とかね。
0636nobodyさん2005/09/29(木) 14:49:09ID:???
>>635
perlをローカルにインスコしてるなら、lwp-requestコマンドが使えるので、コマンドラインから
lwp-request -e -d http://example.net/
という感じでアクセス。
0637nobodyさん2005/09/29(木) 14:50:07ID:???
>>634 ちゃんと text/html と思われているもようでつ。
演算部分をカットしても表示変わらず。 
もっかいよく見てみます  どうもありがとうございました。
0638nobodyさん2005/09/29(木) 15:14:00ID:???
こういうのを見てると、どーかんがえても何らかのフレームワークに乗ったほうが楽だね。
0639nobodyさん2005/09/29(木) 19:45:41ID:???
だから、みんなPHPに流れたのかも。
0640nobodyさん2005/09/29(木) 20:02:55ID:???
PHPやだ、Perlが良い!
0641nobodyさん2005/09/29(木) 20:33:30ID:???
「みんな」流れたことにしたいのでつか?
p2 とか見てると、芸術的なすぱげっちーだし、

> たくさん cgi ファイルがある設計がどうかしていると思われ。

って感じだしなぁ。
06426392005/09/29(木) 21:56:36ID:???
>>641
ほらほら、いちいち噛み付かない。

「みんな」ってのは、「ダメなやつはみんな」という意味だ。
そう書けば満足かな?

もっとも、新規にダメなやつが参入してくるから、あんまり
状況は変わってないが。

> たくさん cgi ファイルがある設計がどうかしていると思われ。

うん。一つ一つは正しそうに動くのに、全体を流すとつじつまが
あわなかったりしてね。まあ、きちんと管理できるなら、小分けに
したほうがいいという考えもありだとは思うけど。
0643nobodyさん2005/09/29(木) 22:00:27ID:???
>うん。一つ一つは正しそうに動くのに、全体を流すとつじつまが
あわなかったりしてね。まあ、きちんと管理できるなら、小分けに
したほうがいいという考えもありだとは思うけど。

テキストエディターのスクロールバーがちっこくなって、
編集時のスクロールでドラッグしにくいので、
用途や動作内容に分けて分割してる。
0644nobodyさん2005/09/30(金) 00:31:42ID:???
ファイルをオープンしようとすると、ファイルがある・またはファイルを作ろうとしているのに何故かNo such file or directoryが出てくるので
手前で$!を見てみたところ、Bad file descriptorと出てきて、その原因が分からなくて困っています。

Bad file descriptorはどんな状態のときに出るのでしょうか。
色々試したところ、 require 'hoge.pl'; (hoge.plは自前のもの)を削ると上記のエラーが出なくなるのですが、
hoge.plの中身を削って行ってもエラーが消えません。
requireに制限でもあるのでしょうか。

http://e-words.jp/w/E38395E382A1E382A4E383ABE38387E382A3E382B9E382AFE383AAE38397E382BF.html
これを見てもどこで何が起こっているのか見当が付きません。よろしくお願いします。
0645nobodyさん2005/09/30(金) 00:54:07ID:EO7sC93p
PDFのファイルの印刷をActivePerlから行いたいのですが、どのように行えば良いのでしょうか?
06466442005/09/30(金) 01:20:52ID:???
No such file or directoryについては解決しました。Bad file descriptorは関係ありませんでした。
しかしBad file descriptorが出たままなので気味が悪いです。一体何が問題なのでしょうか。
0647nobodyさん2005/09/30(金) 03:16:19ID:???
携帯に対応させる為のPerlコーディングは、
一般的にどのようなコーディング方法がありますか?
0648nobodyさん2005/09/30(金) 03:56:57ID:???
優勝記念マジレス
>>647
携帯でPerlを動かすのは聞いたことがないのでCGI用途とすると、
スクリプトはサーバ側の環境に依存するから自由にコーディングできる。
あとは問題なるかも知れないHTTP(リクエスト/レスポンス)ヘッダと問題になりそうなキャリア特有のhtml(chtmlとかhdml)。
前者はPerlに限ったことじゃないし、後者は板が違うね。
0649nobodyさん2005/09/30(金) 08:41:28ID:???
>>642
> ほらほら、いちいち噛み付かない。

>>641 を噛み付ついている状態であるとみなしているくせに、
どーして、そんな噛み付いているやつに、噛み付くのだろう。

> うん。一つ一つは正しそうに動くのに、全体を流すとつじつまが
> あわなかったりしてね。まあ、きちんと管理できるなら、小分けに
> したほうがいいという考えもありだとは思うけど。

ちゃんとした設計してれば、「小分け」の状態が良いと思われ。

>>648
> 優勝記念マジレス

板が違うね。
06506472005/09/30(金) 10:13:27ID:???
ありがとうございました。
0651nobodyさん2005/09/30(金) 10:18:00ID:???
真面目につっこむと

理想的に「小分け」された状態ってのは
「cgi」がたくさん小分けに作られるという意味ではないよね?
0652nobodyさん2005/09/30(金) 14:09:04ID:???
テラワロス
0653nobodyさん2005/09/30(金) 14:54:58ID:???
>>651
フレームワーク厨が暴れる前の発言では、

小分け == cgi たくさん

が成り立ってるっぽいので、何とも言えないのでは?
0654nobodyさん2005/09/30(金) 15:29:51ID:???
>>653
いやいや、>>651は>>649への突っこみと読むべきだろう。
0655nobodyさん2005/09/30(金) 17:05:31ID:kGP+cAoI
>>649
いちいち噛み付かない。
0656nobodyさん2005/09/30(金) 17:12:02ID:???
>>651
ちゃんとした設計をしているなんて前提条件なかったじゃん。
後出しジャンケンっぽくて、ちょっとイヤーンだぞ。

そもそも、

> ちゃんとした設計してれば、

という前置きがつけば、何でも正当化できる。

『ちゃんとした設計をしていれば、○○の状態がよい』は、
無敵であるがゆえに、何も語っていないのと同じ。
0657nobodyさん2005/09/30(金) 20:15:08ID:???
> 無敵であるがゆえに、何も語っていないのと同じ。

異なる性質のものを同じにしたいのですか?
0658nobodyさん2005/09/30(金) 20:19:04ID:???
> > ちゃんとした設計してれば、
>
> という前置きがつけば、何でも正当化できる。

ほう、何でも正当化できるんですか。それはすごい言葉ですね。
今回の小泉タン違憲問題も「ちゃんとした設計してれば、」をつけて
正当化の程よろしくおながいします。
0659nobodyさん2005/09/30(金) 20:37:17ID:???
藻前ら共食いやめろ。
0660nobodyさん2005/09/30(金) 20:42:25ID:ue8bjOg5
ここは話題を逸らしてどれだけ釣れるかを競うスレですね
0661nobodyさん2005/09/30(金) 21:04:35ID:???
> Perlのコーディングで困ってる人のスレです。
0662nobodyさん2005/09/30(金) 22:49:26ID:???
面白い話があるからおまいら聞いてくれ。

彼女が医療関係の学校に通ってるんだが、実習か何かで精神
障害者の施設へ行ったそうなんだ。それが終わって会った時に、
単なる会話として「大変だった?」とか訊いてたら、「あなたと同じ
本を読んでる患者がいた」って言うんだよ。隠してあったエロ本が
見つかったのかと動揺してたら、「あれだよ、表紙に動物の絵が
書いてあるコンピュータの」って言うから、オライリーのを順番に
見せていったら「それそれ! ラクダのやつ」だって。

施設の人が言うには、その患者は絶対にその本を手放さないし、
取り上げると錯乱するからずっと持たせてあるんだってさ。
0663nobodyさん2005/09/30(金) 23:10:31ID:???
で?
0664nobodyさん2005/09/30(金) 23:23:25ID:???
ラクダ本がどうかしたか?
0665nobodyさん2005/09/30(金) 23:43:37ID:???
他スレの終わったネタを持ち込むなよ。
0666nobodyさん2005/10/01(土) 00:06:13ID:tjNKkKzJ
perl でCGIに挑戦中の者です。
何日考えても歯が立たない問題にぶち当たったので、詳しい人の知識をお借りしたいです!!

私がやりたいことは、textファイルのある一行を、別のデータで上書きするということをしたいです。
現在、削除する行を探すためにforeachを使っています。

私の望むイメージはこのような感じです。
-------aaaa.txtのファイル------
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
-------------------------
↑を
---------------------------
あいうえお
かきくけこ
さしすせそ
なにぬねの
------------------------

削除したい行を特定する部分は自分でなんとかできたのですが、肝心の削除方法が理解不足でどのようにすればいいのか分かりません。
ご教授お願いします。
0667nobodyさん2005/10/01(土) 00:10:24ID:tjNKkKzJ
何を言ってるのか良くわかんなくなってました。ごめんなさい。

私が知りたいのは、削除するためにはどのようにすればいいのか、です。
0668nobodyさん2005/10/01(土) 00:18:13ID:???
こう考えよう。

・今あるデータを配列に読み込む
・新しく作るデータを入れる配列を用意する
・消したい行だけを新しい配列に入れない
・新しい配列をファイルに書き込む
0669nobodyさん2005/10/01(土) 00:25:11ID:???
この際だから書いちまうか

open (TXT, "<aaaa.txt");
flock (TXT, 1);
@data = <TXT>;
close TXT;
@new = ();
foreach (@data) {
 if ($_ ne "たちつてと\n") {
  push (@new, $_);
  }
 }
open (TXT, ">aaaa.txt");
flock (TXT, 2);
print TXT @new;
close TXT;
0670nobodyさん2005/10/01(土) 00:36:22ID:???
文字の置き換えについて教えてください!

$okikae =~ s/文字/変更後の文字/g;

までは分かりましたが、
チルダやスラッシュを含む文字を置き換えるときはどうすればよいのでしょうか?
例として/~id/aaa/aaa/を/bbb/に置き換えるには??
教えてください。
0671nobodyさん2005/10/01(土) 00:44:17ID:???
メタ文字
エスケープ
などの言葉で検索すると幸せになれるかもしれない
0672nobodyさん2005/10/01(土) 07:28:28ID:???
> 幸せになれるかもしれない

なんてどこの老人が使い始めた言葉なのか知らないけど、
見るたびに気持悪くなる・・・。
0673nobodyさん2005/10/01(土) 08:58:47ID:???
うぐぅ、ぎもじわるぃ…
0674nobodyさん2005/10/01(土) 10:35:57ID:???
幸せになれるかもしれないとか見るたびに気持ち悪いとか言い出したのは誰なのかしら
0675nobodyさん2005/10/01(土) 11:27:36ID:???
>>672->>674

>>660
0676nobodyさん2005/10/01(土) 12:54:48ID:???
m9プギャ
0677nobodyさん2005/10/01(土) 14:07:37ID:3dTdip7r
MIMEについての質問です。

以下のようにMIMEを使ってメールを受信して本文を取得するプログラムを作っています。

#!/usr/bin/perl

use File::Basename;
use MIME::Parser;


my $parser = MIME::Parser->new;


#ファイルの一時保存場所を指定
$parser->output_dir('/tmp');


#標準入力からメールを取得
my $entity = $parser->parse(\*STDIN);
my $body_entity = ($entity->is_multipart) ? $entity->parts(0) : $entity;
my $body = $body_entity->bodyhandle;

open(FILE, ">> /log");
print FILE "Test\n";
print FILE $body->as_string."\n";
close(FILE);

ですが、何故か$body->as_stringの時点で本文が拾えず空文字列になります。
ちなみにheadなどのメソッドや、ファイル添付時のis_multipart、partsなどは正常な値を返します。

どういった理由が考えられるのでしょうか?
0678nobodyさん2005/10/01(土) 14:34:03ID:???
MIME::Explode とかが使いやすかった気がするけど。
0679nobodyさん2005/10/01(土) 23:13:02ID:???
>>646
遅レスだが、$!(errno)はシステムコールやライブラリ呼び出しが
失敗したときは値がそれに応じて設定されるけど、成功したときは
未定義なので、何になっているかはわからない。

perldoc perlvarの$!の説明をよく嫁。

0680nobodyさん2005/10/02(日) 04:48:22ID:???
すみません。
http://internet.watch.impress.co.jp/www/article/1999/1122/special.htm
でフォームからメールがおくれたのですが、確認画面を表示させたいのですが、
どのように書いていけばよいのでしょうか。
よろしくお願いします。
0681nobodyさん2005/10/02(日) 09:19:04ID:???
どのようにって・・・
まさか手取り足取り一から十まで順を追って説明しろなんて
ふざけた要求してるわけじゃないよな?

ここの説明を参考にやったんなら、
確認画面の表示の有るフォームメールcgiをいくつかダウンロードして
スクリプトを眺めてみればいいんじゃない?
0682nobodyさん2005/10/02(日) 10:23:03ID:???
スカラーコンテキストの演算子に
文字列の一部を正規表現でキャプチャし一発で渡したい時にはどうすればいいでしょうか?
一応 op ${\("STR" =~ /REGEX/g)}; でできるのですが冗長ですよね。
0683nobodyさん2005/10/02(日) 11:42:59ID:???
>>682
そういうのは一行で書く必然性が無ければ
二行に分けた方が読み解き易く美しい。

"STR" =~ /(REGEX)/;
op $1;

> ${\("STR" =~ /REGEX/g)};
REGEX にマッチした部分文字列の*リスト*を返した上で
無理矢理一つだけを利用しているのが無駄と混乱を招く。
どうしても /g を使いたければ

op +("STR" =~ /REGEX/g)[0];

とでもした方がいいだろう。
0684nobodyさん2005/10/02(日) 11:53:28ID:???
>>682
おそらく /g を付けているのは問題回避のためだろうから、
値1つを取れればいいなら

op +("STR" =~ /REGEX/)[0];
06856822005/10/02(日) 12:38:08ID:???
>>683 >>684
ありがとうございます。確認しました。
/gはラクダ本(日3版175P)に「リストコンテキストでm//gを使って…」とあったので両方必須なのだと勘違いしていました。
実際のコーディングは2文でやってみようと思います。
0686nobodyさん2005/10/02(日) 14:19:35ID:???
URLでよくtest.pl?line=ABC&line2=DEF
みたいに引数を渡す場合がありますがコマンドラインからこのような
引数を渡すにはどうしたらよいでしょうか?
#>perl test.pl 「ここの部分?」
0687nobodyさん2005/10/02(日) 14:35:59ID:???
perl test.pl line=ABC line2=DEF

値は @ARGV に入る。
06886862005/10/02(日) 15:14:12ID:???
>>687
サンクス。
if($#ARGV >= 0){ $buffer = join'&',@ARGV; }
デコードに付け加えて何とかなりますた。
0689nobodyさん2005/10/02(日) 15:16:12ID:???
>>688
if ($#ARGV >= 0)
より
if (@ARGV)
の方が好き。
06906862005/10/02(日) 15:19:46ID:???
>>689
アチャー。確かにそちらの方がいいですね。何か遠回りしてる漏れ。
0691nobodyさん2005/10/02(日) 16:49:19ID:???
if (scalar @ARGV) って書いちゃうなあ。
0692nobodyさん2005/10/02(日) 17:19:24ID:???
そもそも直で値を代入してしまう。
0693ヽ(´ー`)ノ ◆.ogCuANUcE 2005/10/02(日) 17:35:02ID:???
if 文使わなくても $buffer = join('&', @ARGV); だけで良くね?
@ARGV が空リストなら $buffer は空文字になるわけだし。

使うんなら $buffer = join('&', @ARGV) if @ARGV; かな。
0694nobodyさん2005/10/02(日) 17:51:48ID:???
前やったベンチでは@ARRAYより$#ARRAYの方が速かった
06956802005/10/03(月) 01:39:26ID:???
>>681さん、あれから自分でやってみてできました。
別に確認画面を作成してそのでーたをメールを送るCGIに渡すようにしました。
ありがとうございました。
0696もな2005/10/03(月) 02:21:03ID:???
掲示板をいちから作っているのですが、どうしてもdatファイルに文字を書き込めません。
書き込みボタンを押すとエラーが出るわけでもなく画面が遷移して、また再表示というふうにはなるのですが・・・。
どうかご教授願います。datファイルには何も書き込まれていない状態です・・

以下ソースです↓

#!/usr/bin/perl

require 'cgi-lib.pl';
&print_header(); #ヘッダを表示する

if(open(CHK,"bbs.dat")){
if(&get_data == 0){
if ($name eq '') {
&show_error('名前が記入されていません');
} elsif ($title eq '') {
&show_error('タイトルが記入されていません');
} elsif ($message eq '') {
&show_error('内容が記入されていません');
}
&write_to_file();
}
&read_file(); #ファイルからデータを読み出してリストに格納
&print_top(); #トップを表示する
}else{
&show_error('データファイルがオープンできません');
}

続く
0697もな2005/10/03(月) 02:22:02ID:???
sub print_header(){
$haikei_img ="back.jpg"; #背景画像の指定
print "Content-type: text/html\n\n";
print "<META HTTP-EQUIV=Content-Type CONTENT=\"text/html;CHARSET=Shit_JIS\">";
print "<html>\n";
print "<head><title>Simple BBS</title></head>\n";
print "<body style=\"background-image : url($haikei_img);background-repeat : no-repeat;background-attachment : fixed;\" text=#000000>\n";
}

sub print_top(){
print "<center<table width=600><tr><td>\n";
print "<br><br><center><h2>掲示板</h2>\n";
print "<hr> [ <a href=http://www.yahoo.co.jp>;Back To Homepage</a> ] <hr></center>\n";
print "<form method=post action=\"bbs1.cgi\">\n" ;
print "<table border=0>\n" ;
print "<tr><td align=right>名前 :</td><td><input type=text size=20 name=name></td></tr>\n" ;
print "<tr><td align=right>E-mail:</td><td><input type=text size=40 name=mail></td></tr>\n" ;
print "<tr><td align=right>URL :</td><td><input type=text size=40 value=http:// name=url></td></tr>\n" ;
print "<tr><td align=right>タイトル:</td><td><input type=text size=40 name=title></td></tr>\n" ;
print "<tr><td align=right>内容 :</td><td><textarea cols=50 rows=5 wrap=hard name=message></textarea></td></tr>\n" ;
print "<tr><td colspan=2 nowrap align=right><input type=submit value=送信><input type=reset value=書き直し></td></tr>\n" ;
print "</table>\n" ;
print "</form>\n" ;
}
0698もな2005/10/03(月) 02:23:21ID:???
sub get_data{
&ReadParse(*FORM_DATA);
if($FORM_DATA{'action'} eq 'reqist') {
&get_time(); #時刻の取得
$name = $FORM_DATA{'name'};
$message = $FORM_DATA{'message'};
$title = $FORM_DATA{'title'};
$mail = $FORM_DATA{'mail'};
$url = $FORM_DATA{'url'};
$action = $FORM_DATA{'action'};

    return 0;
}else{
return 1;
}

}

#========================================================
# 日付の取得と整形
#========================================================
sub get_time(){
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime;
@weekday = ('日','月','火','水','木','金','土');
$week=$weekday[$wday];
$mon++;
$year = 1900+$year;
$date="$year年$mon月$mday日($week) $hour時 $min分 $sec秒";
}


0699もな2005/10/03(月) 02:24:43ID:???
sub write_to_file(){
open(WRITE,">>bbs.dat");
print WRITE"$name\t$mail\t$url\t$date\t$title\t$message\n";
close(WRITE);
}
sub read_file(){
open(READ,"bbs.dat");
@data_set = <READ>;
close(READ);
}
sub show_error(){
print "<h2>エラー発生</h2><hr><br>";
print "エラー内容: $_[0]";
print "<br>WebブラウザのBackボタンで戻ってください";
exit();
}
_END_
0700もな2005/10/03(月) 02:25:24ID:???
以上ですm(__)m
0701nobodyさん2005/10/03(月) 02:34:33ID:???
まるまる張るんだったらどこかにうpしる。
0702nobodyさん2005/10/03(月) 02:46:02ID:hN7oOpvn
perlのバージョンが3以下なんじゃないの???
それだとオブジェクト指向サポートしてないから書き込めないよ
0703nobodyさん2005/10/03(月) 02:51:30ID:???
ヒント:オープンモード
0704もな2005/10/03(月) 02:51:39ID:???
ttp://www.error.to/~marty/ss2_bbs/ss2_bbs_img/8_1.txt

です。おねがいしますm(__)m
0705nobodyさん2005/10/03(月) 02:51:47ID:???
>>698
> if($FORM_DATA{'action'} eq 'reqist') {
                    ↑
0706もな2005/10/03(月) 03:04:26ID:???
>>703

オープンモードですか?
+>や>>などですか。調べてみましたが、もはやどうにも;;


>>705

初歩的なミスですね、ありがとうございます。

その部分を registと書き直しましたが
改善しません。
0707nobodyさん2005/10/03(月) 03:33:27ID:???
>>704
入力画面の表示の部分に
<input type="hidden" name="action" value="request">
が抜けている。

そしてなにより、@data_setにいれたログを表示する部分が、ない。
0708もな2005/10/03(月) 03:44:44ID:???

>入力画面の表示の部分に
><input type="hidden" name="action" value="request">
>が抜けている。

今自分で発見しました。ごもっともです・・・。これが原因でした。

>そしてなにより、@data_setにいれたログを表示する部分が、ない。
これはこれから実装予定です。
いまはとりあえずbbs.datに書き込めればいいので。

ありがとうございましたm(__)m
0709nobodyさん2005/10/03(月) 05:25:36ID:AwkrNdbs
神様、お願いします。
CGIの改造を考えていますが、この内容が素人に出来そうでしょうか?
パールの解説のHPを見つけたのと、大昔、BASICをやっていました。

「掲示板に親記事を投稿した人間以外にレスを付けれなくする。」
1、親記事の入力フォームに記事ロックの選択肢を追加。ログデータに
この項目を追加。
2、ロックマーク表示。
3、レス投稿時に親記事番号のログデータを読み込んで、ロックであれ
ばパスワード判定。パスワードは投稿時の物を使用、判定はそのサブル
ーチン流用。
4、エラー処理。(サブルーチンから流用)。
0710nobodyさん2005/10/03(月) 05:36:42ID:???
根性があればできんじゃない?
0711nobodyさん2005/10/03(月) 05:40:27ID:???
>>709
既存のスクリプトは読めてるみたいだしいけると思うよ
0712nobodyさん2005/10/03(月) 18:47:13ID:???
>>710-711
神キター
07137092005/10/03(月) 22:58:15ID:y4rbqtg0
ありがとうございます。頑張ってみます。

ログファイルの読み込み、書き込みが強敵です。なにせ、BASICには無い
概念なので。あとは、他の部分からの流用、小改造でなんとかなりそうなんで
すが。
■ このスレッドは過去ログ倉庫に格納されています