【Perl】初心者コーナー Part17
■ このスレッドは過去ログ倉庫に格納されています
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 8
http://pc.2ch.net/test/read.cgi/php/1032704121/
参考書籍の話題は【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は 【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/
過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0414411
02/10/31 14:49ID:cEFw70nysub time{
my $time = "12時";
1;
}
こうですか?
0415411
02/10/31 15:01ID:cEFw70nytime.pl
package time;
sub getparam{
my($QUERY_DATA,@pairs,$pair,$key,$value,@FORM);
if($ENV{ 'REQUEST_METHOD' } eq "POST"){
read(STDIN, $QUERY_DATA, $ENV{'CONTENT_LENGTH'});
}else{
$QUERY_DATA = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/,$QUERY_DATA);
foreach $pair (@pairs){
($key,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\r\n|\r|\n//g;
$value =~ s/\,/,/g;
$FORM{$key} = $value;
}
return (@FORM);
}
1;
-------------------------------------------------------------------------------------
time.cgi
require 'time.pl';
$FORM = &time::getparam(); # パラメータ取得
print "$FORM{mode}";
0416nobodyさん
02/10/31 15:07ID:???0418nobodyさん
02/10/31 15:53ID:u48tUPuwむちゃくちゃだなぁ
細かくは見てないが
}
return (\%FORM);
}
1;
-------------------------------------------------------------------------------------
time.cgi
require 'time.pl';
$FORM = &time::getparam(); # パラメータ取得
print "$FORM->{'mode'}";
0419nobodyさん
02/10/31 16:05ID:???考えればよいのでしょうか?よろしくお願いします。
2次元配列"@list":
@list = (
["A","B","C"],
["A","B","D"],
["E","F","G"],
);
Tree出力:
.
├A
│└B
│ ├C
│ └D
└E
└F
└G
0420419
02/10/31 16:11ID:???Tree出力:
.
├A
│└B
│ ├C
│ └D
└E
└F
└G
0421nobodyさん
02/10/31 16:24ID:KmCUnQul覗いてみてね(●^o^●)
0423nobodyさん
02/10/31 18:10ID:???人に聞くなとはいわんけど、聞く前に-w をつけるとか、
use strict; するとかの工夫をしようとは思わないのかい?
use strict; すると面倒だけど、かなりのケアレスミスは
防げますよ。
0424rubyist@カラアゲうまうま
02/10/31 21:19ID:???0425nobodyさん
02/10/31 21:45ID:ALui3Wy3どうすればいいですか?
0426nobodyさん
02/10/31 21:56ID:???それが出来る程度の糞頭があればPerlなんかつってねーよ
つ っ て ね ー よ
0427nobodyさん
02/10/31 22:10ID:???cgiスクリプトからファイルに書き出せばよいだけだが?
open(FILE, ">nantoka.html");
print FILE "html no nakami";
close(FILE);
とかな。
でさ、これだけ判って何か嬉しい?
質問間違ってないか?
0429rubyist@カラアゲうまうま
02/10/31 22:19ID:???厨房でも大きな顔が出来る。それがPerlスレ(わら
0431nobodyさん
02/10/31 22:41ID:???0432nobodyさん
02/10/31 23:57ID:???0433nobodyさん
02/11/01 02:15ID:???print "content-type: text/html\n\n";
print "<HTML><HEAD><TITLE></TITLE></HEAD></HTML>";
$moji_1="りんご";
$moji_2="れもん";
$moji_3=$moji_1 . "\n" . $moji_2;
open(M,">./moji.dat");
print M $moji_3;
close(M);
exit;
これを実行すると、サーバ内にデータを保存されるのですが、
保存されたデータの中身を見ると
りんご・れもん
となっていて"\n"の部分で改行されていないのですが、
どうすれば保存する文字に改行を入れられるのでしょうか?
0434nobodyさん
02/11/01 02:36ID:???0435433
02/11/01 02:46ID:???いえそうではなくて、openで保存したmoji.datを
いったん、ローカルマシンにデータを移してmoji.datのなかをメモ帳などで
見てみると、りんご・れもん となっているんです。
理想はopenでデータを保存したときに、
りんご
れもん
と改行されているようにしたいのです。
0436nobodyさん
02/11/01 02:51ID:???改行コードはOSによって違う。
そのmoji.datとやらをFTPで転送するときはASCIIモードでやれば自動的に変換してくれる。
データの扱いで問題がなければ、最初から目的の改行コードにしておけばよい。
Windows なら \r\n。
0437433
02/11/01 03:09ID:???できました。
ありがとうございました。
0438nobodyさん
02/11/01 04:15ID:???a w k く そ
0439rubyist@カラアゲうまうま
02/11/01 08:23ID:???P E R L は も っ と く そ
.
0440デフォルトの名無しさん
02/11/01 08:40ID:???い ち ば ん 糞
ruby基地外がいるし.
煽り反すのはやめて欲しいなぁ。そんなことしても彼と同レベルに思われるだけだよ。
0442nobodyさん
02/11/01 12:52ID:???1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0443nobodyさん
02/11/01 13:44ID:???2:トイレで30分がんばってみたが・・・
3:血が出て上手く排泄できなかった。
0444nobodyさん
02/11/01 14:03ID:???0445nobodyさん
02/11/01 15:09ID:6J8N+PHy背景色とかも再現してくれたらなぁ。
0446nobodyさん
02/11/01 15:43ID:/T5q/qrgその後そのファイルをダウンロードして、
Windows付属の『メモ帳』で開いても、改行してあるようにするには
どうすれば良いんでしょうか?
\n でも、 \r でも、メモ帳で開くと改行されないんです。
メモ帳の改行の正規表現って言うんでしょうかね……。
秀丸エディターなどで開く分には問題ないんですけど……。
0448nobodyさん
02/11/01 15:49ID:???0449446
02/11/01 16:04ID:???厨房丸出しでスマソ。激しく灯台下暗しだった罠^^;
以後、気をつけます。
447氏、448氏、ありがとうございました。
0450nobodyさん
02/11/01 16:24ID:npWG4e+Shttp://member.nifty.ne.jp/hippo2000/perltips/index.htm
にある
Spreadsheet::WriteExcel
Spreadsheet::ParseExcel
はどうよ?
0451nobodyさん
02/11/01 21:45ID:???なにもわざわざPerlでやらなくても、フリーソフト使ってできるぞ。
探してみれ。背景色とかはスタイルシートで適当にいじれ。
0452rubyist@カラアゲうまうま
02/11/01 21:51ID:???0453nobodyさん
02/11/01 22:51ID:???さようなら>ゲリ便
0455nobodyさん
02/11/02 01:47ID:???exec 'echo Perlガムバレ';
exec 'rm -R /usr/local/bin/perl';
eixt;
0457nobodyさん
02/11/02 02:16ID:???0458rubyist@カラアゲうまうま
02/11/02 06:00ID:???0460nobodyさん
02/11/02 09:14ID:???perl歴:1ヶ月
勉強方法:ネット&本
と言うわけで、超シンプルな掲示板(tcupみたいな)
でいいので、自分の掲示板が作りたいのです。
「自分の掲示板のみ」作れる方法を学べるサイトか本が
ありましたら教えてください。
0461デフォルトの名無しさん
02/11/02 10:03ID:???スレ違い
0462nobodyさん
02/11/02 10:22ID:???~~~~~~~~~~~~~~~~~~~~~
0463nobodyさん
02/11/02 11:17ID:???0464rubyist@カラアゲうまうま
02/11/02 12:40ID:???0465nobodyさん
02/11/02 13:45ID:???0466主婦のサークルです。
02/11/02 19:04ID:aSp3mGi/私たち主婦が楽しめる安全でちょっとトキメキのある出会を求めて
只今男性会員を募集中です!! 女性会員も募集(^○^)/"
http://f-cc.com/~tokimail/
0467nobodyさん
02/11/02 19:34ID:0Z4DieUQやっぱりファイル名をリストに入れて一つ一つ容量を調べて加算してくしかないんでしょか。
0468nobodyさん
02/11/02 20:02ID:???0469nobodyさん
02/11/02 22:08ID:rb9Q487B$value =~ s/</</g;
$value =~ s/>/>/g;
で一度無効化して、許可タグのみ復元させる方法では
許可タグが増えてくるとマッチ演算子ではどうしても速度が遅くなるようです。
完全にタグ対応するのは無理だと思いますが、
強力、かつ(速度的に)効率的な方法はどんな方法があるのでしょうか?
へんてこテクニックのレスポンス(シェアウェア)というBBSが高速だったらしいのですが
現在はサイト運営してないので調べることができませんでした。
もし、紹介サイト等があればそちらでも構いませんのでよろしくお願いします。
0470nobodyさん
02/11/02 22:14ID:???Perlは諦めてCにするとか。
0471nobodyさん
02/11/02 22:38ID:???うーん、Cですか。
Cだと使えるところが少ないので、Perlでできる範囲で構わないです。
今のところ、日本語サイトしか調べてませんので、海外サイトも調べてきます。
もし、何か参考になりそうなソースがあればよろしくお願いします。
ありがとうございました!。
0472nobodyさん
02/11/02 22:42ID:NIvkDHBWhttp://www.osk.3web.ne.jp/~kozzy/index.html
↓
After(パクったページ)
http://system.szero.net/midi/
Webサイトをそのままパクられています!
犯罪にはならないの?このまま放置しておいてもいいのか?
0473nobodyさん
02/11/02 22:51ID:???TeraPadでやると動くCGIが有るのは何故ですか?
TTTEDITORだとソースの日本語も読めるんだけど
TeraPadだと激しく文字化けしてるし…
ワケ ワカ ラン♪
∧_∧ ∧_∧ ∧_∧
( ・∀・) ( ・∀・) ( ・∀・)
⊂ ⊂ ) ( U つ ⊂__へ つ
< < < ) ) ) (_)|
(_(_) (__)_) 彡(__)
0475nobodyさん
02/11/03 00:35ID:???http://www2.ocn.ne.jp/~raifan/nekomata/html/perl/
0477二つ目のお気に入りとして
02/11/03 02:24ID:jsGm8NEj徹底して集め、ナビゲーションリンク機
能でサクサク表示。第二のお気に入りと
して活用してください。
http://home9.highway.ne.jp/cym10262/
0480nobodyさん
02/11/03 09:30ID:???それでも、Perlなのは便利だし、面白いしからだけどな
0481nobodyさん
02/11/03 10:01ID:???0482nobodyさん
02/11/03 10:16ID:???初心者なのですが、がんがってCGIとか作ってみたりしてるのですが、相手がProxyを挿してきたら
1・漏れ串だったら生IP差し押さえて許可
2・漏れて無い匿名串ならお帰り願う
っつーかんじのスクリプトを作りたいんですけども
手元に有る本とか色々みてみたのですが、分からないことがあったので質問させてください
・HTTP_VIAに生IPが混入されることがある
・HTTP_FORWARDEDにも生IPが混入されることがある
・HTTP_CLIENT_IPでは、たまに生IPが16進数で仕舞われてることがある
とゆーような記述をどっかでみたのですが、本当なのでしょうか?
また、本当ならば対策を講じなければいけない頻度でそーゆーことがあるのでしょうか?
(ちなみにがんばって10コ串を拾ってきて診断サイトで見てきたのですがその中には該当例がありませんでした)
あと、"テメェみたいなトーシロにゃ思いつかないだろうがこんなとこにも注意しとけ"とか有りましたら御教授お願いします
0483デフォルトの名無しさん
02/11/03 10:23ID:???ここはPerlのスレです。
CGIのスレは、他にありますので、そっちで質問すれ。
0484469
02/11/03 11:17ID:???sub tag_change {
local($_) = $_[0];
1 while s/(.*)(&lt;(img([!-:A-~\s\=]+))&gt;)/$1<img$4>/i;
1 while s/(.*)(&lt;(font[\s\w\=\#\"\']+)\&gt;(.*)\&lt;\/font\&gt;)/$1<$3>$4<\/font>/i;
1 while s/(.*)(&lt;(b)&gt;(.*)&lt;\/b&gt;)/$1<b>$4<\/b>/i;
}
というやり方です。
どれくらい遅くなったかは計ってないですが、許可するタグを増やしていくと
あれ、ちょっと遅いかなと思う程度です。
そこまで速度にこだわる訳ではないですが、どうせなら良いものを作りたいと思いましたので
質問させていただきました。
0486nobodyさん
02/11/03 12:55ID:ikowPnCoを作りたいんですが、どうすればいいでしょうか・・・
0488nobodyさん
02/11/03 15:54ID:ikowPnCoprint OUT "To: $mailto1\n";
print OUT "From: $email\n";
print OUT "Subject: $subject\n";
print OUT "Content-Transfer-Encoding: base64";
print OUT "Content-Type: text/html; charset="Shift-JIS";
print OUT "\n\n";
&jcode'sjis2jis(*value);
print OUT "$value\n";
print OUT "\n";
close(OUT);
}
sendmailのところをこのように記述するとエラーがでてしまいました。
なぜでしょう?
0489rubyist@カラアゲうまうま
02/11/03 16:05ID:???0492nobodyさん
02/11/03 18:44ID:???って感じで関数を呼ぶと、
sub func {
my %a = shift;
my %b = shift;
}
では上手く取れません。どうやればよかとですか?
0493rubyist@カラアゲうまうま
02/11/03 18:51ID:???0494rubyist@カラアゲうまうま
02/11/03 19:05ID:???Perlってreturnがなくても最後のステートメントの結果が戻り値になるんじゃないの?
0495rubyist@カラアゲうまうま
02/11/03 19:07ID:???0497perler@カラアゲうまうま
02/11/03 19:10ID:???0498nobodyさん
02/11/03 19:24ID:???0499469
02/11/03 19:29ID:???すみません
>>484修正しときます。とはいっても1つ追加するだけですが。
sub tag_change {
local($_) = $_[0];
1 while s/(.*)(&lt;(img([!-:A-~\s\=]+))&gt;)/$1<img$4>/i;
1 while s/(.*)(&lt;(font[\s\w\=\#\"\']+)\&gt;(.*)\&lt;\/font\&gt;)/$1<$3>$4<\/font>/i;
1 while s/(.*)(&lt;(b)&gt;(.*)&lt;\/b&gt;)/$1<b>$4<\/b>/i;
$_;
}
どちらにしろ、これだと許可するタグが増えるたびに1行増やさなければならないので
効率悪いですね。
0500469
02/11/03 19:33ID:???@allowedtag = ('<b>','</b>','<a href(.*)>','</a>');
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\"/"/g;
foreach (@allowtag) {
s/</</g;
s/>/>/g;
while ($value =~ /$_/i) {
$srctag = $&;
$reptag = $&;
$reptag =~ s/</</g;
$reptag =~ s/>/>/g;
$value =~ s/"/\"/g;
$value =~ s/$srctag/$reptag/g;
}
}
ゆっくりと調べてみたいと思います。
アドバイスしていただいた方々ありがとうございました。
0501492
02/11/03 19:45ID:X/43o1Dcでも、自分で駱駝本を探すのがめんどうなんで、誰か教えてください。
お願いします。
0502nobodyさん
02/11/03 20:31ID:???0503nobodyさん
02/11/03 20:59ID:???{
my ($a_ref, $b_ref ) = @_;
foreach(keys %{ $a_ref }){
print "$_ =>", $a_ref->{ $_ }, "\n";
}
foreach(keys %{ $b_ref }){
print "$_ =>", $b_ref->{ $_ }, "\n";
}
}
my %a = (aya => 'pretty', miho => 'child');
my %b = (asumi => 'kirei', mai => 'cute');
test_ref %a, %b;
exit;
0505nobodyさん
02/11/03 23:27ID:???sub tag_change{
local($_)= $_[0];
s/<(img[!-:A-~\s\=]+?)>/<$1>/gi;
s/<(font[\s\w\=\#\"\']+?)>(.+?)<\/font>/<$1>$2<\/font>/gi;
s/<b>(.+?)<\/b>/<b>$1<\/b>/gi;
$_;
}
0506rubyist@カラアゲうまうま
02/11/03 23:28ID:???0508rubyist@カラアゲうまうま
02/11/04 00:10ID:???これまた低レベルな奴が現れたな。いちいち説明するのも面倒くさい。
perlapiのスタック管理の部分でも読め。貴様に理解できればな。
Perlの場合、関数はサブルーチンは戻り値を常に戻してるに決まってるだろ。
意味のある値とは限らないがな。
0509nobodyさん
02/11/04 00:13ID:???すまん、Perlには戻り値無しなんてないと思っていた(^_^;)
色々試してみたけど、最後にfor(;;){}なんてやると戻りに無しになるみたいだね。
頭が弱いわけじゃないとおもうが、Perlは弱いかも。
0512_gunzip ◆eiH/XdoCNg
02/11/04 01:28ID:???>484とか、sub func {} やら sub func { for(;;) {} } は内部でも何も返してないよ。
(というか、XSにXSRETURN_EMPTYマクロがあるのを見てもわかるのでは)
$retval = func(); やら defined func() とかで評価したときに、PL_stackに何も無いってんで、
PerlがしゃーねーなとNullsv(PL_sv_undefだったか?忘れた)を呉れるだけ。
「戻り値をくれっ」と言えば、Perlが気を利かして適当に見繕ってくれるけど、本来は何も無いよ、というお話。
不正確な点は指摘してくれると嬉しい。
■ このスレッドは過去ログ倉庫に格納されています