トップページperl
981コメント266KB

CGIだけど、なんか質問ある?

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさんNGNG

print "くだらねぇー質問はココから始めろ!";
0102ほれNGNG
s/こんにちは/こにゃにゃちわー/g
0103名無しさんNGNG
s/バカ氏ね/アホちゃうかぁ/g
0104名無しさんNGNG
s/マック/マクド/g
0105教えて君NGNG
CGIで生成されるページに
<!--#include virtual=""-->
みたいな感じでSSIを組み込みたいのですが、
どうしたら良いのでしょうか?

板違いでしたらすみません
0106名無しさんNGNG
CGI叩いた時点で制御がhttpdから離れてるから無理なのでは?
0107コピぺ君NGNG
>105 >>15 >>17 辺りかな?
0108なぜ?NGNG
いままで動いていたkentさんの掲示板を
あたらしいサーバーに移したら動かなくなりました
パーミッションや転送モードは間違えていません
telnetでエラーメッセージを見ると
jcode.plの途中の行でひっかかっているようなのですが
/\216([\241-\337])(\216([\336\337]))?/: unmatched () in regexp at ./jcode.pl lin
このようなエラーがでてしまいます
どうすればいいのでしょうか?
ちなみに新しいサーバーはperlでなくjperlが使われているみたいです

0109なぜ?NGNG
↑エラーメッセージ最後の部分は line643 です
0110名無しさんNGNG
移転先が英語版perlだったのと見た >>108
0111<BR>NGNG
実行すると…<P></P>が入ってしまいます。
検索しても<P></P>見当たらないのですが…
0112名無しさんNGNG
あんた誰? >>111
108の続き? もう訳わからん。
0113111@<BR>NGNG
It's new です
0114名無しさんNGNG
FORMで引数をとってそれをリンクの一部に組み込みたいんですが
どうやればいいでしょうか。それだけ出来ればいいのですが…。
0115なぜ?NGNG
>>110
いえ たぶん移転先がjperlなんです、、、
どなたか>>108の原因わかりませんでしょうか?

あ 111は自分とは関係ないです
0116名無しさんNGNG
>115=108
"-b"オプションが使えるjperlなら、先頭のパス指定で
#!/usr/bin/perl -b
と書くと英語版perlと互換モードになるから試してみよう
0117なぜ?NGNG
>>116さん
できました! ありがとうございました
やはりjperlがいけなかったみたいです。。。
-bをつけたら掲示板が使えるようになりました
大感謝です。
0118名無しさんNGNG
>114
($name,$link) = split(/=/,$org);

print <<"EOF";
<a href="$link">xxx</a>
EOF

適当。
0119755?NGNG
【質問】
***.cgiファイルをダウンロードされない方法はないでしょうか?
  メhttp://www.xx.***.cgiを「名前を付けて保存」とかで...
0120名無しさんNGNG
↑板違いだろ
01211NGNG
チャット入室お知らせメールの方法。
おしえて。
0122121NGNG
さっさと教えろやこら。
0123名無しさんNGNG
やっぱりあほだ
0124名無しさんNGNG
ちょっと思いつきなんだけど、
sendmailのvacation.msgをCGIで書き換えるようにして、
アクティブな自動返答システムを作れないかなぁ?だめ?
0125名無しさんNGNG
【質問】
ファイル名がindex.htmlでも実行できるでしょうか?
0126名無しさんNGNG
>125
??
CGIスクリプトのファイル名がindex.htmlだとダメですよ。
ディレクトリリストの参照が気になるなら同じ階層にダミーのindex.htmlを置くかしましょう。
0127125NGNG
>126 どーもです。ここは../index2.htmlですよね??
 どうやってるんでしょうか?
0128名無しさんNGNG
125は掲示板のフォームも全て拡張子.cgiでないといけないと思っているドキュン。
0129>>125=127NGNG
.htaccess 置いてCGIしか置けないディレクトリにしてしまえ

ここはCGIが吐き出したindex2.htmlを表示してるだけだ。
index.htmlはフレームになってるだろ?
0130129NGNG
ちなみに、ここは
<FORM METHOD=POST ACTION="../test/bbs.cgi">
を見ればわかるとおり、cgiはindex2.htmlじゃないからね
0131125=127NGNG
so-ka。
>128 125は掲示板のフォームも全て拡張子.cgiでないといけないと思っているドキュン
atari!
0132名無しさんNGNG
掲示板で、二重投稿を防ぎたいのですが、
投稿された内容を別のファイルに記録して照合して…という方法しか思いつきません。
他にスマートな方法はありますか?
0133名無しさんNGNG
>>132
ログファイル本体の内容を参照するのでは駄目なの?
0134132NGNG
あ、一行だけ読み込めばいいのか。
鬱だ、逝ってきます…
0135saNGNG
掲示板の投稿後のページを変更したい。

どこを改造すればいいんですか?
0136名無しさんNGNG
>>135
どういう掲示板なのか説明しないと伝わらないってばさ。
掲示板なんて山ほどあんだから…それを踏まえた上で改造板逝ってみればどうかね。
0137若葉NGNG
>136 改造板ってドコ?
0138136NGNG
CGI 改造工房ってスレッド。次から関係ありそうなスレッドは自分で探してね。
http://tako.2ch.net/test/read.cgi?bbs=perl&key=958370869&ls=50
0139名無しageさんNGNG
一回のファイルオープンで入力と出力を行うことは可能でしょうか?
以下のようにしても入力処理だけしかされません。
3行目と4行目をコメントにした場合は、出力処理がちゃんとされます。

入力処理と出力処理の間に何らかの処理を挟めばできるのでしょうか?
それともこうゆうやり方は無理でしょうか?
C言語ではこうゆうやり方が出来たように思ったのですが。

1>$file="hoge.dat";
2>open(FILE,"+<$file") || &error("$!");
3>@dat=<FILE>;
4>print(@dat);
5>print FILE "OK?\n";
6>close(FILE);
0140名無しNGNG
append mode になってない。
0141名無し(140)NGNG
いや。。。動くぞ。
fileの決に付けたすんだろ?
0142名無しさんNGNG
seekもファイルポインタも知らんのにCがどうのとか言うなよ。
0143名無しさんNGNG
ファイルの文字コードをCGIより変換する方法ありますか?
 文字列をエンコードするのは
&jcode::convert(\$line, "euc");
 とかですよね。
 んじゃなくって、ファイル丸ごと。
nantoka.txt
とかあったらこれを丸ごと、変換する方法です。
0144名無しさんNGNG
open(FH,"nantoka.txt");
$line = <FH>;
close(FH);
&jcode::convert(\$line, "euc");
0145名無しさんNGNG
$/ = undef;

が抜けてるぞ。
0146135NGNG
>136 板じゃなくスレだろ!!氏ね
0147名無しさんNGNG
nkf でフィルタかまして取得てのはどうだ
0148名無しさんNGNG
SSIとCGIを利用して、
ファイルの作成日が例えば1週間以内ならば"NEW"、
最終更新日が2日以内なら"UPDATED"とか表示することは可能ですか?
メニュー画面 (index.shtmlなど)で。
0149名無しさんNGNG
>148
時間で比較する。
0150名無しさんNGNG
可能だがお前には教えてやらない
0151名無しさんNGNG
>148
可能。
0152名無しさんNGNG
可能 >148
0153名無しさんNGNG
局ウ(榕

0154名無しさんNGNG
↑なんだこいつ?
顔真っ赤にして連続書き込みか?
お前みたいなperlすらも分からん包茎野郎は
こなくていいんだよ。(諭すように)
0155名無しさんNGNG
それじゃ諭せないでしょ。
0156名無しさんNGNG
>154
まあ、落ち着け。スレッド違うぞ。
上げてるし。
0157上がったンでついでに…NGNG
2000年の表示って↓これだけじゃダメあるね?
$year += 1900;
0158名無しさんNGNG
OK。

つーか "19$year" なんてやっている奴がなぜいたのか謎だ…。
015978NGNG
19100年ってとこがあるの?
0160157NGNG
>158ちゃん マジおせーて!
>159 $year入れると100年って表示しちゃう年!!
0161japuNGNG
マニュアルも見ずにプログラム組んでいるじゃないの?
0162japuNGNG
マニュアルに載ってます:
Also, $year is the
number of years since 1900, that is, $year is 123
in year 2023, and not simply the last two digits
of the year.
0163143 NGNG
144さんありがとうございます。
でも何度やってもうまくいきません。
そこで作っているプログラムからはずしてこの部分だけで、
#!/usr/local/bin/perl

require 'jcode.pl';

open(FH,"nantoka.txt");
$line = <FH>;
close(FH);
&jcode::convert(\$line, "euc");

exit;

とやっても変換できません。。。なにがおかしんでしょうか?
0164157NGNG
>japuさん どーもです、英語から勉強し直します
0165名無しさんNGNG
::
0166名無しさんNGNG
$line = <FH>;
じゃなくて
@line = <FH>;
じゃないのか?
0167名無しさんNGNG
>163
145に144の訂正がありましたよ。openの前あたりに1行追加。
$/ = undef;


0168167NGNG
あ、グローバルな$/を書き換えると他の部分に支障が
でるかもしれないので、ブロックに入れて保護するほうがいいか。
{ local($/) = undef;
open(FH,"nantoka.txt");
$line = <FH>;
close(FH);
}
0169 NGNG
open(FH,"nantoka.txt") \n";
0170143=163NGNG
 みなさんありがとうございます。
 いろいろ試してみたんですが、まだ出来ません・・・・。
 jcode.plは最新のものにしたし、ローカルでもサーバー上でも試しても
どちらとも出来ないし、、なにがおかしいんでしょうか?
 実行の仕方でしょうかね?ローカルでは、MS-DOSプロンプト、
サーバーではtelnet使ってやってるんですが、、、。
 なにかここが出来てないんじゃないの?とかいうアドバイスありましたら
お願いします。
 
0171名無しさんNGNG
>170
163のスクリプトだけ見ると、読み込んで、convertして、
そのあとファイルに書き戻してないけど・・・。
0172170NGNG
>>171
それではこのままでは変換した文字はどこに行ってしまうんですか?
0173名無しさんNGNG
>>172
暗黒メモリ空間
てゆーかアナタ・・・・・・大丈夫?
0174170NGNG
ちょっとやばいかも・・・汗。
ファイルに書き戻す方法教えてください。。
0175名無しさんNGNG
>>174
ファイルを書き込みモードでopenして、変換した $line を
出力するだけでよいです。
方法がわからなければ、いい機会なのでちょっと勉強してみて。
(こういうのは答を書いちゃうほうがいいのかな・・・)
0176ありがとう!NGNG
143=163=170=174です。
できました!みなさんありがとうございます!!
いちおうEUCに変換できるんですけど、
詳しい方から見ればおかしい所だらけだと思います。
直したほうがいいところがありましたらお願いします。

#!/usr/local/bin/perl

require 'jcode.pl';

$/ = undef;
open(FH,"nantoka.txt");
$line = <FH>;
close(FH);
open(CF, ">a.txt");
&jcode::convert(\$line, "euc");
print CF "$line";
close(CF);

exit;
0177ありがとう!NGNG
すいません、下のが正しいです。
上のはファイル名一個間違えています。

#!/usr/local/bin/perl

require 'jcode.pl';

$/ = undef;
open(FH,"nantoka.txt");
$line = <FH>;
close(FH);
open(CF, ">nantoka.txt");
&jcode::convert(\$line, "euc");
print CF "$line";
close(CF);

exit;

0178名無しさんNGNG
ぉ さすが ..メモメモ
0179名無しさんNGNG
任意の日本語の文字列を縦表示させたいんですが、
どうすればいいでしょうか?

あぼーん

あ<BR>ぼ<BR>ー<BR>ん

このように変換したいのです。
0180>179NGNG
ヒント:正規表現
0181japuNGNG
#! /usr/local/bin/perl -w

$_ = "パンプルピンプルパムポップン";

s{\G([\x00-\x7f] | # ASCII or JIS X0201 Roman
\x8e[\xa0-\xdf] | # JIS X 0201 Katakana
\x8f[\xa1-\xfe]{2} | # JIS X 0212
[\xa1-\xfe]{2}) # JIS X 0208
}{$1<BR>}gx;
print "$_\n";

__END__
0182ぎこるびNGNG
ちょっと対抗

#!/usr/bin/env ruby
require 'jcode'
$KCODE = 'SJIS'
str = "じゃすとあなざーるびーはっかー";
str.each_char{|w| print "#{w}<br>"}
0183nanasiiNGNG
ではふつつかながら(Unicodeはじめて)変歌。もとい返歌。

perl -MJcode -Mutf8 -npe '$_=Jcode->new($_)->utf8; s/(.)/$1<BR>\n/g;' doc/Printing-HOWTO.sjs |lv

jperl とか fold.plつかえばもうちょっとストレートフォワードかな。
\b はasciiと日本語キャラの境界にマッチするようだ。つかえるかも。
utf8 はちかいうちに必要なくなるらしい。

0184名無しさんNGNG
splitで区切る文字に / を使いたい場合はどうしたらいいです?
0185japuNGNG
@moe = split /\//, $hanyan;
@moe = split m[/], $hanyan;
0186名無しさんNGNG
ところでPerlで大規模なプログラムとか組むとして
何行くらいから大規模と言うものなんでしょう?
0187名無しさんNGNG
300行以上
0188名無しさんNGNG
混乱しだしたら大規模。
0189いちろうNGNG
つくるのに、一日以上かかったら、大規模。
0190名無しさんNGNG
書き方にもよるけど、2000行以上ぐらいかな?
0191与える男NGNG
"123.45" ^ "234.56" が、"317.13" になってくれません。

| や & は書いてある通り "020.44" と "337.57" になるんですけど…。
ラクダ本だとビット演算子のところでまとめて説明してあるんですが、
xorだけ挙動が違うんでしょうか?
0192ロックしたい人NGNG
ここで質問してもいいんでしょうか。
今度新しくレンタルサーバー借りたんですけど、symlinkもopenも
使えないと、はっきりサポートメールで確認しました。
ロックというと
symlink>open>なし
だと漠然と思ってたんですけど、なしでも大丈夫なもんでしょうか。
0193名無しさんNGNG
>>192
文字列に対するビット演算子は「桁ごとの数値」じゃなくて、
「桁ごとの文字コード」で演算するから"317.13"にはならない。
結果は "\x03\x01\x07\x00\x01\x03" になる。
0194いちろうNGNG
頭を使えばね、>192
0195名無しさんNGNG
rename
0196193NGNG
うぎょ。193は、>>191の間違いっす。。。
0197弐ch編くんNGNG
index.htmに☆☆☆.cgiをフレーム表示してるのですが、
win-Netscapeだと表示されない様なんですが…
何が足りないのでしょうか?
<HTML>
<TITLE>☆☆☆</TITLE>
<FRAMESET>
<FRAME SRC="./☆☆☆.cgi">
</FRAMESET>
</HTML>
0198初心者NGNG
perl -cw ○○.cgi とやるとsyntax okとなるのですが
cgiが動きません。
もう、どこがまちがってるのか検討つきません…。
0199名無しさんNGNG
>198
print "content-type: text/html\n\n";
とか入ってる?
0200???NGNG
200?
0201初心者NGNG
>199
はい!はいってます。
■ このスレッドは過去ログ倉庫に格納されています