【Perl】初心者コーナーPart11
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
02/03/27 12:53ID:wAXxxOxPいらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
CGIの質問はこちら【CGIだけどなんか質問ある Pert 5.01 】
http://pc.2ch.net/test/read.cgi/php/1015127347/l50
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
過去ログ、その他の役立ち情報は>>2-10を見よう。
0896nobodyさん
02/04/25 22:59ID:???$remote_ip = $ENV{'REMOTE_ADDR'};
$remote_hostname = $ENV{'REMOTE_HOST'}
if ($remote_ip =~ /^10\.1/ || $remote_hostname =~ /hoge\.com$/) {
print "Fuck So Reena!<BR>\n";
exit;
}
0897nobodyさん
02/04/25 23:02ID:T2XLP+gT先日、CGI検索エンジン(ヤフーのようなタイプで管理者のみ登録可能)と、一般的にごくごく普通の掲示板の制作を依頼しようとしたら、合わせて20万円と見積もりがきました。
条件としては、「著作権表示なし」ということで、この値段はどうなのでしょうか?
みなさんのご意見をお聞かせください。
また、上記のような物であれば、いくら位が妥当なのでしょうか?
宜しくお願いします。
0900nobodyさん
02/04/26 00:40ID:???CGIProxy(ttp://business.millto.net/~quadrant/)を使いたいのですが、どうも動きません。
use Socket; を入れてみても動かないのですが、ソケットを使うには如何すればいいのでしょうか?
どなたかご教授お願いします・・・
0901900
02/04/26 01:04ID:???0903nobodyさん
02/04/26 05:34ID:Q56RTaUTいけそうなのはわかったのんですが、どうにもうまく動きません。
/usr/local/bin/gpg -ea -r D44EC5AA aaaa -o bbbb
telnetでログインし、上記コマンドを打って、
bbbbファイルが暗号化されるのは確認しました。
単にこのコマンドをperlスクリプトから打ちたいだけなのですが、
これをsystem関数でやるには、どのような書き方をすればいいのでしょうか?
初歩的な事ですみません、検索してもよくわからなかったのでお願いいたします。
0904pear ◆PeArra/s
02/04/26 07:00ID:???ごめんなさい、改造中に誤って1行消してしまったみたいで…
今は正常に動作しています、迷惑かけてしまってすいません。
>>897
業者に依頼するなら妥当だと思う
0905アリソン
02/04/26 08:13ID:???削除したいんですが例えば
april1.html
april2.html
april3.html
april4.html
と言うファイルがある場合
aprilの後3以下の数字ならそのhtmlファイルを削除する場合
ってのはどうすればよろしいんでしょうか?検索してもわかりませんでした。
教えてください。
0906nobodyさん
02/04/26 08:26ID:???使用する前にまずunlinkをコメントアウトしてprint文で正しい
ファイルが選ばれてるかどうかテストしておいたほうがよろしいかと。
use IO::Dir;
my $dh = IO::Dir->new( "/path/to/dir" ) || die $!;
while( $dh->read ) {
next if !/^april(\d+)\.html$/;
next if $1 >= 3;
## print "deleting $_\n";
unlink($_);
}
0908nobodyさん
02/04/26 10:42ID:???unlink('april2.html');
unlink('april3.html');
0909nobodyさん
02/04/26 10:53ID:qDk2ux2I0910nobodyさん
02/04/26 11:04ID:???それだとapril4.htmlまで消さないか?
0911nobodyさん
02/04/26 12:13ID:???サーバ側でこの標準モジュールが許可されているか確認する為に
管理者へ連絡する以外に、perlを利用して確認する方法は存在しませんでしょうか?
0912nobodyさん
02/04/26 12:50ID:???0913nobodyさん
02/04/26 12:52ID:???telnetとかできるんだったら
/path/to/perl -MFile::Copy -e 'print "yes\n"'
でエラーが出なければOK。
0914911
02/04/26 13:40ID:???因みに、Web 用の CGI として試行錯誤しております
>>912
実際試してみたところ、ブラウザにてエラーが発生しました
しかし、文法チェックを行っても OK で戻ってきているので
考えられる原因が、モジュールが未組み込みの為に発生しているのかと
疑問に思った次第なのです。
利用すれば判明すると言う事は
ブラウザ上のエラーメッセージにて
何らかの確認が行えると言うことでしょうか?
>>913
どうもありがとうございます!
しかしながら、当方一般のユーザ扱いになりますので
サーバへ telnet する事ができません...
スカポンタンなお話で恐縮なのですが
port 21 へ telnet する権限しかない場合でも
先のコマンドを実行することは可能なのでしょうか?
0918nobodyさん
02/04/26 17:05ID:TLJObIwRというふうにアクセスすると、
$FORM{'keyword'}に、nobodyが格納されるようにする方法がわかりません。
教えてください
0920pear ◆PeArra/s
02/04/26 17:56ID:???cgi-lib.pl を使えば実現出来ると思います。
次のような感じでスクリプトに書き込めばいいかな?
もしかしたら違うかも…(汗
require './cgi-lib.pl';
&ReadParse(*FORM);
■ The cgi-lib.pl Home Page
http://cgi-lib.berkeley.edu/
0921912
02/04/26 18:13ID:???500吐いて確認出来ないんなら、シンプルにモジュールだけincludeして
それで判断する位が一番簡単じゃ無いの?
後はtelnet.cgiとか拾って来て、サーチパス(@INCだっけ)見てみるとか
それかshで簡単なスクリプト書いて、エラーをファイルにでもリダイレクト
して(>&2だったか)ログ取るか。
つーかCopyってカレントに突っ込めば動くんじゃネーノ?
最近全然コード書いてないんでね すまんね
0922ななしさん
02/04/26 18:22ID:???氏にます。
0924GEN ◆O4y3A80k
02/04/26 18:53ID:wC8cY983922はただの嘆きでしょう。
0925nobodyさん
02/04/26 19:02ID:???一つ言っとくと、モジュールがインストールされていなければsyntax checkも失敗するから。
以下のコード試して見れ。
#!/usr/bin/perl -w
print "Content-Type: text/plain\n\n";
print eval{ require File::Copy; } ? "ok" : $@;
0926ななしさん
02/04/26 19:10ID:???"└"と"│"と"├"を組み合わせてツリー表示したいのですが、
上手く表示されません。
1: 直面する危機[cccc] 04/18 17:10
|
| 日本企業が直面している、新事業開発と新市場創造の壁とは何か。
|
├2:Re直面する危機 [つんく] 04/19 10:07
│
│ つんくつんく大儲け
│
│├3:Re直面する危機 [いいいい] 04/21 15:43
││
││ いいいい
││
│└4:Re直面する危機 [うううう] 04/21 15:44
│ │
│ │ うううう
│ │
└5:Re直面する危機 [おおおお] 04/21 15:42
│
│ おおおお
│
ここまで
みたいになってしまい、きれいに表示されないんです..
0927nobodyさん
02/04/26 19:27ID:???0929File::Copyで困ってるやつ
02/04/26 19:47ID:???"ok" が表示されました...、ということはモジュールは導入
されているという事で良いでしょうか?
であれば、エラーの原因は自分のコードミスにある模様ですので
激しく逝ってきます!
0930926
02/04/26 19:48ID:???$c .= $n eq "└" ? " " : "│" if($n);
while(@{$restree{$log}}){
@data=split(/\t/,$list{$log == 0 ? shift(@{$restree{$log}}) : pop(@{$restree{$log}})});
if($data[1] != 0){$n= @{$restree{$log}} ? "├" : "└";}
if($n eq "├"){$o = $data[1] == $log ? "│" : "";}
elsif($n eq "└"){$o = $data[1] == $log ? " │" : " ";}
print "$data[0]:$data[3] [$data[4]] $data[6]";
if($data[1] == "0" && $data[1] != $log){$sen = "<br>| ";}
else{$sen = "<br>$c$o"." ";}
print"$sen$sen";
$data[7] =~ s/<br>/$sen/g;
print "$sen<nobr>$data[7]</nobr>$sen";
&treelist($data[0],$c,$n,$o,$size - 2);
}
}
へぼなコードでほんとにすいません。おねがいします。
0932nobodyさん
02/04/26 20:41ID:???0934nobodyさん
02/04/26 21:25ID:???人に理解してもらおうという気がないようだと思っただけだよ。
@{$restree{$log}}が何かも書かずにさ。
0935903
02/04/26 23:24ID:???system("/usr/local/bin/gpg -r D44EC5AA -o bbbb -ea aaaa");
とやると、エラーはでてきませんが、bbbbファイルが作成されません、
GnuPGはサーバーの/usr/local/bin/gpgにインストールされてますので、
telnet上の操作では、暗号化ファイルbbbbは問題なく作成されます。
問題は違うとこにあるのでしょうか?
元々やりたかったことは、フォームメールに入力されたデータを
暗号化されたメールとして受け取りたいということです。
解説ページなんてたくさんあるだろうと思って、暗号、PGP、GPG、GnuPG、フォーム、
他にもいろいろ検索ワードを試しましたが、それらしいページが見つかりません。
ひとつだけみつけましたがPHPでした。
http://www.hotwired.co.jp/webmonkey/2000/20/index3a.html
もし対処法や解説ページがありましたら、よろしくお願いいたします。
0936nobodyさん
02/04/27 00:25ID:???@{$restree{$log}}がなんだかはシランが、ツリー掲示板なら
ログがあるはずだから、そのログを精査して子記事のあるものに
フラッグつけろ。
で、whileかかってる記事番号の処理の中でフラッグがあれば
そいつの下に線をたらせばいんじゃないかい?
0939nobodyさん
02/04/27 01:15ID:pZywQtFXともかく分からないので、質問自体が間違ってるかもしれませんが。
0940nobodyさん
02/04/27 01:23ID:???ともかく分からないので、質問自体が間違ってるかもしれませんが。
0942nobodyさん
02/04/27 02:03ID:???XML::DOM、XML::LibXML、XML::GDOMEなどなど。XML関係は腐るほどあるけど。
思うに一般のプロバイダーのサーバーではインストールされていないかと。
>>940
おもろい。
0943903
02/04/27 02:09ID:???$?の中は512となってますが。
できあいのCGIを設置したり、ちょびっと変えるぐらいしか
やったことない身には、さっぱりわかんないです。
0946nobodyさん
02/04/27 02:53ID:???モジュールも鯖にあげてパス通す、というのは出来ない?知らんけど。
#/usr/bin/perl -I~/cgi-bin/
みたいのを1行目にするとか。
0947903
02/04/27 02:59ID:???パーミッションは問題ないはずなんですが、、、
全開放で試してもダメでした。
海外のページを探してみたら、GPG対応のフォームメールが
いくつか見つかりました。これを改造して使えないかなと中を見てるとこです。
日本語の解説ページもたくさんありそうなもんですがねぇ、
関連ワードで国内を検索しても、ショッピングサイトしかでてこないです。
0948944
02/04/27 03:22ID:???スクリプトが、そのsystem()の行まで辿りつく前にエラーになってる可能性は
ないかな?
実行パーミッションがついてないとか、perlのpathが間違ってるとか。
あと、telnetでログインしたときと、CGIで叩いた時の $PATH が
違うという可能性か、入力ファイルが実は無かったとか。うーむ。
推測だらけですまん。
0949903
02/04/27 03:43ID:???親切なレスありがとうございます。
pathは間違ってないですねぇ、、、ファイルも存在してます。
実行パーミッションもついてます。う〜ん??
簡単なテストで、こんなのやってみました。
#!/usr/local/bin/perl
system("/usr/local/bin/gpg -r D44ECAAA -o bbbb -ea aaaa");
print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
print "暗号化終了<BR>";
print "</BODY></HTML>\n";
exit;
エラーはでないですが、bbbbファイルが作られません、
絶対パスでファイルを指定してもダメ。
すごい初歩的な思い違いをしてるような気もしますが、、、。
0950944
02/04/27 03:59ID:???つーことは、なんとなーくgpgの実行時にエラーが出てる予感。
print "Content-type: text/html\n\n";
print `/usr/local/bin/gpg -r D44ECAAA -o bbbb -ea aaaa`;
てな感じで、エラー表示されないかなぁ
0951903
02/04/27 04:39ID:???こんな時間までお付き合いいただいて恐縮です。
やってみましたが空白ページでした、は〜ぁ。
試しに自分のPCにGPG、AN HTTP、ActivePerlを入れてテストしたら
無事に暗号化ファイルが作られました。
う〜ん、何なんでしょ?
関係のあるファイル、ディレクトリを
777にしちゃいましたが動かないし。
0952nobodyさん
02/04/27 04:40ID:???でもXML::DOMもXML::LibXMLもXML::GDOMEもCライブラリが必要でしょ
(expat,libxml2)?なんかそこまでするのもなぁ、と。できないことは
なかろうが。
0953nobodyさん
02/04/27 04:48ID:o5qoi2dCこの少数点以下を切り捨てにしたい場合はどうすればいいんでしょうか?
0954nobodyさん
02/04/27 04:52ID:???perldoc -f sprintf
my $foo = sprintf( '%d', 5 * 1.3 );
0956903
02/04/27 08:02ID:???問題はGPGの環境変数の設定にあったようです、
$ENVで設定すればOKでした。
お付き合いいただいて、本当にありがとうございました。
0957Atsuhi ◆UvChluUE
02/04/27 10:08ID:vZVa5O3I<input type=text name=2ch></form>
GETorPOSTフォームから送信された内容を、CGI側の変数$in{'2ch'}に格納するにはどうしたらいいんでしょう。
0959Atsuhi
02/04/27 15:38ID:2uDiaJDyその方法試しましたが、
なぜか、フォームから送信された内容を処理できません。
cgi-lib.plも使いたくないです
0961nobodyさん
02/04/27 16:06ID:???tr/+/ /;
s/%(..)/pack"H2",$1/eg;
s/</</g;
s/>/>/g;
s/"/"/g;
$_
} split/[&=]/, do{
uc $ENV{REQUEST_METHOD} eq 'POST'
? do{ read STDIN, $_, $ENV{CONTENT_LENGTH}; $_}
: $ENV{QUERY_STRING};
0963nobodyさん
02/04/27 16:23ID:AgrfpFbJその際にrefererを空にしたいと考えてます。なぜだか。
何かよい方法ありませんか?
0965nobodyさん
02/04/27 16:38ID:AgrfpFbJすみません。反省します。
0966nobodyさん
02/04/27 19:52ID:???0967nobodyさん
02/04/27 21:53ID:sDcizlcBどーやりますか?
0969nobodyさん
02/04/27 22:22ID:sDcizlcBマジカヨ!!ソケットって何??逝ってきます
0970nobodyさん
02/04/27 22:28ID:???0971nobodyさん
02/04/27 22:40ID:sDcizlcB???
0972nobodyさん
02/04/27 22:47ID:???0973nobodyさん
02/04/27 22:50ID:sDcizlcBすこし分かりました。
できそうです。
0974nobodyさん
02/04/27 22:56ID:???#/usr/bin/perl
use LWP::Simple;
$url='www.somewhere.com/index.html'
$file='local.html'
LWP::Simple::mirror( $url, $file );
0975nobodyさん
02/04/27 23:04ID:M0a39fTIあの事でお聞きしたい事があるんですが、このスレで聞いても良いんでしょうか?
htmlだけじゃなく、cgiなどの方も関係してるのでこのスレが妥当だと思うんですが、
一応確認したくて。
0978nobodyさん
02/04/27 23:09ID:???0979975
02/04/27 23:17ID:M0a39fTIすみません、無駄にしてしまいました。
どうせなので、私が次スレ立てさせて頂きますね。
0981nobodyさん
02/04/27 23:18ID:???http://pc.2ch.net/test/read.cgi/php/1019917048/
0982nobodyさん
02/04/27 23:19ID:???【Perl】初心者コーナー Part12
http://pc.2ch.net/test/read.cgi/php/1019917048/
0983975
02/04/27 23:21ID:M0a39fTI0984975
02/04/27 23:22ID:???レス数が950を超えています。1000を超えると書き込みができなくなります。