Perl コーディング初心者質問コーナー Part34
レス数が1000を超えています。これ以上書き込みはできません。
0001前スレの連投で気分崩したので後よろ
04/04/05 16:01ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0002nobodyさん
04/04/05 16:18ID:???【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc2.2ch.net/test/read.cgi/php/1077525387/
【 スクリプト改造依頼スレ 】(丸投げ)
http://pc2.2ch.net/test/read.cgi/php/1076831972/
△▲ WebProg 初心者の質問 Part7 ▼▽
http://pc2.2ch.net/test/read.cgi/php/1073460282/
【Perl】ファイルロック(排他処理)について語ろう
http://pc2.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc2.2ch.net/test/read.cgi/php/1034645635/
【Perl】掲示板を使ろう!
http://pc2.2ch.net/test/read.cgi/php/988890976/
Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
0003nobodyさん
04/04/05 16:19ID:???Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
0004nobodyさん
04/04/05 16:20ID:???Part16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html
part20 http://pc2.2ch.net/php/kako/1044/10447/1044717887.html (タイトルに19と誤記)
part21 http://pc2.2ch.net/php/kako/1047/10479/1047980851.html
part22 http://pc2.2ch.net/php/kako/1050/10503/1050369328.html
part23 http://pc2.2ch.net/php/kako/1053/10530/1053051519.html
part24 http://pc2.2ch.net/php/kako/1054/10549/1054992610.html
part25 http://pc2.2ch.net/php/kako/1056/10567/1056730690.html
part26 http://pc2.2ch.net/php/kako/1059/10590/1059043704.html
part27 http://pc2.2ch.net/php/kako/1060/10608/1060808783.html
part28 http://pc2.2ch.net/php/kako/1063/10635/1063562491.html
part29 http://pc2.2ch.net/php/kako/1066/10662/1066286828.html
part30 http://pc2.2ch.net/test/read.cgi/php/1069846177/
part31 http://pc2.2ch.net/test/read.cgi/php/1072896288/
part32 http://pc2.2ch.net/test/read.cgi/php/1075545279/ (タイトルに31と誤記) 前スレ
part33 http://pc5.2ch.net/test/read.cgi/php/1078076768/
[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html
0005nobodyさん
04/04/05 16:21ID:???・http://www.excite.co.jp/world/ # 英文のページ多いから一応
・Perl Com: http://www.perl.com/
・CPAN.com: http://search.cpan.org/
・ActivePerl: http://www.activestate.com/
・CGI-ML:http://forest.ne.jp/cgi-ml/
[お薦め]
・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
・Perl Recipes: http://www.effectiveperl.com/recipes/ # 死んでるか?
・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
0006nobodyさん
04/04/05 16:21ID:???・Home - Japanized Perl Resources Project: http://perldocjp.sourceforge.jp/
・Perl Monks: http://www.perlmonks.org/
・use 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
・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
・Perlfect Solutions: http://perlfect.com/
・The Perl Archive : http://www.perlarchive.com/
・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
・use Object; : http://perl.infoware.ne.jp/
0007nobodyさん
04/04/05 16:27ID:???△▲ WebProg 初心者の質問 Part8 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1078568723/
0008nobodyさん
04/04/05 16:28ID:???0009nobodyさん
04/04/05 19:00ID:???所謂、動作が遅いといわれるモジュールを使用する場合、例えばCGI.pmとして、
オブジェクト指向じゃなく関数指向で利用し、
インポートする関数を極力抑えて少なくするのと、
よく見る:standardとして殆どをインポートするのとでは
前者の方が動作は速くなるのでしょうか?
0010nobodyさん
04/04/05 19:33ID:???http://www.google.co.jp/search?num=100&q=Apache+Bench&lr=lang_ja
http://perldoc.com/perl5.8.0/lib/Benchmark.html
・使わない関数をコンパイルさせない方が速い。
・メソッド呼び出しより関数呼び出しの方が速い。
理論上は、ね。
0011nobodyさん
04/04/05 19:58ID:???ですよねぇ
しかしベンチとったんだけどほっとんど変わらなかったんで聞いたんですが、
まぁ一応これからも関数指向・使う関数のみインポートでやっていきます。
有難うございました。
0012nobodyさん
04/04/05 20:36ID:sKUQSXmG0013nobodyさん
04/04/05 21:27ID:???仕事人★のおかげでログが完全復旧せず「空白の一日」が
出来たからじゃない? 専ブラ使っている人が、
「空白の一日」込みのログをそのまま使っていたせいだと思われ。
0014nobodyさん
04/04/05 21:47ID:???CGI.pm に限って言えば、現実問題として、誤差の範囲内だと思う
負荷が気になるなら CGI::Lite 使うとかそういう
0015nobodyさん
04/04/06 12:17ID:???{
open(FILE,"$PASSFILE");
while(<FILE>)
{
s/[\n\r]*$//g;
my($id,$pass,$writer,$name) = split(/\t/);
$PASS{"$id"} = $pass;
$WRITER{"$id"} = $writer;
$NAME{"$writer"} = $name;
}
close FILE;
}
このようなコードを書いたのですが,
読み込むファイルの最初の行のデータだけが読み込めません。
何が悪いのでしょうか?
001615
04/04/06 12:26ID:???id1[TAB]pass1[TAB]writer1[TAB]name1
id2[TAB]pass2[TAB]writer2[TAB]name2
id3[TAB]pass3[TAB]writer3[TAB]name3
id4[TAB]pass4[TAB]writer4[TAB]name4
このうち,id1が読み込めていないようです。
0017nobodyさん
04/04/06 13:02ID:???#!/usr/local/bin/perl
$PASSFILE = "data.log";
open(FILE,"$PASSFILE");
while(<FILE>)
{
s/[\n\r]*$//g;
my($id,$pass,$writer,$name) = split(/\t/);
$PASS{"$id"} = $pass;
$WRITER{"$id"} = $writer;
$NAME{"$writer"} = $name;
print "1:$PASS{\"$id\"}\n";
print "2:$WRITER{\"$id\"}\n";
print "3:$NAME{\"$writer\"}\n";
}
close FILE;
0018nobodyさん
04/04/06 13:03ID:???0019nobodyさん
04/04/06 13:12ID:???$PASSFILE = "data.log";
open(FILE,"$PASSFILE");
@data = <FILE>;
foreach $temp (@data) {
my($id,$pass,$writer,$name) = split(/\t/,$temp);
$PASS{"$id"} = $pass;
$WRITER{"$id"} = $writer;
$NAME{"$writer"} = $name;
print "1:\$PASS{\"$id\"} = $PASS{\"$id\"}\n";
print "2:\$WRITER{\"$id\"} = $WRITER{\"$id\"}\n";
print "3:\$NAME{\"$writer\"} = $NAME{\"$writer\"}\n";
}
close FILE;
0020nobodyさん
04/04/06 13:13ID:???D:\>perl test.cgi
1:$PASS{"id1"} = pass1
2:$WRITER{"id1"} = writer1
3:$NAME{"writer1"} = name1
1:$PASS{"id2"} = pass2
2:$WRITER{"id2"} = writer2
3:$NAME{"writer2"} = name2
1:$PASS{"id3"} = pass3
2:$WRITER{"id3"} = writer3
3:$NAME{"writer3"} = name3
1:$PASS{"id4"} = pass4
2:$WRITER{"id4"} = writer4
3:$NAME{"writer4"} = name4
0021nobodyさん
04/04/06 13:24ID:???$PASSFILE = "data.log";
open(FILE,"$PASSFILE");
while(<FILE>) {
s/[\n\r]*$//g;
my($id,$pass,$writer,$name) = split(/\t/);
$PASS{"$id"} = $pass;
$WRITER{"$id"} = $writer;
$NAME{"$writer"} = $name;
print "\$PASS{\"$id\"} = $PASS{\"$id\"}\n";
print "\$WRITER{\"$id\"} = $WRITER{\"$id\"}\n";
print "\$NAME{\"$writer\"} = $NAME{\"$writer\"}\n\n";
}
close FILE;
0022nobodyさん
04/04/06 13:25ID:???$PASS{"id1"} = pass1
$WRITER{"id1"} = writer1
$NAME{"writer1"} = name1
2行目
$PASS{"id2"} = pass2
$WRITER{"id2"} = writer2
$NAME{"writer2"} = name2
3行目
$PASS{"id3"} = pass3
$WRITER{"id3"} = writer3
$NAME{"writer3"} = name3
4行目
$PASS{"id4"} = pass4
$WRITER{"id4"} = writer4
$NAME{"writer4"} = name4
0023nobodyさん
04/04/06 13:36ID:???話とは関係無いんだが
$PASS{"$id"} = $pass;
$WRITER{"$id"} = $writer;
$NAME{"$writer"} = $name;
って
$PASS{"$id"} = $pass;
$WRITER{"$writer"} = $writer;
$NAME{"$name"} = $name;
じゃ無いの?
0024nobodyさん
04/04/06 13:37ID:???0025nobodyさん
04/04/06 14:06ID:???0026nobodyさん
04/04/06 14:19ID:???まあいいけど
0028nobodyさん
04/04/06 16:09ID:???0030nobodyさん
04/04/06 18:02ID:???/g は要らんし、より正確に書くなら \n \r ではなく \x0A \x0D
http://www.din.or.jp/~ohzaki/perl.htm#CRLF_Remove
0031nobodyさん
04/04/06 18:04ID:???/\r\n|\r|\n/
何かマズい?
0032nobodyさん
04/04/07 02:46ID:???それをImageMagickでまた読み込んで編集して保存してるんですが、
これをわざわざ一度保存せず、編集して書き出すことって出来ないでしょうか?
いろいろ調べたのですが、どうもwin環境だからか、何度試しても動いてくれません。
CGI.pmを利用し、アップしたファイルのファイルハンドルが$fileに入ってます。
$img = Image::Magick->new;
$img->Read(file=>\$file);
↑こんな感じで動くと書いてあるサイトがあったりするのですが、
読み込んでくれません。
どのようにすれば可能なのか、また例えばwin環境では無理なのか等、
教えていただけませんでしょうか。
0033nobodyさん
04/04/07 03:12ID:???>>1
http://www.imagemagick.org/www/perl.html#exam
0034nobodyさん
04/04/07 05:02ID:???えっと、そのページは翻訳しもって一通り読んでます。
で、そのスクリプト例の項目がどう関係あるのかわからないのですが。。
つまり、そんなこと出来ないということでしょうか?
0036nobodyさん
04/04/07 07:20ID:???ああやっぱりそうですか・・・うちもperlが強制終了しちゃいます。
UNIX系の環境ではどうやら動くようなのですが、
レンタルしてる鯖につっこんで実験ってのはこわくてできないし(強制終了ですからねぇ)
そもそもローカルテスト環境と本番の環境で違うファイルにしなければならないというのは
少々困りものですし・・・。
出来ないなら諦めて今までどおり一旦保存して再読み込みでいくしかないですね。
しかし検索してもこのような問題が出てこないんで、やはり書き方に問題があるような気も。
もうちょっとだけ調べてみます。
0038nobodyさん
04/04/07 16:02ID:9kyfgT/3とは、どういう事なのでしょうか?
よく分りません。
よろしくお願いします。
0040nobodyさん
04/04/07 16:08ID:9kyfgT/3レスありがとうございます。
型グロブということは存じておりますが、
10を代入した結果、どうなるのか?、なぜそうなるのか?が分らないのです。
0041nobodyさん
04/04/07 17:36ID:???*hoge = \10ならまだ分かるが。
0042nobodyさん
04/04/07 18:04ID:s+a2EP68スミマセン、自分でどうなるかな・・・と。
*hoge = \10
なら型グロブに10へのリファレンスを生成するという事ですか?
型グロブにリファレンスって変な事ないですか?
0043nobodyさん
04/04/07 18:55ID:???型グロブはSCALAR, ARRAY, HASHなどのフィールドを持ったデータ。
(スカラー、配列、ハッシュにそれぞれ同じ名前で別の変数を定義できるのもこのため)
*hoge = \10 や *hoge = \%hash は型グロブのそれぞれのデータフィールドへの代入となる。
つまり、上記の代入を行った後は $foo は定数10の別名となり、print $fooは10を表示する。
定数の別名である為、$foo = 1等は10 = 1と等価となり、実行時エラーになる。
もちろん、%hogeは%hashの別名になる。
このフィールドは、直接 *hoge{SCALAR}, *hoge{HASH} として直接参照することも出来る以下略
0044nobodyさん
04/04/07 21:03ID:???表示はされるものの文字コードの処理の仕方がわかりませぬ(´Д`)
よくみかける
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value,'sjis');
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\n//g;
$value =~ s/\r//g;
$value =~ s/\t//g;
$value =~ s/\,//g;
を使うんだとは思うんですが、教えてください。。
ちなみに今は
if (!open(IN,"$file")) { &error('データベース読取エラー','復旧をお待ちください.'); }
while(<IN>){
($d,$DATE,$NAME,$SEX,$KATEGORI,$TEIKA1,$TEIKA2,$HANBAI1,$HANBAI2,$IMAGE,$KANRI) = split(/,/);
print qq( ・・・・
とかいております。。
よろしくお願いいたします。
0045nobodyさん
04/04/07 21:18ID:???キミはGETでパラメータを渡したとき、hoge.cgi?a=001+1&b=002&...というのは見たことはあるな?後ろにくっつくウザい文字列だ。
日本語を渡すとわかるが、ワケわからん状態になっているはずだ。
あれを正常な状態に戻す処理だ。
1.$value =~ tr/+/ /;
I am hoge.という文字列をQUERY STRINGに渡すと、I+am+hogeとなる。空白の部分が+になるわけだ。
これじゃ元のデータと違ってしまうから、+を半角スペースに置き換える処理。
2.$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis');
%8B%B3%82%A6%82%C4%8C%4E%82%CD%8B%41%82%EAなどの文字列を普通の文字列に直す処理。
後半はjcode.plやらの文字コード変換ツールでsjisに変換している。
3.$value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/\n//g; $value =~ s/\r//g; $value =~ s/\t//g; $value =~ s/\,//g;
キミが書いたときには、同じ記号が並ばずに<とか>ってなってたよな?
HTMLとかで読ませると、キミの書き込みのように記号扱いされてしまうが。
これを実態参照(だっけ?違ったら修正よろ)という。
ようするに、BBSなどで本文にタグとかを書かれると困るから、<や>記号を<とか>に置き換えようってことだ。
クソ適当なんで誰か追記叩き修正フォロー暴言罵倒誹謗中傷お願いします。
004644
04/04/07 22:08ID:???そこんとこの意味はなんとなくわかるんですが
if (!open(IN,"$file")) { &error('データベース読取エラー','復旧をお待ちください.'); }
while(<IN>){
($d,$DATE,$NAME,$SEX,$KATEGORI,$TEIKA1,$TEIKA2,$HANBAI1,$HANBAI2,$IMAGE,$KANRI) = split(/,/);
print qq( ・・・・
のどこにどんな風に記述すればいいですかのう・・(´Д`)
0050nobodyさん
04/04/08 01:00ID:???それならjcodeの引数をもうひとつ追加すれば解決。
どっちにしろURIエンコードは関係なさそうだね。
005144
04/04/08 04:13ID:???いや、うまくいくと思ってたらうまくいかなかったので
なんでかなーと・・。
でももうひとつ引数追加すればいいわけですか。。
やってみるわ〜。
あんがと〜
0052nobodyさん
04/04/08 10:14ID:???では次の質問ドゾー
0053nobodyさん
04/04/08 20:22ID:???「ハンドルネーム@〜」って名前を入れられた時に、@以下を切り落としたいんですが
名前によっては上手く切り落とせないんです。
$str = "ファイア@炎";
$str =~ /^([^@^@]+)/;
$str = $1;
print $str;
例えば、この場合「フ」とあとなんか変な文字が$strに入ってしまいます。
入力文字列によっては上手く切り落とせる事もあるんですが・・・
何が悪いんでしょうか?
0054nobodyさん
04/04/08 20:41ID:???005553
04/04/08 20:46ID:???$str = "ファイア@炎";
$str =~ s/(@|@).+$//;
$str = $1;
print $str;
実行した出力結果:
@
切り落とせてないんですが・・・
005653
04/04/08 20:48ID:???$str = "ファイア@炎";
$str =~ s/(@|@).+$//;
print $str;
出力結果:
フ(と、変な文字)
やっぱり出力できてないんですが・・・
0057nobodyさん
04/04/08 20:58ID:???たぶん、sjisでやっていると思うんだけど、
ァの二バイト目=0x40、@=0x40っていうところに注目。
0058nobodyさん
04/04/08 21:02ID:???$str = "ファイア@炎";
$str =~ /^((?:\x81[\x40-\x7e\x80-\x96\x98-\xfc]|
[\x82-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]|
[\x20-\x3f\x41-\x7e])*)/x;
$str = $1;
print $str;
0059nobodyさん
04/04/08 21:14ID:nuxHv3wJ10進数のIPアドレスを、2進数の文字列に変換したいのですが、
$num2 = unpack("B32", pack("C*", 192,50,218,168)); のIPアドレスの部分を、192,〜の固定でなくて、
ファイルから読み取りたいのですが、そこを $file と指定しても読み取ってくれません。
どう書いたらいいのでせうか・・・
006053
04/04/08 21:17ID:???凄い!それで無事行けました。
perlメモの、「正しくパターンマッチさせる」のsjisへの応用ですよね。
ところで、文字コードを表す部分は分かるんですが、最初の
?: と 最後の修飾詞 x の役目が良く分からないんですが・・・
? は「直前の1文字が0回または1回」ということですが、直前に何も付いてないみたいなんですが・・・
また、x (拡張正規表現)は、持ってるperl本を引いてみた所、「空白文字を無視し、#以降をコメント扱いする」とあります。
でも、空白もコメントも使ってないので、外してみたらマッチしなくなりました。
良ければこれら意味も教えて頂けないでしょうか?
0062nobodyさん
04/04/08 21:19ID:???0063nobodyさん
04/04/08 21:27ID:???http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlre.html
改行やタブも空白文字 (white space) 。
>>58 は改行されているので /x が必要。
/x を外したかったら
/^((?:\x81[\x40-\x7e\x80-\x96\x98-\xfc]|[\x82-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]|[\x20-\x3f\x41-\x7e])*)/
とするべき。
006553
04/04/08 21:49ID:???あーっ、分かりました。
とんでもない勘違いしてました。空白文字を含むのは$strではなく、パターンの方ですね。
どうもこういう勘違い多いな自分・・・
これで納得できました。どうも有難うございます。
?: については、本調べてたら載ってました。前方一致、ってことですね。
perl5に追加された拡張構文であり、拡張正規表現の x修飾詞とは別に関係ない。
まぎらわしいけど、何とか覚えました。
これで何とか出来そうです。
・・・なんですが、おまけで書いて頂いた「/xを外したかったら」を実行してみたところ挙動が変です。
何度もすみませんが、こういうのどうしても気になる性質で・・・
$str = "ファイア@炎";
$str = /^((?:\x81[\x40-\x7e\x80-\x96\x98-\xfc]|[\x82-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]|[\x20-\x3f\x41-\x7e])*)/;
print $str;# マッチング判定結果表示
$str = "$1 $2 $3 $_";
print $str;
実行結果:
1
------------------------
マッチングは上手く出来てるようなんですが、その文字列がどこに格納されたのかが分からないんです。
$1 に入ってなかったので、それっぽい変数を色々乗せてみましたが全く当たりません。
いったい、どこに行ったのでしょうか・・・?
0067nobodyさん
04/04/08 21:55ID:???何でもかんでも人に聞かずにとりあえず黙って調べてテストしてを繰り返せ
006953
04/04/08 22:00ID:???でも、本当に簡単なミスでも、指摘されるまで気付かないことだってありますよ。
いくらテストしても、エラー出ないからどの行が悪いのかも見当つかないし。
これで完全に解決できたので、以降書き込みには来ません。
答えてくれた方、有難うございました。
0070nobodyさん
04/04/08 22:12ID:???普段どんなデバッグ手法使ってるのか良く分かった。
0071nobodyさん
04/04/08 22:12ID:???何処でミスしたかもすぐわかるようになるんだよ
一つ質問する
↓
回答どおりしたら解決した
しかし他のわからないことも質問
↓
解決。別の質問
↓
繰り返し
この一連の流れの中に「自分で調べる」を入れろ
せめて2,3時間調べろ
0072nobodyさん
04/04/08 22:19ID:???0074nobodyさん
04/04/08 22:26ID:???おまいプログラムやめろ
少なくとも共用サーバでスクリプト走らせるのやめろ
007559
04/04/08 22:31ID:1altNbSl192.168.0.1
192.168.0.10
192.168.0.100
みたなものです。
0076nobodyさん
04/04/08 23:28ID:???$file = '192.50.218.168';
$num2 = unpack("B32", pack("C*", split(/\./, $file)));
0077nobodyさん
04/04/09 00:33ID:PgKEk2Oq例えば、1MぐらいあるHTMLファイルの<title>だけを知りたいので、先頭1000バイトだけ取るとか。
0079nobodyさん
04/04/09 01:07ID:6udLpUMWさせるコードが上手く動きません。(perl ver 5.8.0 cgi-lib.pl ver 1.14)
require 'cgi-lib.pl';
&ReadParse;
$namae=$in{'NAMAE'};
print "content-type: text/html\n\n";
print "<html>";
#print $namae;
print "test\n";
print "</html>";
としているのですが、HTMLフォームからテキストを送ると「ページを表示できません」が出てしまい
うまく実行されません。cgi-lib.plをコマンドラインから実行すると、間違いなく動いているのですが、
HTMLから上記CGIを実行すると うまくいきません。
お分かりのかたいらっしゃるでしょうか
0080nobodyさん
04/04/09 01:09ID:6udLpUMW#!/usr/bin/perl
require 'cgi-lib.pl';
&ReadParse;
$namae=$in{'NAMAE'};
print "content-type: text/html\n\n";
print "<html>";
print $namae;
print "</html>";
というコードを書いたのですが、うまくいきません
0081nobodyさん
04/04/09 01:21ID:ruDZ3+hJそのスクリプトのファイル名が myscript.cgi だとして
#!/usr/bin/perl
eval {
require 'myscript.cgi'; # あなたのスクリプトを読み込む
};
if ($@) {
print "Content-type: text/plain\n\n$@";
}
というスクリプトを実行するとどうなります?
詳しいエラーを見る事ができるはずなんだけど。
0082nobodyさん
04/04/09 01:21ID:???まずWWWサーバのエラーログを調べる
もしエラーログが調べられないときは、そうだな、
とりあえず改行コードでも疑ってみたらどうだ?
0083nobodyさん
04/04/09 01:25ID:???0086nobodyさん
04/04/09 01:58ID:6udLpUMWありがとうございます。下記のような表示が出たのですがさっぱりです(ちなみにcgiファイル名は「my.pl」
Can't locate my.pl in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.
0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_pe
rl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/ve
ndor_perl .) at /var/www/cgi-bin/test.pl line 3.
>>84
HTMLは間違っていないと思います
ちなみに下記
<html>
<meta http-equiv="Content-Type" content="text/html;charset=euc">
<body>
<form method="post" action="../cgi-bin/3-3-1.pl">
名前<input type="text" name="NAMAE"><p>
<input type="submit">
</form>
</body>
</html>
HTMLの文字をperlで変数に格納し、それをHTMLで表示させるだけなのですが
>>83さんもおっしゃるように perlのパスも本体CGIやcgi-lib.pl内のパスも確認したのですが
間違っていないと思うのですが、どうしてうまくいかないものでしょう
0087nobodyさん
04/04/09 01:59ID:6udLpUMW<html>
<meta http-equiv="Content-Type" content="text/html;charset=euc">
<body>
<form method="post" action="../cgi-bin/my.pl">
名前<input type="text" name="NAMAE"><p>
<input type="submit">
</form>
</body>
</html>
0088nobodyさん
04/04/09 02:08ID:???008979
04/04/09 02:24ID:6udLpUMWうーん おかしいなぁ 確かに指定したはずなのですが
CGIを実行したときのログをみてみたらこんな感じで書いてあった
Argument "NAMAE=ffffff" isn't numeric in subroutine
entry at /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/ModPerl/RegistryCooker.pm line 160.!
もう少し調べてみることにします ありがとうございました
0090nobodyさん
04/04/09 04:37ID:+yDvGh6Oエラー表示する時に、ヘッダー(content-type)が2重になってしまう場合があるので…。
ヘッダー出力すると同時に、定数か何かでフラグ立てておけば良いんでしょうか?
0091nobodyさん
04/04/09 04:39ID:???普通にフラグで判断しましょう。
0093nobodyさん
04/04/09 08:40ID:qDAc9oFcやりたいこと:
掲示板の投稿済み投稿内容編集フォームで
改行を<BR>に変換して保存した本文を
<BR>を改行コードになおして
テキストエリアに投稿済みの本文を表示する
こんな風にやってみた:
1.$text =~ s/<BR>/\x0D\x0A/g;
<textarea cols=60 rows=3 name=text value=$text></textarea>
2.$text =~ s/<BR>/\n/g;
<textarea cols=60 rows=3 name=text value=$text></textarea>
両方ともだめでした。
$textの内容が空になります
よろしくお願いします。
0094nobodyさん
04/04/09 08:56ID:???o <textarea cols=60 rows=3 name=text>$text</textarea>
0096nobodyさん
04/04/09 16:05ID:???csvの中身を表示したい。
こんな風に自分は書いた :
open(FILE, "test.csv");
$data = <FILE>;
close FILE;
($a,$b) = split (/,/,$data);
$i = 0;
while ($i < 5){
print "$a"
$i++;
};
結果。同じ列の文字が繰り返される。。
(whileを使わなかったらずっと表示されたので
今は食い抑えてる幹事になってます。)
基本的っぽいけどサパーリなのです。
宜しくお願い致します。。
009796
04/04/09 16:30ID:???0098nobodyさん
04/04/09 17:03ID:???0099nobodyさん
04/04/09 17:19ID:???while (<FILE>){($_,@_) = split /,/; print;}
close (FILE);
010075
04/04/09 18:56ID:gUQPCoa8>>64 IPアドレスが一行づつかれたファイルです。
192.168.0.1
192.168.0.10
192.168.0.100
みたなものです。
76 :nobodyさん :04/04/08 23:28 ID:???
>>75
$file = '192.50.218.168';
$num2 = unpack("B32", pack("C*", split(/\./, $file)));
↑ありがとうございました。変換できました。
変換後、改行がなくなりこのように↓変換したIP文字列がつながってしまいました。
これを32文字づつ、改行したいのですが、どのような構文?を使用すればいいのでしょうか。
とっかかりが分かりませんので、さわりだけ教えていただければ後は調べますので
よろしければ教えて下さい。
=======================================================
00001100100110110111010011110011000011001101001000110000111111100000110011100101
11010011010101110000110011100110000100010010011010000001000010110110100000000001
10000001000010110110111011011010100000010000101101110100000011011000000100001011
01110100100000101000000100001011011101000011100010000001000010110111010001001010
10000001000010110111011001111000100000010000101101110110111110001000000100001011
10001011000000011000000100001011000011100000000110000001000010111001000000000010
================================================
0101nobodyさん
04/04/09 19:03ID:???open (FILE, "ip.txt");
while(<FILE>) {
$num2 = unpack("B32", pack("C*", split(/\./)));
print "$num2\n";
}
close (FILE);
0102nobodyさん
04/04/09 19:04ID:???もうくんな発言スンナ
0103nobodyさん
04/04/09 19:40ID:???>print "$a"
>$i++;
>};
ワロタw
$aの中身入れてないなら同じのが出て当然だろw
0105nobodyさん
04/04/09 21:54ID:???open(FILE, "./aborn.csv");
@list = <FILE>;
close(FILE);
@temp = ();
foreach $rr (@list){
if($rr eq $dellist){
print "$rrを削除しました<BR><BR>";
} else {
push(@temp, $rr);
print "$rrは削除せず<BR><BR>";
}
}
open(OUT, ">./aborn.csv");
print OUT @temp;
close(OUT);
以上のようなソースでプログラムを動かすと、
@listに$dellistと同じ文字列が含まれているのに、その文字列は削除されずに
else以下の「削除せず」をprintして、csvファイルからも削除されませんでした。
「eq」の部分が原因だと思うのですが、==では当然正常に動きませんし…
はて、どうしたものでしょうか。
0106nobodyさん
04/04/09 22:14ID:???http://tohoho.wakusei.ne.jp/wwwperl1.htm#CompStrOperand
http://tohoho.wakusei.ne.jp/wwwperl1.htm#MachingOperand
0107nobodyさん
04/04/09 22:16ID:???0108nobodyさん
04/04/09 22:16ID:???0109105
04/04/09 22:26ID:???今サーバーにアップロードして試してみると、リストからの削除が行えました。
変わりに、文字化けが起こるようになりましたが…
謎。
>>106-108
なるほど、eqにこだわらずneで組めばelse文がいらないというわけですか。
参考になります。
011079
04/04/09 23:21ID:6udLpUMW下記のようにコードを直したら無事cgi-lib.plが処理してくれました
(訂正前) &ReadParse; (訂正後)&ReadParse(*in);
実はこのコード、本にのっていたやつなんですけど、本が間違ってたんですかね。
いろいろ調べた結果&ReadParseの後ろに(*in)を付けないと フォームから渡された
データが in に入らないんですね。 なんかやられたって感じです。
でもみなさんにいろいろ教わった結果、perlのエラーはapacheのログみれば分かることや
その他いろいろのことを知ることができました。アドバイスいただいたみなさん ありがとう
ございました
0112nobodyさん
04/04/10 00:16ID:???日本語の表示についてです。
WindowsXP、AN HTTPD、ActivePerl5.8です。
ソースの文字コードはeucです。
use Encode;
use encoding 'euc-jp';
my $x = "あ";
print $x;
これだと文字化けしてしまいます。
Encode::from_toやEncode::encodeなどで$x文字コードを変換しても上手くいきません。
一応ググッてはみたのですが、見つかったPerl5.8の解説ページはどれも中級者向けといいますか、
読者が5.6以前の文字コードの扱いやjcode.plの扱いを理解しているという前提で書かれたようなものばかりで、
今から5.8でPerlを勉強しようという入門者向けに日本語の扱いを解説したページを見つけられませんでした。
0113nobodyさん
04/04/10 00:44ID:???おまいさんの思ってる「文字化け」の定義を述べよ。
ブラウザ側でエンコードを euc-jp として指定してやれば普通に見えるんじゃないか?
0114nobodyさん
04/04/10 01:04ID:???windowsのコンソールに表示させてる?
ならeuc-jpじゃなくてsjisで書いてencode指定すれば
とりあえず正しく表示される。
こんなのもちゃんと通る。
use encoding 'sjis';
my $x = "ソースを表示";
print "$x(";
print length $x;
print "文字)\n";
$x =~ s/表/提/;
print $x;
0117112
04/04/10 02:22ID:???新しく覚えたことはまず拡張子plでwindowsのコンソールで試し、その後CGIにして動かす、というやり方で勉強していました。
今回は最初のコンソールの段階で上手くいかなかったので、その後のCGIでブラウザ表示するのをやっておりませんでした。
レスを見て、CGIでのブラウザ表示を試したところ、eucで表示が確認できました。
>>113
というわけで、そもそもブラウザでの表示を試していませんでした。
>>114
ご指摘の通り、コンソールで表示させておりました。
ソースをsjisにすることでコンソールでも表示できました。
sjisだと色々問題が発生するのでソースはeucが基本、と書いてあるHPを読んだのでeucにしておりました。
>>115>
Perl5.8だと内部ではUTF8でどうのこうの、というあたりでかなり頭が混乱しております。
なんとか「あ」が表示できたので、これをとっかかりに詳しく勉強していこうと思います。
>>116
そのへん、まだ混乱しています。is_utf8($x)だと真になるので、UTF8なのか。
でも結局無変換のままで上手くいったので、やっぱりeucなのか。
UTF8フラグの立ったeuc??
この辺がまだきちんと理解できてないので、近いうちにまた壁にぶつかる予感です。
0118nobodyさん
04/04/10 20:34ID:H+y5o94iリンク先に飛ぶときhttp-referrerに任意のURLをぶち込んで飛ぶということは可能でしょうか?
0120nobodyさん
04/04/10 20:44ID:???0121118
04/04/10 20:53ID:H+y5o94iレスありがとうございます。
CGIスレ見てみましたが、出来ないっぽいですね?
0122nobodyさん
04/04/10 21:06ID:???サーバーからはどうにもならんでしょう。
2chみたいにワンクッションさせてみるとか?
0124nobodyさん
04/04/10 22:07ID:zPwA0QL/下のスクリプトが上手く動かないんです
use strict;
{
package Config;
$host = "www.example.com";
}
package main;
print "host = $Config::host\n";
use strictしているときは、$Config::host = "www.example.com"; って書かないといけないみたいですが
これじゃあ、package Configの意味がないですよね?
package Config; のあとに no strict; っていうのを入れないといけないんですか?
どうしたらいいんだろう・・・おしえて。
0126nobodyさん
04/04/10 22:22ID:???$e2=int(rand(6));
while($e2==$e1){
$e2=int(rand(6));
}
$enemy3=int(rand(6));
while($e3==$e1 or $e3==$e2){
$enemy3=int(rand(6));
}
1〜6から、ランダムで3つの数字を重複なしで、
取り出すプログラムなんですけど、
しょぼいですよね・・・
なにか華麗な方法知ってる方いれば、教えて下さい。
0127nobodyさん
04/04/10 22:24ID:???$e1=int(rand(6));
$e2=int(rand(6));
while($e2==$e1){
$e2=int(rand(6));
}
$e3=int(rand(6));
while($e3==$e1 or $e3==$e2){
$e3=int(rand(6));
}
0128nobodyさん
04/04/10 22:34ID:???プラグマの影響範囲を誤解している。
http://perldoc.com/perl5.8.0/pod/perlmodlib.html
>>126
1..6 をランダムな順序で持つ配列から 3 つ取り出す。
http://www.din.or.jp/~ohzaki/perl.htm#ArrayRandom
0129nobodyさん
04/04/10 23:02ID:???use strictの意味も分からずuse strictしても意味無いですよね?
perl5.6.0未満のバージョンなら
{
package Config;
use vars qw($host);
$host = "www...";
}
perl5.6.0以上のバージョンなら
{
package Config;
our $host = "www...";
}
# ...
print $Config::host;
0130nobodyさん
04/04/11 00:07ID:???何スレか前に同じ質問があった。
そのときは確か、List::Utilが使えれば一番早くて楽だっていう
結論だった気がする。
use List::Util qw(shuffle);
($enemy1,$enemy2,$enemy3) = shuffle 1..6; #@enemy[0..2] の方がいいと思う。
0132nobodyさん
04/04/11 00:26ID:???Perl 5.8.0使っているので、下のほうを参考にさせてもらいます。
use strict;はとりあえずつけとけと よく見るのでつけてみました。
とりあえず変数はmyつけて宣言しとくといい らしいので。
packageのなかでは our というのをつけるんですね。
>>128
プラグマですか。自分の持っている本にも少ししか触れていないし、
難しそうな考え方ですね・・・。
知らないのに何かができるわけも無いので、
頑張って勉強します。どうもありがとう、でした
0133nobodyさん
04/04/11 00:36ID:???package内ではourをつけて宣言するんだ
(mainの中でmyをつけて宣言するのと同じように・・・ってmyの複数形なんだな)。
package内で$varとしたらグローバルになっちゃうわけですね。
0134nobodyさん
04/04/11 01:34ID:???全然違うし。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlmod.html
my 変数はシンボルテーブルで管理されていないので、同じファイル上で
宣言されていれば名前空間が変わっても参照できる。strict プラグマの
影響範囲も同様。
#!/usr/bin/perl
use strict;
package Foo;
my $foo = 'foo!'; # strict vars の影響範囲内
package Bar;
print $foo; # foo!
__END__
vars プラグマや our によって宣言された変数は strict のチェック
対象外となるだけでグローバル変数と同等。シンボルテーブルで管理
されているから $Config::host のようにパッケージ名から指定すれば
外部から参照できる。
あと標準モジュールに Config.pm があるので、パッケージ名に
Config を使うのは止めた方がいい。
0135nobodyさん
04/04/11 04:40ID:???use strict;
use warnings;
use sigtrap;
use diagnostics;
&main;
exit;
sub main {
my $val1 = 1; our $val2 = 2;
&test;
print '$val1(' . \$val1 . qq|="$val1"\n|;
print '$val2(' . \$val2 . qq|="$val2"\n|;
# print '$val3(' . \$val3 . qq|="$val3"\n|;
# print '$val4(' . \$val4 . qq|="$val4"\n|;
sub test {
my $val3 = 3; our $val4 = 4; $val1 = 5; $val2 = 6;
print '$val1(' . \$val1 . qq|="$val1"\n|;
print '$val2(' . \$val2 . qq|="$val2"\n|;
print '$val3(' . \$val3 . qq|="$val3"\n|;
print '$val4(' . \$val4 . qq|="$val4"\n|;
}
}
0136nobodyさん
04/04/11 08:05ID:???まー大体予想通り。
>sjisだと色々問題が発生するのでソースはeucが基本、と書いてあるHPを読んだのでeucにしておりました。
最近の Perl では
>Perl5.8だと内部ではUTF8でどうのこうの
の通りコード変換を行うのでとりあえず大丈夫。
ポイントは use encoding の役割。
・ソースコードの文字コード指定(Perl がソースを解釈する際、この文字コードから UTF-8 に変換)
・標準入出力の文字コード指定(STDIN, STDOUT に対する入出力をこの文字コードに変換)
の 2 つ。つまり、>>112 のコードでは
ソースコードでは euc → Perl 解釈時に UTF-8 に変換(よってis_utf8($x)が真) →
print で(STDOUT)に出力される時点で再び euc に変換
という流れ。詳しくは perldoc encoding 参照。
0137nobodyさん
04/04/11 08:29ID:???パッケージだとかモジュールだとかについて詳しく知りたければ、「続・初めてのPerl」を
読むといいかもしれない。
正直この本に「続・初めてのPerl」とタイトルをつけるのは間違ってるという気もするけどね。
表表紙も「Perl オブジェクト、リファレンス、モジュール」っていう副題の方が文字でかいし。
>>134
細かいことだけど、正確には同じファイル上で、じゃなくて同じブロック(の前方)で、だよね。
0138nobodyさん
04/04/11 10:29ID:???ファイルスコープはブロックじゃないので、より正確には
<q>
my と local は、変数 (my の場合) やグローバル変数の値 (local の場合)
を、それをとり囲むブロック、サブルーチン、eval 、またはファイルの中が
有効範囲となるように宣言する。<cite>駱駝本 2nd Edition 2.6.8</cite>
</q>
だね。
0139nobodyさん
04/04/11 12:37ID:e6FKOv37foreach(keys(%a)) { $i++ } のように一個一個数えていくしかないのでしょうか?
0140nobodyさん
04/04/11 12:41ID:???0141nobodyさん
04/04/11 13:10ID:e6FKOv370142nobodyさん
04/04/11 13:53ID:e6FKOv37クラスでインスタンス毎に別個の値を保存したい連想配列があるのですが
どういう風に実装すればいいのかわかりません。
以下のようなコードだと複数のインスタンスから%aにアクセスされると
まずいことになっちゃいますよね?
my %a;
sub new {
my $self = shift;
my $obj = {
name => shift
};
bless $obj,$self;
$obj;
}
0143nobodyさん
04/04/11 14:24ID:???sub new {
my $self = shift;
my $obj = {
name => shift
};
bless $obj,$self;
$self->{HOGEHOGE} = {};
$obj;
}
0144nobodyさん
04/04/11 15:12ID:U2PVfz4j$addr = (gethostbyname("hogehoge.com"))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
binmode(S);
select(S); $| = 1; select(stdout);
print S "GET /index.html HTTP/1.0\r\n\r\n";
while (<S>) { print; }
close(S);
なんて事をやったんだが、http://hogehoge.com/index.htmlのソースが表示されるワケではなく、
HTTPヘッダが表示された。
ヘッダは良いからindex.htmlのソースを読みたいんだけど、どうやればいいのかGoogle検索してもわからん
どうやるんすか?
0145144
04/04/11 15:26ID:U2PVfz4j自分ではまだ作れないからとりあえず他人作の関数使うわ
理解は後回し
0146nobodyさん
04/04/11 15:26ID:???でなければLWP使え。
0147nobodyさん
04/04/11 15:34ID:e6FKOv37ありがとうございます
0148nobodyさん
04/04/11 17:59ID:9ah7xv1/<> ; # ! <STDIN>;
open File,"$ARGV" or print $!,"\n";
# Not ($ARGV[0] and @ARGV);
while(<File>){print;}
close File;
なぜに動くのか ???
デバックするとよけーに分からん
猿でも分かる説明 お願いします
0149nobodyさん
04/04/11 18:32ID:???<>は<ARGV>と同じ。
ファイルハンドルARGVは*最初に<>/<ARGV>を評価した時に*@ARGVの、
中身をファイル名のリストと見なし、$ARGV[0] .. $ARGV[n]を順に暗黙のうちにopenする。
中身がなければSTDINと同じ。
そして、この暗黙のopenの時$ARGVに開くファイルの名前を入れる。
ここまで分かれば>>148の動作も理解できるだろ?
つーかどのような経緯で>>148のようなコードを書くことになったのか非常に興味がある。
普通のスクリプトでそんなコードがあったら素で作者の正気を疑うぞ。
0151ちょー素人
04/04/11 19:23ID:UpvZGEBTこの使い分けの意味がよく分かりません。
サーバーによって使える言語が違うということでしょうか?
0152148
04/04/11 19:25ID:???明確な違いを知りたかったので
自分で書いてみますた
もっと分かりやすい
スクリプトあれば教えてくだされ
0155nobodyさん
04/04/11 20:53ID:???今から勉強するとしたら何を学んだほうがいいのでしょうか?
ちなみに会社ではパルとPHPがメインみたいです。
0157nobodyさん
04/04/11 21:07ID:???マジレスすると、「なにをやりたいか」による。
会社でPerlとPHPがメインなら、そっちに磨きをかけた方がいいかもしれない。
会社がその後、ASP.NETなんかに転ぶ可能性があるなら、今のうちに勉強しておくのもいいかもしれない。
それよりもそろそろPerlのコーディングの質問はこないものか。
0158nobodyさん
04/04/11 21:15ID:???>>152もこれ見て分からなきゃ「初めてのPerl」を百回読め
# 初めて<ARGV>とされた時に呼ばれる関数
sub __initialize_argv__{
unless(defined fileno ARGV){
@ARGV = ('&STDIN') unless @ARGV;
$__internal_index__ = 0;
$ARGV = $ARGV[$__internal_index__++];
open ARGV, $ARGV
or die "Can't open $ARGV: $!";
}
}
# <>;
__initialize_argv__();
<ARGV>;
あとはARGVがEOFに達すると自動的に$ARGV[$__internal__index++]をopenするというわけだ。
0163nobodyさん
04/04/11 23:31ID:???if (!-e image/$new){
mkdir("image/$new",0777);
chmod(0777, "image/$new");
}
0164nobodyさん
04/04/11 23:34ID:???0165163
04/04/11 23:42ID:???理由は
if (!-e image/$new){
が
if (!-e "image/$new"){
にするのわすれてました・・・。゚(゚´Д`゚)゚。
0166nobodyさん
04/04/12 02:29ID:???if (mkdir("image/$new", 0777)) {
chmod(0777, "image/$new");
}
elsif (!-d "image/$new") {
die;
}
0168nobodyさん
04/04/12 03:42ID:???0169nobodyさん
04/04/12 04:10ID:???0170nobodyさん
04/04/12 06:57ID:???umask効いてる時は、mkdirのパーミッション指定が効かなかった記憶がある。
0172nobodyさん
04/04/12 10:13ID:???0173nobodyさん
04/04/12 11:40ID:???0174nobodyさん
04/04/12 18:49ID:DgDkioXO(例)japan/korea どのような構文を使えばいいのでしょうか?
0175nobodyさん
04/04/12 18:50ID:???0176nobodyさん
04/04/12 18:54ID:???0177nobodyさん
04/04/12 18:57ID:???0178nobodyさん
04/04/12 19:02ID:???0179nobodyさん
04/04/12 19:38ID:???0180nobodyさん
04/04/12 19:42ID:???0181nobodyさん
04/04/12 19:57ID:???($hoge,$foo) = split /\//, 'japan/korea';
こんな感じですんでまた来てね♥
0182nobodyさん
04/04/12 20:12ID:???0183nobodyさん
04/04/12 22:06ID:???# 侮ヲ不可狽ネ頼エ
これってもちろんPerlのバグですよね?
0187nobodyさん
04/04/12 22:51ID:???PERLで「cgiを呼び出すHTML」を吐き出すcgi を作ったのですが
クエリーがうまくわたらないのです。
1.最初の(固定の)HTMLでは、ファイル中のクリッカブルマップからたとえば
test1.cgi?hogehoge
をリンクしています。
2.test1.cgiでは QUERY_STRING から hogehoge を取り出し
データファイルと照合して hogehogehoge というアイテム名を取り出してるので
HTMLファイルに、
<A href="test2.cgi?hogehogehoge> と出力させています。
3.test2.cgi では、 QUERY_STRING から hogehogehoge を取り出すようにしているのですが
ここで 空文字列しか来ていないようで、2.のHTMLファイルのリンクをクリックするとエラーです。
test2.cgi は確かに呼び出しています。
一連の動作でやるとエラーなのですが、2.のHTMLが表示された段階でブラウザにソースを吐かせ、
それを別のHTMLファイルとして起動してやると、そこからのリンクでは、test2.cgi にちゃんと
hogehogehoge が渡っています。
何か設定を忘れているでしょうか?
0188nobodyさん
04/04/12 23:11ID:???↓
<A href="test2.cgi?hogehogehoge">
0189nobodyさん
04/04/13 00:51ID:???Redhat8.0のperl5.8.0でLWP使って
レスポンスヘッダを編集したいんですが、
newの書式が分からないです。マジで。
require HTTP::Response;
$rc = '200';
$msg = 'OK';
$header = 'Accept-Ranges: bytes\n';
$header .= 'Content-Length: 186965910\n'
$header .= 'Content-Type: text/html\n\n';
$content = '';
$res = HTTP::Response->new($rc, $msg, $header, $content);
print "$res";
と書いたんですが、InternalServerErrorで進めません。
HTTP::Responseでレスポンスヘッダを編集する方法教えてください。
お願いします。
0190nobodyさん
04/04/13 01:00ID:???なんかグタグタですな。。。
use HTTP::Response;
$header =<<"EOS";
Accept-Ranges: bytes
Content-Length: 186965910
Content-Type: text/html
EOS
186 MB の HTML なんてブラクラですね。。。
0191189
04/04/13 01:04ID:???お早い回答ありがとうございます。
いや、ヘッダー情報をいじったり削除したかっただけなんで、
値はどうでも良いかと思ってテキトーに設定しました。気をつけます。
0192nobodyさん
04/04/13 07:51ID:???Windowzで「ヌルポ」と文字化けします。
これってもちろんPerlのバグですよね?
0193nobodyさん
04/04/13 08:21ID:OVsnEkWRTEXTAREAの内容について改行の処理をしようとすると
数字の羅列になってしまいます。
$msg = $FORM{'msg'}; #バッファからセット。URLデコード済。
# $msg = ~ s/\r\n/<BR>/g;
この状態だと「$msg」の中身はちゃんと文字列になっているのですが
下のコメントをはずすと途端に数字の羅列になります。
(文字列を変えても同じ数字になります。)
どうすればこの状態を回避できるでしょうか?
0194nobodyさん
04/04/13 08:29ID:???$msg =~ s/\r\n|\r|\n/<BR>/g;
このようにコーディングしてみたらいけました。
0196nobodyさん
04/04/13 15:08ID:???何かちゃんとした名前があったような気がしたんだけど。
何だっけ。
カタカナ4文字でスがついたような気がする。
0197196
04/04/13 15:09ID:???名前がなかったかも。
0198nobodyさん
04/04/13 15:42ID:sCIWFJ4B表示させる、ということをやっています。
番号が入っているcar_numフィールド(11番目)には
[****-****-****-****]
という形でデータが入っています。
しかし、番号確認画面でその末尾4ケタのみ表示させたいのですが、
なかなか良い考えが浮かびません。
今は以下のように書いて丸々16ケタ表示させています。
諸先輩方、アドバイスよろしくお願いいたします。
<tr>
END
if ($odr[10] == 2){
print"$odr[11]"
}
print <<END;
</td>
0200199
04/04/13 16:05ID:???エボック秒だわ
0202199
04/04/13 16:06ID:???0205nobodyさん
04/04/13 18:00ID:???抜き出してPERLで使いたいのですが、どうすれば良いのでしょうか?
例えば
$string = "FilesystemSizeUsedAvailCapacityMounted on"
の一行から、Size, Usedだけを取り出して使いたいとすると、
@pairs = split(/(\t)/, $string);
print "@pairs[1] @pairs[2]";
としても上手く行きません。(\s)*でも無理なようです。
0206nobodyさん
04/04/13 18:18ID:???print "$pairs[1] $pairs[2]";
0207205
04/04/13 18:21ID:???@pairs = split(/\t/, $string);
だと、何故か全て@pairs[0]に全文が入ってしまい、
@pairs[1]以降は空になってしまうようです。
0209205
04/04/13 18:40ID:???shellのdfコマンド出力から一行抜いてきたstringです。
dfは何を使って区切っているのでしょう?
Filesystem 512-blocks Used Avail Capacity Mounted on
/dev/disk1s9 39870600 36823240 3047360 92% /Volumes/disk1
/dev/disk3s2 320144448 267850648 52293800 84% /Volumes/disk2
0210nobodyさん
04/04/13 18:42ID:???何も調べずに的外れなコードを書く奴もDQNだが、解答する奴もそれに劣らずイカレてるな。
>>205
> データから一部の数字だけ
とあるのにコードに数字が一切ないのは何故だ?
my(@data) = ($string =~ /([A-Z][a-z]+)/g);
print "$data[1], $data[2]\n";
お前の望むことはとりあえずこれで出来るが、本当にこんなことがしたいのか?
0211nobodyさん
04/04/13 18:44ID:???$stringを切って配列に代入しようとしてるなら
$stringをprintしてみれば何区切りかわかることだろ。
0213210
04/04/13 18:50ID:???おいおい…(絶句)
もう何も言うまい。ほらよ。
my %data;
my @fileds = ('Filesystem', '512-blocks', 'Used', 'Avail', 'Capacity', 'Mounted on');
@data{@fields} = split / /, $string;
use Data::Dumper;
print Dumper(\%data);
0215205
04/04/13 19:00ID:???みたいな感じの文章出力に使う用です。
0217nobodyさん
04/04/13 19:08ID:???0218nobodyさん
04/04/13 19:36ID:???WinXP+cygwin使用
$ df -h /cygdrive/c | perl -MData::Dumper -ne 'print Dumper split /\s+/'
$VAR1 = 'Filesystem';
$VAR2 = 'Size';
$VAR3 = 'Used';
$VAR4 = 'Avail';
$VAR5 = 'Use%';
$VAR6 = 'Mounted';
$VAR7 = 'on';
$VAR1 = 'c:';
$VAR2 = '74G';
$VAR3 = '39G';
$VAR4 = '35G';
$VAR5 = '52%';
$VAR6 = '/cygdrive/c';
0219205
04/04/13 19:40ID:???で出来ました。ありがとうございます。
0220nobodyさん
04/04/13 23:40ID:???187で質問した者です。
WEB動作環境は勤め先にあるので返答が遅れました。(アクセス制限がかかってるので)
ここに書いた例が間違っていて、実物はちゃんとダブルクォート閉じてました。
いろいろやってみて、どうも
A. CGIが出力したHTMをそのまま(連続で)表示した場合と、
B. それをソース表示して「保存」し、改めて表示した場合で
振る舞いが違うようです。こんなことがあるのかいなと思うのですが...
A.B.のHTMでは、hrefを使って別のCGIを引数つきで呼んでます。
そのCGIを、サーバにあった ENV.PL(環境変数を表示するやつらしい)と換えてみると
Bで表示される環境変数の多くがAでは出てこず、QUERY_STRINGもありませんでした。
(空文字列でなく、環境変数そのものが出て来ない)
ひょっとするとPERLの問題ではないかもしれませんが、スレ違いなら誘導してください。
明日はサーバーを変更してやってみます。
0221nobodyさん
04/04/14 00:50ID:???x <A href="test2.cgi?hogehogehoge">
o <A href="http://〜/cgi-bin/test2.cgi?hogehogehoge">
0223nobodyさん
04/04/14 06:12ID:???回答ありがとうございます。
最初の例では詳しく書いていませんでしたが、どちらのCGIの参照も
http:// から記述してます。(厳密には場所は一段違うところ)
222もそういう主旨ですよね?
0224nobodyさん
04/04/14 15:57ID:???CGI: Common Gateway Interface part 11
http://pc5.2ch.net/test/read.cgi/php/1055597189/
0225nobodyさん
04/04/14 19:03ID:ALtQW+6b187,220,223です。
誘導ありがとうございました。実は、サーバー変更(自分のPCでAN HTTPD走らせて)したら
問題なく環境変数が渡りました。問題のあったサーバーはNT+IISです。
どうもCGI機能まわりのようなので、あちらで聞いてみます。お騒がせしました。
0226nobodyさん
04/04/14 20:57ID:1L/HDnzJこちらへ質問させて頂きます。
a.pl
b.pl
というスクリプトで、a.plからb.plへ標準出力で引数を渡し
b.plで受け取った引数を加工して、同じく標準出力で
a.plへ返すには、どうすれば良いのでしょうか?
open(FD,"./b.pl data1 data2 |");
という感じでやってみたのですが、a.pl⇒b.plへ
うまく渡されません。
どなたか、ご教授お願い致します。
0227nobodyさん
04/04/14 21:06ID:???0228226
04/04/14 21:38ID:1L/HDnzJ0229nobodyさん
04/04/15 14:38ID:???@<<< @<<<<<< @<<<<<< @<<
$a $b $c $d
.
write;
で出力される物を掲示板などのhtmlに出力したいのですがどうすればいいでしょか?
print format DATA;
みたいなアホな事してみましたがやはりエラーです。
ぐぐっても該当しそうな記事がみつからないし図書館のperlクックブックは
貸し出し中・・
先輩方よろしければお助けください。
0230nobodyさん
04/04/15 15:06ID:???0231229
04/04/15 15:19ID:???0232nobodyさん
04/04/15 17:41ID:???format =
@<<< @<<<<<< @<<<<<< @<<
$a $b $c $d
.
write;
formatは半角スペースでレイアウトするからhtmlへ出力するなら
<pre>で囲んで使うとかしないと。
固定ピッチになって間が抜けて見えるから掲示板には向かない気がするが。
0235233
04/04/15 22:16ID:???あ、writeでエラーになるってことね…。
format DATA =
@<<< @<<<<<< @<<<<<< @<<
$a,$b,$c,$d
.
$~ = 'DATA';
write;
0236nobodyさん
04/04/15 22:22ID:???0237nobodyさん
04/04/16 03:04ID:OgytMPQdkey $hash
key %$hash
と色々やってみたのですが 「keyの引数はハッシュじゃないとダメ」とエラーになります
0238nobodyさん
04/04/16 03:09ID:OgytMPQd0239nobodyさん
04/04/16 03:19ID:5vM41xl8なぜでしょう?
0241nobodyさん
04/04/16 03:27ID:5vM41xl8どのような記述をすると初期値に戻ってしまうのか
教えて下さいませ
0242nobodyさん
04/04/16 03:35ID:???そもそもそういう質問をすることからして何か勘違いしてる可能性もあるが。
0243nobodyさん
04/04/16 03:45ID:5vM41xl8役立たずですね
0244nobodyさん
04/04/16 03:56ID:???暇つぶしなだけ
0245nobodyさん
04/04/16 03:59ID:2Due2Uz0早く寝ろ
0246nobodyさん
04/04/16 04:03ID:???漏れは今起きた
0247nobodyさん
04/04/16 04:03ID:???0248nobodyさん
04/04/16 05:09ID:5vM41xl8自力で解決しました。
役立たずさんは早く寝てください。
0249nobodyさん
04/04/16 06:03ID:???0250nobodyさん
04/04/16 06:56ID:???>なぜでしょう?
これでどう解決すればいいんだよ
き違いはイラク行ってろ
0251nobodyさん
04/04/16 09:58ID:???0252nobodyさん
04/04/16 10:28ID:???0253nobodyさん
04/04/16 10:33ID:???0254229
04/04/16 10:48ID:???>>233
>>234
みなさん、ありがとうございました。うまく出力できるようになりました。
あれから起動hddが逝って換装後os再インストなどでご報告遅れてしまいました。
>>232
ん〜そうですねぇ。間が抜けてみえちゃいますねぇ。
一応管理用のデータ表示程度に出力させたかったので御の字なんですが
本当はこれ以外の出力のさせ方しらなかったのです。
純粋にプログラム初心者なperl初心者なのでhtmlタグの知識などもほとんどなかったり。
ほかにも出力の出し方探してみようと思います。どうもでした。
0255nobodyさん
04/04/16 11:25ID:???グローバル変数の値が初期値に戻ってしまいます
なぜでしょう?
240 名前:nobodyさん 投稿日:04/04/16 03:24 ID:???
>>239
そうなるようなコード部分があるから
241 名前:nobodyさん 投稿日:04/04/16 03:27 ID:5vM41xl8
>>240
どのような記述をすると初期値に戻ってしまうのか
教えて下さいませ
242 名前:nobodyさん 投稿日:04/04/16 03:35 ID:???
初期値を代入した部分が再度実行されれば戻るでしょ。
そもそもそういう質問をすることからして何か勘違いしてる可能性もあるが。
243 名前:nobodyさん 投稿日:04/04/16 03:45 ID:5vM41xl8
>>242
役立たずですね
0256nobodyさん
04/04/16 11:39ID:TQSKBaOOhttp://anonymouse.ws/anonwww.html
↑これみたいに、URLクリックしたら串刺さった状態で該当サイトに飛ぶようなスクリプト探してるんですが、
こんなのって普通に配布されてるんでしょうか?
だとしたらどういう検索ワードで探せばよいか教えてほしいんですけど・・・
0257nobodyさん
04/04/16 12:35ID:???>>1
http://pc5.2ch.net/test/read.cgi/php/1078568723/
0259nobodyさん
04/04/16 22:59ID:???お恥ずかしい初歩的なミスですが、?の後のクエリーを全角文字で書いてました。
受け側もデコードとかしてなくて、それでもクエリーはちゃんと読めて、思ったとおりの
HTMを出力していたのですが、その時点で正常ではなかったようで、そこから飛ぶ
先の環境変数が壊れていました。
誘導してもらった先でも報告しました。報告ですのでマルチポスト御容赦。
0260nobodyさん
04/04/17 00:14ID:???コマンドラインオプションをつけてplファイルを起動したいのですが
perlでコマンドラインオプション引数を受け取る方法がわからないのです。
たとえばデバック用にコマンドラインオプションであらかじめpl内の変数を
設定しておいてフラグを立てたり、logファイルの読み込みディレクトリを
変更したりしたいのです。
そういうことはできないのでしょうか?アドバイスいただければ幸いです。
0262260
04/04/17 01:16ID:???さっそくやってみます。
0263nobodyさん
04/04/17 08:40ID:???掲示板のファイル名取得コードが
$file =~ /\/([\s\S]*)\./;
となっている為、相対パスでlog/log.txtなどの場合は正常に取得できるのですが
絶対パスでH:/bbs/log/log.txtなどの場合は正常に取得できません。
正規表現を調べて
$file =~ /*\/([\s\S]*)\./;
$file =~ /*.\/([\s\S]*)\./;
$file =~ /.*\/([\s\S]*)\./;
$file =~ /.\/([\s\S]*)\./;
みたいな事もやってみたのですが文法エラーだったり目的通りに動いてくれなかったりで
気づけば朝。
こういった場合どういうようにしたらいいのでしょうか?
0264nobodyさん
04/04/17 10:15ID:???絶対パスが他のサーバのファイルだとしたら笑いますよ。
0265nobodyさん
04/04/17 10:16ID:???正規表現を勉強する。
http://www5a.biglobe.ne.jp/~n_rieko/perl/8.htm
0266263
04/04/17 10:34ID:???今自鯖立てていろんな掲示板設置して掲示板弄ったりして
変数やら制御構文やら関数やらを覚えてるんですがその過程で
掲示板のファイル名やlogなどのファイル名を一括表示できる
cgiを作りたいなと思いまして。
>>265
まさに今そのHP見ながら勉強させてもらってるんですが
無い知恵絞って出てきたのが上の文です。
これでいけるはずだ!と思って書いてみてもミスると次どうすればいいのかも
思いつけなくて・・。
0267nobodyさん
04/04/17 10:42ID:???プログラミングは
1 これでいけるはずだ
2 やっぱ駄目。
3 直して1に戻る。
の繰り返しなので、2で止まってしまう人は、お金出して他人に任せなさい。
0268263
04/04/17 10:55ID:???分かりました。お金出して他人に任せ・・たくないので1にもどります。
とりあえず寝ます。ありがとうございました。また何か詰まったら質問させてください。
0269nobodyさん
04/04/17 11:07ID:???最近、Perlの気持ちになってないヤシが多いよ。
0270nobodyさん
04/04/17 11:19ID:???そんなことない?
$file =~ /.*\/([\s\S]*)\./;
俺ならこれに何か付け足す。
あとはガンガレ。
0271nobodyさん
04/04/17 11:29ID:???$
0273nobodyさん
04/04/17 12:31ID:???$file =~ /.*\/(.+)\./;
/だけならいいけど、\まで対応すると一気に面倒なんだよなぁ。
全角とか半角カナが。(SJISね)
0274nobodyさん
04/04/17 14:20ID:ksEVTWBi「&」 … @pairs = split(/&/,$buffer);
と
「=」 … ($name,$value) = split(/=/,$pair);
でデータ切ると思いますが、これを別の文字にできますか?
「&」を「<>」とかに替えてみて、GETだと出来たんですが
POSTで渡すとき強制的に「&」になるようでデータを渡せませんでした。
POSTの時「&」意外にする方法はあるのでしょうか。
お願いします。
0275nobodyさん
04/04/17 14:58ID:???http://pc5.2ch.net/test/read.cgi/php/1055597189/
0276nobodyさん
04/04/17 20:32ID:???./Hoge/Foo.pm
というモジュールを作り、
package Foo;
use strict;
@ISA = qw(Hoge);
としたのですが、
Can't locate Hoge.pm in @INC (@INC contains: /usr/...とか色々
と怒られてしまいます。また、
use Hoge;
としている./aho.plでも、useの行で
BEGIN failed--compilation aborted at …
と怒られてしまいます。
おそらくHoge.pmの位置というか、そのような物が悪いのだと思うのですが、
どう直せばいいんでしょうか?
らくだ本では、Hoge::Fooは./Hoge/Foo.pmを表すって書いてあったと思うんですが…。
0277nobodyさん
04/04/17 21:01ID:???#--- ./Hoge.pm ---
package Hoge;
sub new { return bless {}, shift }
1;
#--- ./Hoge/Foo.pm ---
package Hoge::Foo;
use base 'Hoge'; # base.pm のヴァージョンが古いとコケる場合がある
# use Hoge; push @ISA, 'Hoge'; # その場合の代替策
sub foo { print 'foo!' }
1;
#--- ./script ---
#!/usr/bin/perl
BEGIN { print map "[$_]\n", @INC } # @INC に . が存在するか確かめる
use Hoge::Foo;
Hoge::Foo->new->foo;
__END__
0278nobodyさん
04/04/17 21:08ID:???http://www.kt.rim.or.jp/~kbk/perl5.005/perlfaq8.html#How_do_I_add_a_directory_to_my_i
0279nobodyさん
04/04/17 22:03ID:???が
package Foo;
となっていました…。
フルパスというか、祖先も全部書かないと駄目なんですね。
ありがとうございました。
0280nobodyさん
04/04/17 22:33ID:???./Hoge/Foo.pm の中身は package Foo; でも package Bar; でも
構わないが、use は実際のディレクトリ構造に従って Foo.pm を
探すので、./Hoge 内に置いている限り use Hoge::Foo; とする
必要がある。
0281nobodyさん
04/04/18 16:47ID:P05Ai4P1当方レンタルCGIを運営しておりまして
某スクリプトを使用させていただいているんですが(現在配布中止)
なんか背景に画像を設定しても出ないというバグが発生してるんです。
$btagu = '<BODY BGCOLOR="' . $para[8] . '" BACKGROUND="' . $bground . '" TEXT="' . $para[10] . '" LINK="' . $para[11] . '" ALINK="' . $para[12] . '" VLINK="' . $para[12] . '">';
画像はちゃんとアップされてて、画像を背景にしたはずのページのタグにも
ちゃんと画像のファイル名が入っているのですが画像が表示されないで
色が出てきてしまうんです
この状態だと、画像が入ってた場合色よりも画像のほうが優先されるはずなんですが
されないんです。
画像ファイルが入ってた場合に色よりも画像を優先させることはできませんか??
0282nobodyさん
04/04/18 16:52ID:???ちなみに、まったく同じHTMLタグで.htmlファイルとしてアップすると
背景は表示されるんです
それが、掲示板などのCGIファイルになると表示されません
0283nobodyさん
04/04/18 16:59ID:gbPENzjB0284nobodyさん
04/04/18 17:06ID:???>281-282
パーミッション関係が怪しいと見た。
>282は全く同じフォルダで試してる?
0285nobodyさん
04/04/18 17:07ID:???全く同じHTMLで結果が異なるなら、Perlのコーディングの問題じゃありません。
Web製作板向けですのでお帰りください。
0287nobodyさん
04/04/18 17:54ID:wgfpZXEV一定時間(24時間とか1週間とか)ごとにスクリプトを自動実行させたいんですが、
perlから可能なんでしょうか。
ここかモジュールスレかCGIか迷ったんですが、perlからの呼び出しなので
とりあえずここで。
0288nobodyさん
04/04/18 17:58ID:???アクセスがあった時に前回の自動実行から一定時間以上過ぎていたら実行をさせる。
これを聞いてイメージが湧かないなら無理。
0289nobodyさん
04/04/18 18:04ID:???レスありがと。
静的なHTMLに一定期間ごとに情報を負荷していくCGIなので、CGI呼び出しは
一般ユーザーからは行われない。自分でCGI叩くなら自動じゃなくて手動だ(笑)。
サーバーの負荷のことを考えると、SSI埋め込みとかimg埋め込みで毎回CGI
起動するのはやりたくない。
放置しておいても更新されていくようにしたいんだけど・・・無理かな。
0291nobodyさん
04/04/18 18:13ID:???perlから呼び出したいし、自宅のレスト環境はWindowsだから、環境にあまり依存
しない汎用モジュールでもないかな・・・モジュールスレいったほうがいいですか?。
0292nobodyさん
04/04/18 18:18ID:???レンタルサーバじゃまず無理。
どうしてもやりたければ、Windowsにタイマー仕込んで、一定期間ごとにCGI呼びにいかせろ。
0294nobodyさん
04/04/18 18:30ID:???・・・ないよなあ。そうは思ったが、この世界、物好きが組んでたりするんで、
わずかな可能性にかけたかった(笑)。
おとなしく別の手を考えます。
でも「いや、できるぞ」って方がいらっしゃったら情報よろしく。
0295nobodyさん
04/04/18 18:33ID:???自動実行の定番ぐらい(ry
0296nobodyさん
04/04/18 19:25ID:???my $time = time();
while(1){
if((time() - $time) >= 3600){
処理;
$time = time();
sleep 3599;
next;
}
sleep 1;
}
# 共有鯖でやるべからず
0297nobodyさん
04/04/18 19:39ID:???0298nobodyさん
04/04/18 19:46ID:2RoBAPGK0299nobodyさん
04/04/18 19:46ID:???0300nobodyさん
04/04/18 20:18ID:???0302nobodyさん
04/04/18 21:13ID:gbPENzjBなんつースクリプトや…
0304nobodyさん
04/04/19 09:42ID:???0305nobodyさん
04/04/19 11:29ID:???表示させるcgiをつくりたいのですが。
2. こんな風にやってみた。
#!/usr/local/bin/perl
$folder = ./hoge/
opendir(DIR, '$folder') or die;
@file = sort readdir(DIR);
closedir(DIR);
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P> フォルダの中身 </P>\n";
foreach (@file){
print $_, '<BR>';
}
print "</HTML>\n";
exit(0);
3.普通にエラーになる・・。
改善方法ありますでしょうか・・。
0306nobodyさん
04/04/19 11:47ID:???とりあえず2行目はいきなり syntax error になるだろうな
0308nobodyさん
04/04/19 11:55ID:???何を見て書いたコードなのかは知らないが、せめてエラーメッセージの確認ができる環境で試すべし。
0309305
04/04/19 14:24ID:???これで一応syntaxはOKになるんですが表示されません。。
#!/usr/bin/perl
$folder = "./hoge/";
opendir(IN, "$folder") or die;
@file = sort readdir(IN);
closedir(IN);
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>フォルダの中身</P>\n";
foreach (@file){
print $_, '<BR>';
}
print "</HTML>\n";
exit(0);
0310nobodyさん
04/04/19 15:01ID:???俺のところではそのコードでちゃんと動く。
コーディング以外の部分を疑うべきだろうな。
例えばディレクトリのパーミッションとか。
0312305・309
04/04/19 15:44ID:???フォルダ名間違ってた・・・。
ごめんなさい。逝ってきます。
0313nobodyさん
04/04/19 16:06ID:???〜 or die; とするぐらいならどうしてもう一歩すすめて 〜 or die "適当なメッセージ: $!"
としないのか...
0314nobodyさん
04/04/19 16:46ID:???print "Content-type: text/html\n\n";
の前に鰓が出て、「ぷりめちゃ〜」って出るからなんじゃなぁい?(w
0315nobodyさん
04/04/19 17:03ID:???@array を : で2つに分けて片方だけ表示したいのですが。
下記のように記述してみましたが、できませんでした。
書き方が違うのだと思います。
教えていただけませんか?
while (@array){
($hour, $min) = split (/./, "$array[$_]");
}
print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
foreach (@array){
print $hour[$_],\n;
}
今のままだと動作がものすごく遅くて
結局最後にエラー表示がでてしまいます。
一応、文法的な間違いはないようですが・・・・・・。
0316nobodyさん
04/04/19 17:05ID:???0317nobodyさん
04/04/19 17:07ID:???>@array を : で2つに分けて
意味がわからん
>while (@array){
>($hour, $min) = split (/./, "$array[$_]");
>}
これはどういう処理してるつもり?
0318nobodyさん
04/04/19 17:17ID:ZjO/sTltたかし
たろう
こういち
さぶろう
よしゆき
みたいなテキストファイルがあって、
それを読み込んで
「ぬるぽ」をHTMLから送信すると
ぬるぽ
たかし
たろう
こういち
さぶろう
よしゆき
見たいな感じにテキストファイルの一番上の列に
書き出すことはできますか?
またできるのでしたらその方法を教えていただけますか?
0319nobodyさん
04/04/19 17:21ID:???print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
foreach (@array){
($hour, $min) = split (/:/);
print $hour,"<br>\n";
}
0320nobodyさん
04/04/19 17:26ID:???http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq5.html#How_do_I_change_one_line_in_a_fi
0322nobodyさん
04/04/19 20:05ID:FJ2iv18Nそのまま標準出力にバイナリーデータとして返すにはどうすればよいのでしょうか。
読み込むにはbinmodeを呼び、通常通りreadにて$???で受け取ってよいのでしょうか、
またバイナリーをアウトプットする関数名を教えて下さい。
0323nobodyさん
04/04/19 20:14ID:???0325nobodyさん
04/04/19 20:22ID:???とりあえずパスワードを変えることでしのいだのですが、
管理画面のログをとりたいと思っています。
CGIをいじったことはあまりないのですが、
管理画面(admin.cgi)の2行目くらいにreqireでアクセス解析のCGIを指定してやればいいのでしょうか?
よろしくお願いします。
0327323
04/04/19 20:29ID:???誤爆した
0328nobodyさん
04/04/19 21:10ID:BDbOGV6Pperlで掲示板を作成しました。
掲示板の内容はログに書込まずにDB(PostgreSQL)に書込まれるようにしました。
出力するときにDBから取り出して、値を $変数 =~ s/\r/<br>/g;
という処理にして表示させると、改行はされますが、改行位置に<br>が付いた状態で表示されて
しまいます。<br>を非表示にして表示できないものでしょうか?
0329nobodyさん
04/04/19 21:13ID:???open(FILE,"ファイル名");
binmode(FILE);
binmode(STDOUT);
print <FILE>;
close(FILE);
0331nobodyさん
04/04/19 21:53ID:???とりあえず、アクセス解析ぐらい(admin.cgi)とやらに自力で書き加えれる程度の知識つけて
実際に書き加えてみろ。
そんで、うまく動かないとか、なんか困っ時にまた来なさい。
話はそれからだ。
0334nobodyさん
04/04/20 20:34ID:???あいまいだな
0335nobodyさん
04/04/20 21:07ID:???$変数 =~ s/\r/<br>/g;
$変数 =~ s/</</g;
$変数 =~ s/>/>/g;
ってなってて <pre> で囲まれてるんじゃない?
0336nobodyさん
04/04/20 21:56ID:yCtk22ceをperlで書く場合は
( x >= 1) and ( x <= 100 )
と書けば動きますが、もっとスマートな書き方ってあります?
0337nobodyさん
04/04/20 22:14ID:Z+bRhQSh0338nobodyさん
04/04/20 23:56ID:???控え用にあるccが機能しません。
管理者用に届くメールのccに書いたほうのメールアドレスが
書いてあることには書いてあるんですが届かないのは
どんな理由が考えられますでしょうか?
0339nobodyさん
04/04/21 00:36ID:???0342nobodyさん
04/04/21 02:51ID:???0343nobodyさん
04/04/21 03:12ID:???0344nobodyさん
04/04/21 03:23ID:???0345nobodyさん
04/04/21 03:40ID:???0346nobodyさん
04/04/21 13:55ID:hvmubjIuopen F,'test.txt';
flock F, 1;
$data = <F>;
close F;
$data++;
open F,"+<test.txt";
flock F, 2;
truncate F, 0;
print F $data ;
close F;
}
これを、2プロセスで実行すると、+2000になる予定ですが、+2000になりません。
printの前に seek F,0,0; を入れると期待通り+2000になるのですが・・・。
どうしてでしょうか?
0347nobodyさん
04/04/21 14:26ID:???http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq5.html#I_still_don_t_get_locking_I_jus
0348nobodyさん
04/04/21 15:41ID:???カウンタファイルを読むのと書くのをそれぞれ別のロックにしたら
相手の操作に割り込まれ放題だから2000にならないのは不思議
でもなんでもないが、seekを入れただけで2000になるのはとても
不思議だ。オレにはわからん。
0349nobodyさん
04/04/21 15:45ID:???my $fh = 'FILE';
open($fh, '< file.txt') or die $!;
のように。
0350nobodyさん
04/04/21 15:58ID:???http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq5.html#How_can_I_use_a_filehandle_indir
0351nobodyさん
04/04/21 22:29ID:dqfm18bp$data = "example";
この時にprint "$change";とすると$dataと出力されてしまうのですが、
この時exampleを出力させる様にするにはどのようにしたら良いでしょうか?
どなたかご教授お願い致します。
0352351
04/04/21 22:29ID:???0353336
04/04/21 22:30ID:???( $x >= 1) and ($x <= 100 )
に関して言えば、可読性からもこれでいいのかな。
レスくれたひとサンクス。
0354nobodyさん
04/04/21 22:30ID:???0355レファランス使え
04/04/21 23:08ID:???$change = "data";
$data = 'example';
print $$change,"\n";
$change = \$data;
$data = 'example';
print $$change,"\n";
0356nobodyさん
04/04/21 23:21ID:???$change = '$data';
$data = "example";
print eval $change;
0357nobodyさん
04/04/21 23:23ID:???0358351
04/04/22 00:03ID:???早速組み込んでみた所、期待通りの動作をしました。Perlにもポインタの様な物が実装されているんですね。
これを機にevalの使い方も覚えました。ありがとうございました。
0359nobodyさん
04/04/22 00:20ID:???いくつかのファイルをループ処理でまとめて読み取り、
$dat[ファイルNo.][n行目]
のように一つの2次元配列に格納しようとしています。
@dat[$i] = <FH>;
openした直後に上記のようなコードを入れましたが、
どうも配列は1次元のままで、各ファイルの一行目しか配列に格納してくれませんでした。
どなたか2次元で格納させるヒントをご教授ください。
0360nobodyさん
04/04/22 00:27ID:???0361nobodyさん
04/04/22 00:29ID:???関数やサブルーチンからの戻り値をそのまま return する時に
return \(value()) とかやっているのですが、
例えば複数の値の場合に return [values()] で配列のリファレンスを返せるように、
無名スカラーがあれば良いのになあと。
0363361
04/04/22 00:31ID:???0364nobodyさん
04/04/22 02:12ID:???かな?
0365nobodyさん
04/04/22 09:00ID:???無名スカラーって無名スカラーリファレンスってことか?
ハッシュや配列と違って、無名スカラーリファレンスをを作る構文的なサポートは無い。
苦肉の策だが my $anon_sref = do{ my $o; \$o } などとしているな。
しかしこの場合は\(value())ではいけないのか?何か不満か?
0366nobodyさん
04/04/22 12:18ID:???無いのであれば、今まで通りにする事にします。
0367nobodyさん
04/04/23 20:15ID:???はじめの文字がaだった場合とそれ以外で読み込むフォルダを分けたいと
思っています。
以下のように記述したのですが、エラーが出てしまいました・・。
どこ違っているのかわからないので、指導お願いします〜。。
$IMAGE = sprintf("%01d/%01d/%04d",$a,$b,$c);
if ($a eq a){print "<IMG src=\"image/$a$b$c.gif\">;
}else{print "<IMG src=\"img/$a$b$c.gif\">";}
また、1.1.残りと分けたいのですが、画像ファイルの名前が4〜6文字とランダムなのですが、上の書き方だとだめなんですよね・・?
どうすればいいんでしょうか?
0368nobodyさん
04/04/23 20:17ID:???最近アクセス解析CGI作ったから require で呼び出せるように書き換えて
提供してやろうか?
いるなら捨てアドさらせ。
さらしてから書き換えに2〜3日掛かるからその後送ってやる
0369nobodyさん
04/04/23 21:00ID:???print $IMAGE =~ /^A/ ? "<IMG src=\"image/$IMAGE.gif\">" : "<IMG src=\"img/$IMAGE.gif\">";
0370nobodyさん
04/04/23 21:04ID:???>$IMAGEに書かれている文字を、sprintfで文字を3つに(1.1.残り)に分けて
使う関数が目的に合っているかよく調べろ。
>$IMAGE = sprintf("%01d/%01d/%04d",$a,$b,$c);
これじゃあ$a,$b,$cを指定のフォーマットにして/をはさんだ文字列として
$IMAGEに代入する式だ。
こんなのでもいいだろ。
$a = substr($IMAGE,0,1);
$b = substr($IMAGE,1,1);
$c = substr($IMAGE,2);
0371369
04/04/23 21:12ID:???0373nobodyさん
04/04/24 12:42ID:ftCx7p610374nobodyさん
04/04/24 13:44ID:???0375373
04/04/24 14:07ID:???0376nobodyさん
04/04/24 15:41ID:???自分で使う分には構わないって事でファイナルアンサーしてたような。
CPANに登録するのなら英語(Ascii?)で書かかないと。
http://www.perldoc.com/perl5.8.0/README.jp.html
http://search.cpan.org/~nwclark/perl-5.8.4/README.jp
EUC-JPで化けるみたいだしね。
# UTF-8だといけるのかな?
0377373
04/04/24 21:14ID:???お陰で彼女が出来ました
0378nobodyさん
04/04/25 11:23ID:KCQtln8X例えば、MOD_A.pm と MOD_B.pm を自作して
MOD_A.pm 内のソースで use MOD_B; を宣言
MOD_B.pm 内のソースで use MOD_A; を宣言
cgiプログラムを作ってるんですが、そのcgiプログラムの中で
use MOD_A;
use MOD_B;
とかやりたいんですがどう?
もっとさらに言うと、MOD_A.pm の中で自分自身を
use MOD_A;
とかやっても大丈夫ですか?
0379nobodyさん
04/04/25 11:41ID:???0380nobodyさん
04/04/25 11:42ID:???0381nobodyさん
04/04/25 14:33ID:???相互 use、自己 use とも無限ループにはならない。
ttp://www.perldoc.com/perl5.8.0/pod/func/use.html
ttp://www.perldoc.com/perl5.8.0/pod/func/require.html
ただし、自己 use することに何の意味もない。
さらに、相互 use することにも意味がない。
>378 の例だと CGI の中の use MOD_B; と、MOD_B.pm の中の use MOD_A; は
あってもなくても変わらない。
とりあえず、相互に use するような設計がおかしいので考え直せ。
0382nobodyさん
04/04/25 21:00ID:???HTMLでの " は \" になることは知っているので、そうしたのですが、
! や ? の記号の前にも \ が必要なのですか?それとも他の記号なのでしょうか?
0383nobodyさん
04/04/25 21:06ID:???話はそれからだ。
0384nobodyさん
04/04/25 22:15ID:???cgiで文字列の出力をしようとしているのですが、500エラーがでます。
" は \" になることは知っているので、そうしたのですが、
! や ? の記号の前にも \ が必要なのですか?それとも他の記号なのでしょうか?
0386nobodyさん
04/04/26 16:42ID:NLGfQi9Fディレクトリに、Basic認証もしくはDigest認証をかけて
/private/secure.cgi
へアクセスをした場合に、ユーザ名・パスワードを引数として
渡すには、どうやったら良いのでしょうか?
どなたかご教授、お願い致します。
0387nobodyさん
04/04/26 17:04ID:???パスワードを CGI に引き渡すのは
少なくとも現行の CGI というインタフェースを使う限りでは
原理的に不可能です。
これは Perl コーディング上の制限ではなく
CGI というインタフェース仕様上の制限です。
CGI 以外の方法なら、
例えば mod_perl を使って PerlAuthenHandler を組むやり方であれば
Apache Request オブジェクトの get_basic_auth_pw() メソッドを使って
パスワードを取得することができます。
0388386
04/04/26 17:18ID:NLGfQi9Fレスありがとうございます。
REMOTE_USERでのユーザ名引き渡し、確認できました。
パスワードはやはり無理ですか...
ユーザ名だけを利用して(重要な部分へは再認証という形で)
対応していきます。
0389nobodyさん
04/04/26 17:45ID:8MkOGNrLエラー処理ができなくて困っております。
例えば、
my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;port=$port", $user, $password, {RaiseError => 1, AutoCommit => 0}) || print "error";
これで$dbnameが存在していないものを指定すると、printにいってくれず、
Internal Server Errorが出てしまいます。↓error_log
DBI connect('dbname=--;port=--','',...) failed: FATAL: database "--" does not exist at --.cgi line --
ご教授いただけませんでしょうか。
宜しくお願いします。
0391nobodyさん
04/04/26 18:11ID:???横槍入れるようだが、同じパスワードで何回認証しても意味ないと思うんだが。
ユーザー名は追跡の為に追うこともあるだろうけど。
0392nobodyさん
04/04/26 18:24ID:???ユーザ名とパスはリクエストヘッダAuthorizationで渡されるから拾えばいい。
例えば.htaccessで
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule test.cgi test.cgi$1 [e=HTTP_CGI_AUTHORIZATION:%1]
($scheme, $data) = split (' ', $ENV{'HTTP_CGI_AUTHORIZATION'});
if ($scheme eq 'Basic') {
$data = &decode_base64 ($data);
($ENV{'REMOTE_USER'}, $ENV{'REMOTE_PASSWORD'}) = split(':', $data);
}
sub decode_base64 {
my ($str) = "@_";
my ($res, $len) = "";
local($^W) = 0;
$str =~ tr|A-Za-z0-9+=/||cd;
if length($str) % 4;
$str =~ s/=+$//;
$str =~ tr|A-Za-z0-9+/| -_|;
while ($str =~ /(.{1,60})/gs) {
$len = chr(32 + length($1)*3/4);
$res .= unpack("u", $len . $1 );
}
return ($res);
}
print "Content-type: text/html", "\n\n";
print "$ENV{'HTTP_CGI_AUTHORIZATION'}<br>\n";
print "$ENV{'REMOTE_USER'}<br>\n";
print "$ENV{'REMOTE_PASSWORD'}<br>\n";
0394nobodyさん
04/04/26 18:39ID:???ちょっと間違った
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule test.cgi test.cgi [e=HTTP_CGI_AUTHORIZATION:%1]
sub decode_base64 {
my ($str) = "@_";
my ($res, $len) = "";
local($^W) = 0;
$str =~ tr|A-Za-z0-9+=/||cd;
$str =~ s/=+$//;
$str =~ tr|A-Za-z0-9+/| -_|;
while ($str =~ /(.{1,60})/gs) {
$len = chr(32 + length($1)*3/4);
$res .= unpack("u", $len . $1 );
}
return ($res);
}
0396nobodyさん
04/04/26 21:22ID:BWwI4BSicgiでcss文書を吐き出したいんですが、Content-type:text/cssと最初につけておけばよいのでしょうか?
infoseek iswebでこれをやると広告がついてきてcssとして使えなくなるんですが、普通にうpしたcssファイルはhttpでgetできます。
この差はCGI作り手側のミス?それとも拡張子cgi=広告付加とかCGI作り手側じゃどうしようもないものですか?
0397nobodyさん
04/04/26 21:28ID:???0399nobodyさん
04/04/26 23:30ID:???そうでしたか…失礼。
0400nobodyさん
04/04/27 17:46ID:m4JuDEBr0401nobodyさん
04/04/27 17:51ID:???0402nobodyさん
04/04/27 17:56ID:m4JuDEBrできるだけ早く処理できる方法があったらお願いします。
0403nobodyさん
04/04/27 18:04ID:???できるだけ待ち時間を短くするための工夫としては、
ソケットを non-blocking で開いて並列で処理する、ぐらいか。
0404nobodyさん
04/04/27 20:01ID:D2O5MFhmprint "content-type: text/html\n\n";
open(TEST, "sub/test.htm");
while (<TEST>) {
print $_ ;
}
close(TEST);
exit;
ローカルではうまくいくのですが、サーバーに上げて実行してみると上手くいきません。
0406nobodyさん
04/04/27 20:14ID:???それに「うまくいかない」で読んでるやつがどうなったかわかると思うか?
0407nobodyさん
04/04/27 22:30ID:???先頭にtime値を書き込んで、新しい方を読み,古い方に書く
2重ファイル方式を取入れたのですが、ログが消えた時はそのままでした。
flock考やperlメモのやり方でもたまに飛ぶので(ローカルでは書き込みプログラムを何個走らせても飛ばないんですが…)
バックアップ的にこのやり方を導入したいんですが、アドバイス願えないでしょうか?
0408nobodyさん
04/04/27 22:36ID:???並列で処理しないとロックの検証にはならないよ。
でなきゃ鯖の問題だな。
0409nobodyさん
04/04/27 22:55ID:???0410nobodyさん
04/04/27 23:00ID:???同じ値になるだろ
0411nobodyさん
04/04/27 23:01ID:???0412404
04/04/28 00:18ID:2okML1Hbですがまた問題が発生しました。
sub/test.htmから<n月>という文字列がある行をマッチさせたいのですが、下のようにすると
ローカルではマッチするんですが、サーバーに上げるとマッチせず。。。
print "content-type: text/html\n\n<html>";
open(TEST, "sub/test.htm");
while (<TEST>) {
if ($_ =~ /<.*?月>/) {print $_;}
}
close(TEST);
print "</html>";
exit;
4行目を
if ($_ =~ /<(.*?)月>/) {print $_;}
に書き換えるとローカルでもサーバーでもマッチします。なぜでしょうか。
0415nobodyさん
04/04/28 01:00ID:???何だ釣りだったのか?
釣りを楽しむ余裕が
今はある!!!
誘導くらいしてあげるよ
http://pc5.2ch.net/test/read.cgi/php/1069245758/l50
0418nobodyさん
04/04/28 01:59ID:???回答ありがとうございました。
>>408
5台くらいで鯖マシンに(perlの)duke撃ちまくってテストしました。
>>409
現在携帯からなので無理ですが
perlメモのロックの部分とflock考えの奴をそれぞれやりました。
>>410
そうでした…
ただifの条件に合わないと、elseで指定されている方を読み込みますし大丈夫なのでは?
サイトの方は日に200くらいの書き込みで、そんなに多くは無いんですが、
2,3ヵ月に1回は飛んでしまいます。
逆にtopのカウンタは2重ファイルってだけで
ロックは使って
0420nobodyさん
04/04/28 06:01ID:???落ちたりしたらログ飛ぶわなあ。
0421nobodyさん
04/04/28 07:36ID:???そういう可能性もあるんですね。
読み書き両用でopenして…と思いましたが、どっちみちサイズを0にした時点で落ちたら意味無いですよね…
ツリー型なので700件残るようにしてますが、少し多いづしょうか?サイズは130KBくらいです。
0424nobodyさん
04/04/28 16:05ID:S7OIBKMs`halt`;
----------------------------------------------
以上のスクリプト実行しても鯖ダウン出来ませんでした。
どうやったら鯖ダウンできますか?
0425nobodyさん
04/04/28 17:32ID:???0426nobodyさん
04/04/29 00:19ID:DqcSI5IGindex.htmlがあるとしてこの中の一部にxxx.cgiを表示したいのですが
どぅやったら表示出来るのでしょう?
表の中に表示させたいのですがインラインフレームしかありませんか?
0427nobodyさん
04/04/29 00:27ID:???板違いです。
0429nobodyさん
04/04/29 13:25ID:???0432nobodyさん
04/04/29 14:59ID:???0433nobodyさん
04/04/29 20:58ID:???htmlをcgiに取り入れたら?
0434nobodyさん
04/04/29 21:11ID:???0435nobodyさん
04/04/29 22:36ID:???use Pgのgetvalueみたいなものはuse DBIにないのでしょうか。
すみませんがご教授いただきたいです。
0436nobodyさん
04/04/30 01:19ID:???0437nobodyさん
04/04/30 01:52ID:???DBIスレの方がちゃんと知ってる人が多いと思う
http://pc5.2ch.net/test/read.cgi/php/1015943725/
0438nobodyさん
04/04/30 03:25ID:SiN+gHBLバッククオートで外部プログラムを実行し、標準出力を受け取りたいと考えてます。
$tmp = `/usr/bin/wget -d http://example.com/test.cgi?d=domain\&p=password -O -`
このとき、アンパサンド「&」をエスケープできません。( http://example.com/test.cgi?d=domain でwgetが実行される)
どうすればよいでしょうか。
perl -v > This is perl, v5.6.1 built for i386-linux.
シェルで/usr/bin/wget -d http://example.com/test.cgi?d=domain\&p=password
はちゃんとgetの長いメッセージとして実行できてます。
GETはやめてPOSTにしろ、はなしでお願いします。。
0439nobodyさん
04/04/30 10:18ID:???かなり卑劣かも。
$tmp = q|http://example.com/test.cgi?d=domain&p=password -O -|;
$tmp = `/usr/bin/wget -d $tmp`;
0441nobodyさん
04/04/30 10:46ID:???俺には真似出来ねえ。
0442442
04/04/30 17:56ID:G+Ai2Hl9このようなxmlファイル(test.xml)があったとして、
-------------------------------------------------
<?xml version="1.0" encoding="Shift_JIS"?>
<data>
<member num="01">
<name>AAA</name>
</member>
<member num="02">
<name>BBB</name>
</member>
</data>
-------------------------------------------------
その中から、「AAA」と「BBB」を取り出すには
perlどのように書けばよいのでしょうか?
↓から続きがかけません・・
-------------------------------------------------
#!/usr/local/bin/perl
use XML::Parser;
:
:
:
print $name01; #AAA
print $name02; #BBB
-------------------------------------------------
0443nobodyさん
04/04/30 18:34ID:???google って知ってる? とっても便利だから使ってみなよ。
http://www.google.co.jp/search?lr=lang_ja&q=perl+XML%3A%3AParser
0444442
04/04/30 18:51ID:???ttp://member.nifty.ne.jp/hippo2000/perltips/xml/parser.htm
とか良さそうだったのですが、解説を呼んでもいまいちよくわかりませんでした・・
0445438
04/04/30 20:25ID:???必ず直前で変数に固定値を代入するので、変数るのを納得しときます
0446nobodyさん
04/04/30 22:38ID:???バッククォートでは変数展開とかがかかるので、\& が & になった状態でシェルに渡されてる。
なので、\\& にしても通るとは思うんだが、>440 のようにシングルクォートを使う方が素直だと思う。
0447nobodyさん
04/04/30 22:54ID:5VEFp/rmポートチェックってどうやったらできますか?
掲示板の荒らし対策に80と8080のチェックしたいんです。
ググってもいいページが見つからないんで・・・
できればスクリプトごとお願いします。
0450nobodyさん
04/04/30 23:45ID:???とりあえず Socket.pm のマニュアルでも読めば。
0451nobodyさん
04/05/01 00:12ID:???0452nobodyさん
04/05/01 00:43ID:???0453nobodyさん
04/05/01 01:09ID:fGFxpvHE/ . : : : : : : : : : \
/.: : : : : : : : : : : : : : ヽ
,!::: : : :,-…-…-ミ: : : : :',
{:: : : : :i '⌒' '⌒' i: : : : :}
{:: : : : | ェェ ェェ |: : : : :}
. , 、 { : : : :| ,.、 |:: : : :;!
ヽ ヽ. _ .ヾ: :: :i r -ニ-┐ | : : :ノ
} >'´.-!、 ゞイ! ヽ 二゙ノ イゞ‐′
| −! \` ー一'´丿 \
ノ ,二!\ \___/ /`丶、
/\ / \ /~ト、 / l \
/ 、 `ソ! \/l::::|ハ/ l-7 _ヽ
教 え ろ や ? あ ? コラ ?
0454nobodyさん
04/05/01 01:10ID:fGFxpvHE, - ' ゙ `` ‐ 、_,,,,,
,r' /=ミ
/ 彡ll',''´
. / 彡lll
!-- .、 ,、、、、,,, 彡lノ
l,,,,,__ / ___ 'r''゙ヽ
. |`゙'' ./ `'゙'''" .〉,l |
|. ,' //
. ',. ,' , r'
. ゙, ゙'ー ‐` l |
゙、''゙ ,,、二''‐ ノ l、
''''''''7'ヽ ''' / /`〉`゙T''''''''''
l ` 、,,,,、- ' " / /.| |
. | | .l i / ./ | |
| | | l / ./ .| |
. | | | l / / | |
| | | ', / / l .l
0455nobodyさん
04/05/01 01:10ID:fGFxpvHE,..-──- 、
/. : : : : : : : : : \
冒 /.: : : : : : : : : : : : : : ヽ
l l ,!::: : : :,-…-…-ミ: : : : :',
./〜ヽ{:: : : : :i '⌒' '⌒' i: : : : :} _______
|__| {:: : : :.| ェェ ェェ |: : : : :} /
. .|| �d.|| { : : : :| ,.、 |:: : : :;! < とんちゅーみねーりらろっとおブ
/| of||_.ヾ: :: :i r‐-ニ-┐| : : :ノ \
|  ̄ -!、 ゞイ! ヽ 二゙ノ イゞ‐′  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| −! \` ー一'´丿 \
ノ ,二!\ \___/ /`丶、
/\ / \ /~ト、 / l \
/ 、 `ソ! \/l::::|ハ/ l-7 _ヽ
/\ ,へi ⊂ニ''ー-ゝ_`ヽ、 |_厂 _゙:、
∧  ̄ ,ト| >‐- ̄` \. | .r'´ ヽ、
,ヘ \_,. ' | | 丁二_ 7\、|イ _/ ̄ \
i \ ハ�� |::::|`''ー-、,_/ /\_ _/⌒ヽ
0456nobodyさん
04/05/01 01:11ID:fGFxpvHE●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●死 ね●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
0457nobodyさん
04/05/01 01:13ID:fGFxpvHEi1llllllii ,..-‐''" ̄~゙" ̄ ̄ミヽ──ー,
;;ll,;:" i ヽ.、ヽ;=、/
,/ l ヽ ゙i、 ゙、:、゙、;;
/ :' l : i !. ゙、 !l !,゙, ゙:,
l, ; . ; i !i : :, }i!、 ', ! l l :!:.;:'; i ミィは最強なんだよっ♪
l.;.; : ;: l liヾ、 , .;}, Lj-ヾ ;.; l l :l ;: : l
j!;.;; : ;: }:、ゝ、ヾ、゙ jリ.,. ..,,ヾj : .:rl ; : .!
!l; ;; .; ; l. ,,,,、ヾ、ツレ' i;;';;;;゙jL; ゙:,゙:, ; ; l
|,:l;, ':, ; ;l,,l!i';;゙;, ヾ-'',j ; ;;' l.゙i、; l
| ;l;':,', ;, '!ヾ.`''' , ,ォj,;:'' ; !l;:; l
| ;.!'l !゙,ヾ:「~;,、 ー ノi'' ;' ,ノ;; ,l
;l.; i ;.!l゙;ヾ,ヽ、;, `''ー ..,,_,. ::'ノ;.},,. 、,;'"; ;:; ;l
;'i ; ! ; i! ヾ; :、リ,, -::''"::l::i!::/;'.j、ヽ、j:::::ブヽ、!
;' !,' i ; ;; rヾ,:,゙; l:::::::::::::ヽi!フ;ノl'ヽ、,.ノ:;:" ヽ,
,:'.;',' j,.、!'ヾ‐- ゞ、;゙ト、;::::::::::ソ/::! .|:i ゙!,
,' ,'.;,rヾ .ヽ ヽ......:::ヽi!'::゙ヾ-''リ^7 l/-、 .jヽ
,' ;;'.;r゙、 ヾ、j ゙"::::::::;;:::l:::::::::;メ:::::!. i ゙i ,;^ヾ;,
. ,' ,;',,'.;'i、'l'┘:::::::::::::::l':;:::!::::::::::::!::;' !. i!,.:;i ;, .lヾ:;,
,:' ,' //,! ゙':::::::::::::::::::::!ノ::::.!:::::::::::;,l. !. ,:';;::|, :;: 'l ゙;,゙;
;' ,;:'/ ;'/ :::::::::::::::::::::i"::::::.|:::::;,;;'イ l , ':::::::|,: ; ! ヾ:.,
0458nobodyさん
04/05/01 01:13ID:fGFxpvHEi., ..;;;ヽ ヾ ,,;_ , /
ヾ_:::,:' -,ノ
ヾ;. , , 、;,
;; ● , ... 、,● ;:
`;. C) ,; ' うるせー!パンチ5分の2を教えろ!!
,;' '.、 -‐-ノ ,;'、
/ ) _ _
/ ,イ 、 ノ/ ∧ ∧―= ̄ `ヽ, _
/ / | ( 〈 ∵. ・(ミィ〈__ > ゛ 、_―
| ! ヽ ー=- ̄ ̄=_、 (/ , ´ノ
| | `iー__=―_ ;, / / /
!、リ -=_二__ ̄_=;, / / ,'
/ / / /| |
/ / !、_/ / 〉
/ _/ |_/
ヽ、_ヽ
0459nobodyさん
04/05/01 01:15ID:fGFxpvHE/ / λ / / λ
/ / λ / / λ
/ / /λ / / /λ
/  ̄ ̄ ̄ \
/ / \ \
/ / \ \
/ / \ 丶
| |
| |
| | PERLオタクを殺す会
| ^――――――― /
| /
\ /
/―/ / / \/;;;;;;;\////////―\
0460nobodyさん
04/05/01 01:16ID:fGFxpvHE....:::..∧Y∧ .
.::::::::. ・ ・ ::ヽ
( )●( ) このスレは終了しました
丶 ー /
l, j
i i .j
| 八 |
{ }
| i し " i '|
|ノ ( i i|
( '~ヽ ! ‖
│ i ‖
| ! ||
| │ |
| | | |
| | | |
| ! | |
0461nobodyさん
04/05/01 01:45ID:???+
人
0462nobodyさん
04/05/01 08:27ID:???ただし、Internal Server Errorはさけたいと思っています。
つまり・・・
if (?????){
print "flock 使用可能";
}
else{
print "flock 使用不可能"
}
とさせたいのですが。。。
よろしくお願いします。
0463nobodyさん
04/05/01 08:53ID:???0464nobodyさん
04/05/01 13:21ID:???sub new {
my $class = shift;
my %params = @_;
my $self = {
sex => male,
};
bless $self, $class;
$self->initialize();
return $self;
}
で、Bakerに、外部からアクセスできる変数$skill (パン屋の腕前)と、内部でのみ使用する変数
$east (イースト菌 $east = new East()とかやりたい)を持たせたい時、
どうするのが賢いやり方なのでしょうか?
$eastの方は、ブロックの一番外でmy $eastと宣言したのでいいのだろうか、と思うのですが、
$skillの方は、$self->{skill} = $skillとかやっても、Humanのnewでblessした後なので、
途中で勝手に$selfのキーを増やしたりできるんだろうか、と思いまして…。
0465nobodyさん
04/05/01 15:45ID:???関係ないっつーかそういう風に
継承でハマることを避けるために
newとinitializeをわけてるんじゃないの?
Bakerの
initializeでskillとeastのキーを増やしておく。
skillのアクセサを作る。
eastのアクセサを作らないもしくは内部使用に限定する。
$baker->skill;
$baker->_east;
0466nobodyさん
04/05/01 16:33ID:???initializeはblessした後に呼び出される訳ですよね?
blessした後に$selfのキー勝手に増やしても大丈夫なんでしょうか…。
0468nobodyさん
04/05/01 18:49ID:???いや、動くプログラムと良いプログラムは違うっていうか、
動くのは試したんですが、何らかの理由があって推奨されない方法なら
別のアプローチを探さないと、と思いまして。
普通に使われてる方法なら良いのですが…。
0469nobodyさん
04/05/01 19:03ID:???| ・・・・・・・・・・・・・・・
\
 ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(;;::::: )
,/;/⌒/)
//;: /;:: /./
(;::::|;:: (;: (/
\);;:::.\;\
(;:: ( (<<<ヽ
.|;: |\;::::\
);:: | );:::: )
_、_
(;;:::::,_ノ` ) 彡 マーシェーリィー… !
,/;/⌒/)
//;: /;:: /./
(;::::|;:: (;: (/
\);;:::.\;\
(;:: ( (<<<ヽ
.|;: |\;::::\
);:: | );:::: )
0470nobodyさん
04/05/01 19:04ID:???(/ "つ`..,:
:/ :::::i:
:i ─::!,,
ヽ.....::::::::: ::::ij(_::●
r " .r ミノ~
:|::| ::::| :::i ゚。 ・・・トゥートゥートゥマシェリー・・・
:|::| ::::| :::|:
:`.| ::::| :::|_:
:.,' ::( :::}:
:i `.-‐"
:ヽ__::',__ ::|:
:{ ::| ::|:
:| ::| ::|:
__ _,, -ー ,,
(/ `..,つ
/ ::::::', マーシェーリー♪
i ● ●:!
ヽ... ( .● )::/ 彡くるっ
r ":::::::.... ,,_ ─:/
|::| ::::r ̄:i
|::| ::::| :::|
`.| ::::| :::|_
.,' ::( :::}
i `-‐"
ヽ__::',__ ::|
{ ::| ::|
0471nobodyさん
04/05/01 19:05ID:???/::::::::::::::::::::::::::::::::゙:、
. /:::::::::::::::::::,r-:::::::::::::::::゙::、
.. ,l':::::::::::::::::::/-〃゙゙''''''゙\:::::::゙、
l:::::::::::::::::::,l' ll'l ゙l;:::::::l,
,;:::::::::::::::::::l .ll.l.. l:::::::::l
,ィ:::::::::::::,r-- '''''--=-'l''=-''り::::l
〃::::::::::::::l' ゙ - ' ;. l゙ - ' l::::::l ここのスレには…
ソ::::::::::::::::l , ア__,.l,.('' .t:::::j'
. l::rk:::::::::::::゙l ,..'゙-、=-:,.゙ t ゙レ 書き込まないで…ほしいです…
ゝj:::::::,、::::::゙、 ; -==ヲ'弋''''{ ゙l,
,.-'::;==' ノ::::::::>'~::::゙=、_,l,.;'゙^'''゙l. ゙、
....,.='' ,,〃'ヘ:::/:::::::::::::::::゙l爪. l,
,.r'',:,:,:,:,:,^~",:,:,:,:,:,:,:7'''',=';,''''ヘ:ノ爻゙、 ,.=''-、
k,:,\、,:,:,:,:,:,:,:,:,:,l,:,:,:,:/ (ふ勺 ,''l' j::l ゙l,-='',:,:,:,:,:,:゙、
,l',:,:,:,:゙、,:,:,:,:,:,:,:,:l,:,:,:,:l---===,,'.j^~:::l ,-゙,:,:,:,:,:,:,:,:,:,:,゙、
/,:,:,:,:,:,:,゙、,:,:,:,:,:,:j,:,:,:,:,:l l':::::゙ュ), l.,' ;::;,/,:,:,:,:,:,:,:,:,:,:,:,:,:,:,ヘ
j,:,:,:,:,:,:,:,:,:,゙、,:,:,:,:,l,:,:,:,:,:,k:::::::ヒ_l .;:::ll,:,:,:,:,:,:,l,:,:,:,:,:,:,:,:,:,:,ハ
,l,:,:,:,:,:,:,:,:,:,:,:,z,:,:,:,l,:,.,. '^.、::_:j':::::::::::::::::::l,:,:,:,:,:,:,:\,:,:,:,:,:,:,:,:,:,:,\
0472nobodyさん
04/05/01 19:05ID:???/ ,,,z-──ュ‐-、
/,,ミミミミ,,r-‐'' リ \
//~ | ゙i
i/ ┛┗ | |
f | ┓┏ ヽ |
| | リ r-、
| | `ヽ/「ワ,| こんな感じで頼みます・・・
リ ,,,r==、 ,,r===ュ、 ┐ソ
゙i -=◎=-ヽ i−я−- ` ン }
゙i ヽ--‐ .| l `'─‐'" ノ ト‐/
| /l l 、 ,/ ├‐'゙
.|、 ノr' レ ヽ¬、,,.... -‐ |
゙iヽ‐' ヽ,,,,,r''´ ノ |
ヽ ト‐==─イ~、 / .ト、
\ ヽ  ̄__:::‐' y ノ
\ ` :: , '
`ー--──'"-'
0473nobodyさん
04/05/01 19:08ID:???/ /-‐=、''" ', ! ト -ヽ__ ヽl \ ヽ
, ' ,イ. ジ.l7! ゙、|ヽ | ,r.‐、!,.`` ! , |、 \! ゙,
/ /! !. |':l ヽl l7l i | 'l ヽ !
/ / イ. ` , .l'ノ !. i i \ |
, ' / ! /// < /// ! | ゙、 `ヽ、 ,'
-="-ァ i ヽ rァ─- 、 _| / ゙、 ヽノ
i ! i \. .,,___,,.) / |/ ゙、
l , r | ` 、 _ ,. べ | 、 ヽ
ヽ/ヽ、 | .`l ""´ l . ヽ/ _,)``
ヽ.」 ___,./ ' ´ ___ `ー 、_ / ,ノレ'
,.r '´ ー-` '´ - ‐  ̄ `'ー 、
,/ _,. ヽ
,レ' ´ i l
/ , ,l l
。'i ! r',ヽ l l l
,、r;, i'゙ ! ヾ'-' l. l l
_,r'´、l.レ'、 '、 , '、 ,/ l ,.!v-、,_
l L.., } ! ハ、 , ‐' ヽ、 ノ /! /`,/_,l L,
l゙l ヘ」/ l. / `''┬ ' ´ `'ー----- '´ ,/ l / !:イ、_ノ l、
アダルトとPERLは禁止
0474nobodyさん
04/05/01 19:09ID:???/::::::/:::::::_,,,、---‐‐'''`~,、-''/::/ /"`'ー-''`''-、これなんのAA・・・?
/:::/:-‐''''"~~::::::::;;;;-、,,,,、-,,、-‐ヽ,,_ / ヽ
;/;;'`"~、-''''''~^'''''ー-、_,,i:i、 ヽ`ヽ、;ヽ、,,,ノ. /"´ ̄~''/ ::::ヽ
;;;/~":、---、___/´ ,,i:''' :: ヽ. ヽ.`'''"´ /´ :::./ :::::::i
;;;;;'''''^~~~~^'''''/ー- ';、 ::: ` ヽ`''ー-,,,i_ -‐''" ::::::::;/-、,
;;;、;;;`''ー-,,,,,,,,,,,,,,_,,,,,、_ '' ',:::: `'ー _、-'''~ ̄`''''''ー-、 :::::;/:: ヽ、
;;;ヽ、ー、;;ー-、,,,,,,,、-‐''" .;´ ̄`, ',::::,,,,、- /"'::;,:ヽ 、 ヽ.::::::: ''ー
:::::ー、ヽ、,,''ー-ヽ.''''",.,;' "^' 'ー-‐'' . _、-'''''"´ / ヽ,,,ノ ヽ| ヽ:::: ::
:::ヽ、`''ー-、ー-、'ヽ"、i;. ヽ /" i::: i: '::: :::::
、::ヽ;;ヽ、:ー-、,,,,,、.ヽ ';'' ノノノ/;/ i:::::::::: υ " :::
ヽ,,_::''‐、,,,,''ー-''ー-"''/~'"''"/:/:: ::、:::i..:::::::::::::::::::::::::::::::::::: :::::::::
ヽー''"~´ ヽ、 "`'i::::::::i、:.. :~^ヽ:::::::::::::::::::::::::::::ノ:::::::::::::::i'/::::::::::::::::::::::
~´ ::: :::::::::;;;;;; ;;;;;;;;;;;_,,、--、_i.::::::'ノ:::::::: `''ー-、,,,,,,,,,,‐'":::::::::υ::::υ::::::::::::::::::::::
ヽ'''''''''''''' '' :::::;;;;;;;;;;;;;;;;`-、:::::::::::::::::iノ::::::::::: """`''ー、,,_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0475nobodyさん
04/05/01 19:10ID:???i., ..;;;ヽ ヾ ,,;_ , /
ヾ_:::,:' -,ノ
ヾ;. , , 、;,
;; ● , ... 、,● ;:
`;. C) ,; ' うるせー!パンチ5分の2を教えろ!!
,;' '.、 -‐-ノ ,;'、
/ ) _ _
/ ,イ 、 ノ/ ∧ ∧―= ̄ `ヽ, _
/ / | ( 〈 ∵. ・(ミィ〈__ > ゛ 、_―
| ! ヽ ー=- ̄ ̄=_、 (/ , ´ノ
| | `iー__=―_ ;, / / /
!、リ -=_二__ ̄_=;, / / ,'
/ / / /| |
/ / !、_/ / 〉
/ _/ |_/
ヽ、_ヽ
0476nobodyさん
04/05/01 19:10ID:???....:::..∧Y∧ .
.::::::::. ・ ・ ::ヽ
( )●( ) このスレは終了しました
丶 ー /
l, j
i i .j
| 八 |
{ }
| i し " i '|
|ノ ( i i|
( '~ヽ ! ‖
│ i ‖
| ! ||
| │ |
| | | |
| | | |
| ! | |
0477nobodyさん
04/05/01 19:50ID:???「blessした後に$selfのキー勝手に増やしても大丈夫か否か」という
問いに対し「何故試さない?」という答えなんだが…。>>464 だけでは
君がどう実装しているか分かりかねるので、善し悪しを尋ねられても
誰も答えられんだろう。
OO 設計に関するノウハウを知りたければ、その手の本なりサイトを
一通り読んだ方が、こんな処で一問一答してるより早いんじゃないか?
もしくはこの板なら下のスレ辺りに動くコードを晒して揉んでもらう
事を勧める。
http://pc5.2ch.net/test/read.cgi/php/1049514428/
http://pc5.2ch.net/test/read.cgi/php/1016474386/
0478nobodyさん
04/05/01 21:32ID:???http://www.kt.rim.or.jp/~kbk/perl5.005/perlbot.html#INSTANCE_VARIABLE_INHERITANCE
0479nobodyさん
04/05/01 21:38ID:???>464
bless は単に型付けするだけだから、その後、キーを増やそうがその事自体に問題はない。
ただし、基底クラスで利用しているキーとぶつかったりしたら問題を引き起こす可能性はあるけどな。
ちなみに、一度 bless した後、別のクラスに bless し直すことだって可能なんで、bless を神聖視する
必要はない。
個人的には C++ 使いなので、派生クラスの new の中で基底クラスの new を呼ぶ方が好きだなぁ。
ttp://www.perldoc.com/perl5.8.0/pod/perltoot.html#Overridden-Methods
でも、この辺は Perl らしく TMTOWTDI なんで好みに合わせればいいと思う。
0481nobodyさん
04/05/02 15:15ID:???finishしないと まずかったりしますか?
今書いてるソース、すべてつけていないもので、、、
0482nobodyさん
04/05/02 15:20ID:???0483nobodyさん
04/05/02 20:05ID:???;;;;;;;/:::::::::::::::::::// 、,, /" /;;;;-'" |:::::||;;;;;;/:::::::::::/ レ'''" /;;;;;;
;;;;;/::::::::::::::::::// ゙丶、. / /;;;-'" ,,-、 |::::||l;;;;/:::::::/ l /ヽ/ノ
;;;/::::::::::::::::::/{、''''''‐-、, ゙ヽ, /;/ .i' o=-‐'|;;;/:::::/ ┬-'' 、 /;;;
;;/:::::::::::::::::/;;;\ヽ┬-、゙'ヽ、 | lヽ,//ヽ、,,-‐''~,-‐'''''|;;/:/ //ノ;; l ト, ヽ/;;;;
/::::::::::::::::/;;;;;;;;;;;\ \\゙'ヽ、l ヽ"゙'" ゙-'",-''"~ |/ //" l |ヽ /;;;;;;
:::::::::::::::::{;;;;;;;;;;;;;;;;;\ \\( ol|" "-'" " | ヽ /;;;;;;;;;;
::::::::::::::::::|;;;;;;;;;;;;;;;;;;;;;\ ゙‐‐'''"~/ /゙''ヽ .| /;;;;;;;;;;;;;;
i,::::::::::::::::|;;;;/|;;;;;;;;;;;;;;ヽ'"~ / _ /ヽ、 \ ノ /;;;;;;;;;;;;;;;;
;゙i:::::::::::::::|/ |;;;;;;;;;;;;;;;;;;゙、. / // / /-゙i,. ヽ /./;;;;;;;;;;;;;;;;/::
;;;;i,::::::::::::| |;;;;;;;;;;;;;;;;;;;;;;ヽ ヽ、-'"'''"‐''",,-''",/ ゙i, //;;;;;;;;;;;;;;;;/::::
;;;;゙i,:::::::::::| |;;;;;;;;;;;;;;;;;;;;;;;;;\ ヽ\'` _/~" ,ハ / /;;;;;;;;;;;;;;;;;|:::::
;;;;;;゙i,:::::::::|''" |;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙ヽ、 \'{,,,-‐'"__ノ / i;;;;;;;;;;;;;;;;;;;|:::::
;;;;;;;;;゙、::::::| |;;;;;;;;;;;;;;;;;;;;;;;∧;;;;;;;;;;;;゙ヽ、 ヽ-‐'"~ ,,, /ヽ、i';;;;;;;;;;;;;;;;;;;|::::::
0485nobodyさん
04/05/02 22:02ID:v1LUOZxNヒアドキュメント内で配列(@data)を出力したくて、そのまま@dataとヒアドキュメント内に書いたのですが
謎の半角スペースが要素の一番最初に付いてしまいます。
これじゃあな、と思いヒアドキュメント内に${ foreach my $data ( @data ) { print $data; }
と書いてみたのですがヒアドキュメントの一番最初に出力されてしまい上記コードを書いた場所に出力されません。。。
どなたかヒアドキュメント内で配列を出力する良い方法を知っていたら、ご指導して頂けると幸いです。
0486nobodyさん
04/05/02 22:05ID:???or
chomp(@data);
0487485
04/05/02 22:21ID:???なるほど、$"でスカラー変数出力時の区切り文字を変更できるんですね。
試してみたら奇麗に出力出来ました。本当にありがとうございました。。。
0488485
04/05/02 22:24ID:???今まで一々ヒアドキュメントを終了させてからforeachで出力していたので本当に助かりました。。。
0489nobodyさん
04/05/03 00:22ID:???0491nobodyさん
04/05/03 01:11ID:???_ /- イ、_
__ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
| ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | // |/ /::ノ
| ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
(___) / / // /\ /
/ / /
↑初心者 Perlオタク↑
\ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ Perlオタクを!首吊って引き殺せ━━━━━!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終 了了了><書き込み禁止>
0492nobodyさん
04/05/03 01:12ID:???_ /- イ、_
__ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
| ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | // |/ /::ノ
| ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
(___) / / // /\ /
/ / /
↑初心者 Perlオタク↑
\ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ Perlオタクを!首吊って引き殺せ━━━━━!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終 了了了><書き込み禁止>
0493nobodyさん
04/05/03 01:14ID:???_ /- イ、_
__ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
| ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | // |/ /::ノ
| ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
(___) / / // /\ /
/ / /
↑初心者 Perlオタク↑
\ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ Perlオタクを!首吊って引き殺せ━━━━━!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終 了了了><書き込み禁止>
0494nobodyさん
04/05/03 01:14ID:???_ /- イ、_
__ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
| ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | // |/ /::ノ
| ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
(___) / / // /\ /
/ / /
↑初心者 Perlオタク↑
\ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ Perlオタクを!首吊って引き殺せ━━━━━!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終 了了了><書き込み禁止>
0495nobodyさん
04/05/03 01:15ID:???_ /- イ、_
__ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
| ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | /=^ |/ /::ャm
| =@ ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
(___) / / // /\ /
/ / /
↑初心者 Perlオタク↑
\ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ Perlオタクを!首吊って引き殺せ━━━━━!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終 了了了><書き込み禁止>
0496nobodyさん
04/05/03 03:58ID:???0497nobodyさん
04/05/03 04:33ID:???0498nobodyさん
04/05/03 04:41ID:???0499nobodyさん
04/05/03 04:48ID:???て言うかこいつ一年くらい前からいるんですよ。
0500nobodyさん
04/05/03 05:18ID:???0501nobodyさん
04/05/03 05:29ID:???確か誰にも理解できない日本語で質問(っていうか書き込み)して、
無視した(っていうか何を答えたらよいか誰も分からなかった)ら、
「初心者には不親切だ」って勝手に切れて粘着してる。
ちゃんと質問すればちゃんと答えるのにねえ。
0502nobodyさん
04/05/03 12:58ID:???よく続くと関心するくらいだ
たしか格ゲースクリプトだっけな
0503nobodyさん
04/05/03 13:22ID:???punch *= 2.0/5.0;
終了
0504nobodyさん
04/05/03 14:42ID:???0505nobodyさん
04/05/03 14:45ID:???0506nobodyさん
04/05/03 20:26ID:???来てたのわからなかった。
0508nobodyさん
04/05/04 12:04ID:???たまにアク禁されるのかパタリと来なくなるんだよね。
でもそういう時、あいつどうしてるんだろう・・・とちょっとモヤモヤして気になるんだよ。
0509nobodyさん
04/05/04 16:43ID:???0510nobodyさん
04/05/04 18:59ID:???エラー表示されるまでに時間がかかります。
(ブラウザがアップロードに専念しているため)
つまりはブラウザのアップロード処理を中断させて、
即エラー表示させたいのですが、Perlで制御できますか?
0512nobodyさん
04/05/04 19:33ID:???ISDNのおじさんブチ切れますよ?
初めからファイル容量計算しろ
0513nobodyさん
04/05/04 19:49ID:???0514nobodyさん
04/05/04 19:55ID:???_ /- イ、_
__ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
| ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | // |/ /::ノ
| ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
(___) / / // /\ /
/ / /
↑初心者 Perlオタク↑
\ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ Perlオタクを!首吊って引き殺せ━━━━━!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終 了了了><書き込み禁止>
0515nobodyさん
04/05/04 19:56ID:???_ /- イ、_
__ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
| ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | // |/ /::ノ
| ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
(___) / / // /\ /
/ / /
↑初心者 Perlオタク↑
\ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ Perlオタクを!首吊って引き殺せ━━━━━!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終 了了了><書き込み禁止>
0516nobodyさん
04/05/04 19:57ID:???_ /- イ、_
__ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
| ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | // |/ /::ノ
| ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
(___) / / // /\ /
/ / /
↑初心者 Perlオタク↑
\ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ Perlオタクを!首吊って引き殺せ━━━━━!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終 了了了><書き込み禁止>
0517nobodyさん
04/05/04 19:58ID:???/::::::::::::::::::::::::::::::::゙:、
. /:::::::::::::::::::,r-:::::::::::::::::゙::、
.. ,l':::::::::::::::::::/-〃゙゙''''''゙\:::::::゙、
l:::::::::::::::::::,l' ll'l ゙l;:::::::l,
,;:::::::::::::::::::l .ll.l.. l:::::::::l
,ィ:::::::::::::,r-- '''''--=-'l''=-''り::::l
〃::::::::::::::l' ゙ - ' ;. l゙ - ' l::::::l ここのスレには…
ソ::::::::::::::::l , ア__,.l,.('' .t:::::j'
. l::rk:::::::::::::゙l ,..'゙-、=-:,.゙ t ゙レ 書き込まないで…ほしいです…
ゝj:::::::,、::::::゙、 ; -==ヲ'弋''''{ ゙l,
,.-'::;==' ノ::::::::>'~::::゙=、_,l,.;'゙^'''゙l. ゙、
....,.='' ,,〃'ヘ:::/:::::::::::::::::゙l爪. l,
,.r'',:,:,:,:,:,^~",:,:,:,:,:,:,:7'''',=';,''''ヘ:ノ爻゙、 ,.=''-、
k,:,\、,:,:,:,:,:,:,:,:,:,l,:,:,:,:/ (ふ勺 ,''l' j::l ゙l,-='',:,:,:,:,:,:゙、
,l',:,:,:,:゙、,:,:,:,:,:,:,:,:l,:,:,:,:l---===,,'.j^~:::l ,-゙,:,:,:,:,:,:,:,:,:,:,゙、
/,:,:,:,:,:,:,゙、,:,:,:,:,:,:j,:,:,:,:,:l l':::::゙ュ), l.,' ;::;,/,:,:,:,:,:,:,:,:,:,:,:,:,:,:,ヘ
j,:,:,:,:,:,:,:,:,:,゙、,:,:,:,:,l,:,:,:,:,:,k:::::::ヒ_l .;:::ll,:,:,:,:,:,:,l,:,:,:,:,:,:,:,:,:,:,ハ
,l,:,:,:,:,:,:,:,:,:,:,:,z,:,:,:,l,:,.,. '^.、::_:j':::::::::::::::::::l,:,:,:,:,:,:,:\,:,:,:,:,:,:,:,:,:,:,\
0518512
04/05/04 19:58ID:???おじさんマジ切れますよ?I/Oの関数みろYO!!!
@stat=stat $file;
$size=$stat[7];
if(104857600<=$size) print "100MBより多いぞゴルァ";
0519nobodyさん
04/05/04 19:59ID:???....:::..∧Y∧ .
.::::::::. ・ ・ ::ヽ
( )●( ) 初心者書き込み禁止!!
丶 ー / BY PERLオタク
l, j
i i .j
| 八 |
{ }
| i し " i '|
|ノ ( i i|
( '~ヽ ! ‖
│ i ‖
| ! ||
| │ |
| | | |
| | | |
| ! | |
0520nobodyさん
04/05/04 20:01ID:???....:::..∧Y∧ .
.::::::::. ・ ・ ::ヽ
( )●( ) 初心者書き込み禁止!!
丶 ー / BY PERLオタク
l, j
i i .j
| 八 |
{ }
| i し " i '|
|ノ ( i i|
( '~ヽ ! ‖
│ i ‖
| ! ||
| │ |
| | | |
| | | |
| ! | |
0521nobodyさん
04/05/04 20:02ID:???....:::..∧Y∧ .
.::::::::. ・ ・ ::ヽ
( )●( ) 初心者書き込み禁止!!
丶 ー / BY PERLオタク
l, j
i i .j
| 八 |
{ }
| i し " i '|
|ノ ( i i|
( '~ヽ ! ‖
│ i ‖
| ! ||
| │ |
| | | |
| | | |
| ! | |
0522nobodyさん
04/05/04 20:02ID:???....:::..∧Y∧ .
.::::::::. ・ ・ ::ヽ
( )●( ) 初心者書き込み禁止!!
丶 ー / BY PERLオタク
l, j
i i .j
| 八 |
{ }
| i し " i '|
|ノ ( i i|
( '~ヽ ! ‖
│ i ‖
| ! ||
| │ |
| | | |
| | | |
| ! | |
0523nobodyさん
04/05/04 20:03ID:???....:::..∧Y∧ .
.::::::::. ・ ・ ::ヽ
( )●( ) 初心者書き込み禁止!!
丶 ー / BY PERLオタク
l, j
i i .j
| 八 |
{ }
| i し " i '|
|ノ ( i i|
( '~ヽ ! ‖
│ i ‖
| ! ||
| │ |
| | | |
| | | |
| ! | |
0524nobodyさん
04/05/04 20:05ID:???ゲームで、対戦で、攻撃はパンチとキック、どちらかは2分の1
パンチの場合は、5回に1回はダメージ低い。
さらに5分の2の確率でミスをする。
というのを、1ターンの各攻撃を下のスクリプトに書いたが動かない
誰かこの初心者を助けてください
0525ちょっと入れ子して綺麗にしてみた
04/05/04 20:11ID:???プレイヤー1は$play11の攻撃
プレイヤー2は$play22の攻撃
$play11 = $sentaku1 //Syntax Error
$play22 = $sentaku1 //Syntax Error
$kik = 60 //Syntax Error
$sentaku ={ //Syntax Error
$play1 = int(rand 2) //Syntax Error
if($play1 == 0) $kik //Syntax Error $kikって何だよオブジェクトか?で、メソッドは?
} //Syntax Error
else($play1 == 1) { //Syntax Error Elseに条件つけんなよw
$bougyo = int(rand 5) //Syntax Error だからセミコロン・・・
if($bougyo =< 1) 0;
else($bougyo >= 2) 1;
}
{ //Syntax Error エエエエ・・・・ なにこの括弧
$panti = int(rand 5);
if($panti == 0) $panti1 = 10;
else($panti > 0) $panti2 = 20;
} //Syntax Error 括弧・・・
* $bougyo; //Syntax Error おい、オペランド足りんぞ
} //Syntax Error 括弧・・・
} //Syntax Error 括弧・・・
括弧の対応おかしいーーwww
0526510
04/05/04 20:12ID:???念のためにファイル化した後もサイズチェック。
なにかしら処理途中でレスポンスヘッダを送信できれば、
アップロードに専念しているブラウザも止められるかなぁ?
・・・と、考えつつも案が浮かばず放置している状態なのです。
0527nobodyさん
04/05/04 20:13ID:???>念のためにファイル化した後もサイズチェック。
だから、その行為がクライアントから見ると「アップロード」になるわけで・・・
CONTENT_LENGTHで判断するだけでいいだろ
0528nobodyさん
04/05/04 21:35ID:???http://httpd.apache.org/docs/mod/core.html#limitrequestbody
Apacheであれば、規定量を超えたら413(Request Entity Too Large)が
返るように設定できるけど、クライアントを止められるかどうかは不明。
同様の処理はmod_perlであればヘッダ解析フェーズで可能かも。
CGIレベルでは無いことは確か。
0529nobodyさん
04/05/04 21:56ID:???(´-`).。oO(なんで鯖までいじらにゃならんのよ・・・)
0530510
04/05/04 22:00ID:???残念だけど諦めます。
> CONTENT_LENGTHで判断するだけでいいだろ
申し訳ない。今のロジックをみたらCONTENT_LENGTHのチェックと、
STDINからデータ取得時のチェックの二段階だけだった。
0531nobodyさん
04/05/04 22:02ID:???my @attack = (
sub {
my($damage, $rate) = (100, 10);
$damage *= 1 + ((1 / 2 <=> rand) * rand $rate) / 100;
$damage *= 1 / 3 unless int rand 5;
$damage = 0 if 2 > rand 5;
'パンチ', int $damage;
},
sub {
my($damage, $rate) = (200, 10);
$damage *= 1 + ((1 / 2 <=> rand) * rand $rate) / 100;
'キック', int $damage;
}
);
for (1..20) {
print $attack[rand 2]->(), "\n";
}
0532nobodyさん
04/05/05 13:19ID:???閉じたとき」にCookieをクリアするためにはexpiresを空に、
有効期限を決めるにはexpiresを設定すればいいだけのこと
ですが、この2種を同居させることは不可能でしょうか。
つまりやりたいことは、「有効期限を設定しておいても、ブラウザ
が閉じられればCookieはクリアされる」ということです。
うまくいかないので質問させていただきました。
宜しくお願い致します。
0536 ◆Emx7X7JtuI
04/05/05 21:16ID:jTThsR/v$day = "20040505";
の時、$dayから 2004、05、05を分けて取り出すには、
$yyyy = substr($day, 0, 4);
$mm = substr($day, 4, 2);
$dd = substr($day, 6, 2);
とするしかないでしょうか?
もう少し良い方法がありましたらご教授お願いします。
0538nobodyさん
04/05/05 21:40ID:???TMTOWTDI.
# substr
my($yyyy, $mm, $dd) = (substr($day, 0, 4), substr($day, 4, 2), substr($day, 6, 2));
# unpack
my($yyyy, $mm, $dd) = unpack 'A4A2A2', $day;
# パターンマッチ
my($yyyy, $mm, $dd) = $day =~ /^(\d{4})(\d\d)(\d\d)/;
# 回りくどい方法
my @tmp = split //, $day;
my $yyyy = join '', splice @tmp, 0, 4;
my $mm = join '', splice @tmp, 0, 2;
my $dd = join '', @tmp;
0539nobodyさん
04/05/05 21:45ID:???ありがとうございます!
umpackという手がありましたね。
これでいこうと思います。
>>538
>#バターンマッチ
この書き方がよく分かってないんですよ<私
サンプルソースを写して、何となくうまくいってるって感じで(汗)
がんばって勉強します!
0541540 ◆Emx7X7JtuI
04/05/05 21:50ID:???0542nobodyさん
04/05/05 22:22ID:???.htaccessのファイルの内容を、指定したサーバーの順番に、Socketでデータと一緒にPOSTして、受け取ったCGIでそれを元の.htaccessと書き換えるという流れで逝きたいんですが、
一つのデータ送信+ファイル更新用の親CGIと、受信+ファイル更新用の子CGIという仕組みです。
私はPerl初心者で、今までソケットについては一切書いてないので知識が無いので、
最近ネットでPerlのSocket.pmについて調べてるんですが、どうもソケットについて詳しく解説してるサイトが無くて困ってます。
何方かSocketについての解説サイトをご教授してください。
0543nobodyさん
04/05/05 22:26ID:???0544nobodyさん
04/05/05 22:26ID:???0545542
04/05/05 22:29ID:???私自身、10つのサーバーで複数のコンテンツを公開してるので。。。
アップロードファイルがこんがらがってるのでこういうCGIを実装したいのです。
0546nobodyさん
04/05/05 22:33ID:???0547nobodyさん
04/05/05 22:34ID:???0548nobodyさん
04/05/05 22:35ID:???0550nobodyさん
04/05/05 22:37ID:???この板だけじゃないけどすんなり書き込めななくなったな。
0551nobodyさん
04/05/05 22:49ID:???http://www.accesstrade.net/at/c.html?rk=010003h3000dcb
http://www.accesstrade.net/at/r.html?rk=010008la000dcb
0552nobodyさん
04/05/05 23:24ID:???Socket.pmが使えるということは、標準モジュールが使えるのだから、
IO::Socket::INETを使えばハンドル操作だけで楽になるよ。
さらにLWPモジュール群を使えば、ハンドル操作さえ不要に。
0553nobodyさん
04/05/06 02:57ID:???前のレベルに戻すまで1ヶ月はかかるからよ
∧_∧
∧_∧ (´<_` ) 今ちょうど
( ´_ゝ`) / ⌒i 人生最大の危機に
/ \ | | 直面しているな
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ FMV / .| .|____
\/____/ (u ⊃
0554nobodyさん
04/05/06 17:07ID:???0555nobodyさん
04/05/06 18:11ID:???0556nobodyさん
04/05/06 21:28ID:???---- xml2.xml ----------------------------------------
<?xml version="1.0" encoding="Shift_JIS"?>
<data>
<shop num="01">
<name val="a">AAAshop1</name>
<name val="b">AAAshop2</name>
<tel>012-345-6789</tel>
</shop>
<shop num="02">
<name>BBBshop</name>
<tel>098-765-4321</tel>
</shop>
</data>
------------------------------------------------------
0557続き
04/05/06 21:29ID:???------------------------------------------------------
#!/usr/local/bin/perl
use XML::DOM;
$xmlfile = "./xml2.xml";
my $parser = new XML::DOM::Parser;
my $doc = $parser->parsefile ("$xmlfile");
my $nodes = $doc->getElementsByTagName ("shop");
my $n = $nodes->getLength;
for (my $i = 0; $i < $n; $i++){
my $node = $nodes->item($i);
my $attr = $node->getAttribute("num");
print $attr."-attr\n";
my $child = $node->getElementsByTagName("name");
my $nn = $child->item(0);
my $val = $nn->getAttribute("val");
print $val."-val\n";
my @child_val = $node->getElementsByTagName("name");
my $child_val = $child_val[0];
print $child_val."-child_val\n";#●
}
------------------------------------------------------
0558続き2
04/05/06 21:29ID:???01-attr
a-val
XML::DOM::Element=ARRAY(0x843e234)-child_val
02-attr
-val
XML::DOM::Element=ARRAY(0x84406fc)-child_val
------------------------------------------------------
このような表示になります。
●の部分が「XML::DOM::Element=ARRAY(0x843e234)-child_val」こうなってしまいますが
「AAAshop1」や「AAAshop2」「BBBshop」を取得するにはどうすれば良いのでしょうか?
0559nobodyさん
04/05/06 21:41ID:???今までテキストか、リストによるものだけだったんですが
今回、チェックボックスを使いたいんですが、
どのようにperl側に情報が送られてくるのでしょうか・・・。
0565nobodyさん
04/05/06 23:47ID:21UK75Lzmy @child_val = $node->getElementsByTagName("name");
my $child_val = $child_val[0];
の部分を
my $child_val = $nn->getFirstChild->getData;
0566556-558
04/05/07 10:22ID:???全文は自分で書いてませんが
ttp://member.nifty.ne.jp/hippo2000/perltips/xml/dom.htm
を参考に部分部分を変えて書きました。
>>565
ありがとうございます!ばっちり表示できました。
おかげ様でやっと次の段階に進めそうです。
0567nobodyさん
04/05/07 12:50ID:p3Wu+afh$honbun =~ s/$FORM{'text'}/<font style=\"background:#00ffff\">$FORM{'text'}<\/font>/g;
print "本文=$honbun";
というプログラムで本文を置換したいんですけどフォームからaaaなどを入力してもエラーにはならないけど
コーヒーと入力するとエラーになってしまいます。
どうしたらコーヒーと入力してもエラーがでないんでしょうか?
0570nobodyさん
04/05/07 15:03ID:???$honbun = 'aaabbbcccdddeeefffコーヒー';
$keyword = 'コーヒー';
$keyword =~ s/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/\\$1/g;
$honbun =~ s/($keyword)/<b>$1<\/b>/g;
print "本文=$honbun";
0571nobodyさん
04/05/07 15:35ID:???これをHTML上に表示するにはどのようにすればよいのでしょうか?
現在は$files[1]〜$files[15]というように1個1個記述してます。
何か良い方法があればアドバイスいただければと思います。
0573nobodyさん
04/05/07 15:44ID:???0574571
04/05/07 15:55ID:???ありがとん
foreach $key (@files) { print "<a href=\"$key\">$key</a><br>\n";}
ってやったら出来た
サンクスコ
0575nobodyさん
04/05/07 16:45ID:???0576nobodyさん
04/05/07 20:24ID:zsY2eiyt一人複数投票をなるべく避けるようにしたいのですが、こういう
場合、どのような工夫があるでしょうか?
とりあえず同一アドレスははじきます。リスクはありますが、
プロバイダの同一サクセスポイントもはじこうと思っています。
他にどういう手があるでしょうか?もちろん100%防ぐのは
無理だと思いますし、そんな厳密なアンケートでもない
(どっちかというと遊びっぽい)ので、少しでも役立つ
方法をご存知でしたら、教えてください。
よろしくお願いします。
0577nobodyさん
04/05/07 20:26ID:???> プロバイダの同一サクセスポイントもはじこうと思っています。
ネタだろ?
0578nobodyさん
04/05/07 20:33ID:???個数をカウントするにはどうすればいいですか・・?
0579nobodyさん
04/05/07 20:35ID:???0582nobodyさん
04/05/07 21:12ID:???0583576
04/05/07 21:46ID:???>>581
あ、クッキーという手がありましたね。消して再投票する人もありえるでしょうが、
一定の効果はありそうですね。ありがとうございます。
0584nobodyさん
04/05/07 22:57ID:???@array にたとえば「あ」「い」「う」が入っているとして、
それを$aiuにマッチすればそのまま、マッチしなければそのループを抜ける
という表記なつもりなのですが、結果がうまくいきません。
foreach $i (@array){
if ($aiu =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$i/i) { ; }
else { next; }
}
どのようにかきかえればいいでしょうか?
0585nobodyさん
04/05/07 23:13ID:???foreach my $str (@array){
$str = quotemeta $str;
if( !$aiu =~ /$str/){
last; # ループを抜けるのはlastです
}
}
こんなもんでどうなんでしょう? 正規表現はそんなにややこしくする必要ありですか?
0586nobodyさん
04/05/07 23:39ID:???まずそれは EUC-JP とうまく付き合いたがっているコードなわけだけど
@array と $aiu はきちんと EUC-JP ですか?
0587586
04/05/07 23:53ID:???0588584
04/05/08 00:20ID:???エラーはおこりませんが、HITしませんでした。。。
下のレスにもかかれてたコードのせいですかねぇ?
>>586
EUC-JPかどうか実はよくわかっていません・・・が、
なぜか部分部分でそのコードを入れないと反応しないものがありまして。
なくてもうまくいく場合もあるんですが、
基本的に日本語が含まれるものには無いとうまくいかないようです。
0589nobodyさん
04/05/08 00:59ID:???@lst = (12, 20);
これを print を用いて「12 20」のように表示したいのですが、
print($fmt, @lst); では「%d %d1220」と表示されてしまいます。
「12 20」のようにするにはどうしたらよいでしょうか。
ちなみに、$fmt, @lst は動的に変わり、
要素が2個とは限りません。
C言語の va_list のようなことができるのか知りたいです。
0592nobodyさん
04/05/08 01:41ID:???僕が良くワンライナで使う手はこう。
$ perl -e '@list=(1..5);print join(" ", @list);'
1 2 3 4 5
0593nobodyさん
04/05/08 01:45ID:???0595nobodyさん
04/05/08 02:19ID:3p4uAER8「バイナリ構造体」の意味がイマイチつかめなくて困ってます。
「バイナリ」は2進法とかいう感じの意味らしいですが、では「バイナリ構造体」
とは構造が2進法である。みたいな感じですか?なんか変な感じ・・・
バイナリはいろんな所で調べれますが、バイナリ構造体という言葉の説明はみつかりません。
どうやらスカラ変数や s/〜//; の〜部分もバイナリ構造体らしいのですが、どなたか
バイナリ構造体の意味を教えてくださいませんか。お願いします。
0596nobodyさん
04/05/08 02:25ID:???0597nobodyさん
04/05/08 02:51ID:???0598nobodyさん
04/05/08 02:58ID:???プログラミングで構造体と言うと既にある型を使って新しい型を作ることを指す。
Perlは基本的にデータを文字列で記憶するからそれをバイナリ値にしたものが
バイナリ構造体。
0599nobodyさん
04/05/08 03:09ID:???でも s/?//; の?の部分がバイナリ構造体だというのはいまいち意味がわからない
0600595
04/05/08 03:29ID:???ということは文字列をバイナリ値(0と1)に変換して記憶・保存する構造自体がバイナリ構造体ですか?
>>599
packってpack後にバイナリ構造体に結果を返すって勉強したので、packの結果を受け取れる
場所はスカラ変数に限らず、全てバイナリ構造体と言える?あれる?のかなと思いましたが・・・・・
う〜ん難しいですね。スカラや配列って文字列のまま記憶・格納しているのですか?
例)$x = "あいうえお";
という代入をした場合、「あいうえお」のままはコンピューターは保存できませんよね?
だから、保存時に2進数に直して保存し、呼び出すと自動で解凍?される・・・・のですか?
その仕組みがバイナリ構造体そのもの????
0601nobodyさん
04/05/08 03:40ID:???バイナリ値というのは2進数のことではない。
それにPerlにおいてバイナリ構造体の意味を学んでも役には立たないから
おかしな理解をしてしまう前にpackして得られる値とだけ思っておけ。
0602595
04/05/08 04:20ID:???「整数値を、2 の補数表現で符号化したものをバイナリ値とする。」こんな程度しか
バイナリ値ではひっかかりませんでしたがとりあえず単純な2進数ということでは
ないようですね。
プログラム関係って言葉の意味さえわかれば関数や表記法なんて結構どうにでもなるかな
と思ってるんですよ。理解できない言葉があると勉強の効率が悪いので私にとっては
言葉の意味は重要なんですよ。
プログラム関係の言葉の辞書って今アスキーっていうHP使ってますが、他にどこか
いいとこありますか?アスキーはバイナリ値もバイナリ構造体も載っていませんでしたので
プログラム系の言葉に特化してる辞書とかないですかね
0603595
04/05/08 04:27ID:???「0x」とは、後に続く文字列が16進数であることを示しているらしいのですが、
print hex(0xa);
としてみたら16が表示されました。
print hex(a);
の場合は10なのですが、「0x」は後続が16進数であるという示し以外にどのような
効果を与えるのでしょうか?
0604nobodyさん
04/05/08 05:08ID:???# 10
print hex 10;
# 16
0605nobodyさん
04/05/08 12:01ID:???英語版の perldoc などには存在しない。
よって正確な定義もたぶん存在しない。
たぶんCの構造体(struct)との類推で作られた言葉だとは思う。
struct の定義ならCの入門書でも読めばわかるが、
「なぜこんなものが必要なのか、実際何の役に立つのか」ということは
実際にCのプログラムを作ってみないとわからんだろうな。
0606nobodyさん
04/05/08 14:38ID:???$hoge
@hoge
%hoge
0608595
04/05/08 15:22ID:???>>604どうやらhex関数の引数として「0x」をつかうとちょっと違うことになるみたいですね。
通常は「0x」が前につけば単に16進数という宣言みたいですが、どうしてhex関数の引数
で使うとおかしな事になるんでしょう。
そういえば、バイナリ値以外にもchar値とかその他にもいっぱい「〜値」というものが
あるんですね。どっかにいろんな「〜値」について詳しく解説してるサイト知りませんか?
0609nobodyさん
04/05/08 15:59ID:???何もおかしくないのに>>604を見てわからないならかなりニブいな。
packで指定する型のcharやintや浮動小数点だのをひっくるめてバイナリ値を呼ぶ。
どんな型があるかはpack関数を調べればいい。
いいかげんスレ違いになってきたからここらでやめれ。
0611584
04/05/08 16:58ID:???>>584 の質問誰かお願いします。。。
調べたところ、すべてEUCにはされていました。
if ($aiu ne 'all') {
if ($aiu =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$array[0]/i ||
$aiu =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$array[1]/i) { ; }
else { last; }
}
だと、理想的な結果が出るんですが、2枚目のページにいくと、
結果がクリアされるようなんです・・・。
0612nobodyさん
04/05/08 17:09ID:???誰か2枚目のページってどんなのか知ってる?
知ってる人が教えてあげて。
0613nobodyさん
04/05/08 17:13ID:???0614595
04/05/08 18:04ID:??????
print a; #aが出力
print 0xa; #10が出力
print hex a; #10が出力
print hex 0xa; #16が出力
???
本当にわかりません・・・教えてください。
ところでこの話はスレ違いなんですか?ここは変換処理にかかわる事ならOKっていうわけでは
ないんですか^^;
0615nobodyさん
04/05/08 18:14ID:t33qT0Phif( 文章 =~ 適当な単語) ){
処理
}
という方法では
(´・ω・`) のようなものに引っ掛からないみたいで、、、
こう言う場合はどのようにマッチさせれば良いのでしょう?
0616nobodyさん
04/05/08 18:17ID:???perlはjcodeがいるだろ
0617595
04/05/08 18:24ID:???0xってhexと同じような働きがあるから
print hex 0xa;
っていうのは
print hex (hex a);
と同じことで、流れ的には「a」を10に変換してさらにそれを16進数として評価してしまう!!!
ってことですね^^やっとhex問題が片付いた。バイナリ値問題はまだまだですが++;
ほんと日本語が世界語だったらプログラム用語もPC関連用語ももっと簡単だったろうになあ
0620nobodyさん
04/05/08 18:28ID:???まぁ、釣りではないとして回答しておこう。
>理解できない言葉があると勉強の効率が悪いので私にとっては
>言葉の意味は重要なんですよ。
細かいことにこだわりすぎだと思うがね。
プログラミング用語自体、文脈で結構柔軟な解釈がされることもある。
所詮、用語自体が「表記法」に過ぎないと思う。
>614
hex が文字列を引数としてとること、Perl が型変換を自動で行うこと、
0xa は数値であること、キーワード以外の単語は文字列として扱われること、
以上を元に少し考えてみれば?
>ところでこの話はスレ違いなんですか?
>ここは変換処理にかかわる事ならOKっていうわけではないんですか^^;
スレタイ嫁、変換処理ってなんだよ?
# あと末尾のは顔文字のつもりかしらんが、個人的に妙にいらつくぞ。
>どっかにいろんな「〜値」について詳しく解説してるサイト知りませんか?
総じて Perl コーディング以前の問題のような気がするんだよ。
0621615
04/05/08 18:44ID:t33qT0Ph説明文が激しく半端でした。
HTMLから必要な単語を抜き出して、それがそのHTML内に何回出現しているか
確認するプログラムを書いています。
例えば
<FONT COLOR="#ffff00">そいつぁショボンヌ(´・ω・`)</FONT>
という行からindex関数で前のタグと後ろのタグを見つけて
「そいつぁショボンヌ(´・ω・`)」を単語として抜き出しています。
この単語を文章とマッチさせているのですが、どうも顔文字が上手くマッチしてくれないのです。
他の単語は普通にマッチするようなので、顔文字の文字がまずいのかなと思ったのですが、、、、、
0622nobodyさん
04/05/08 19:02ID:???おれはどんなやつよりも素早く目的のフレーズを探し出して
みせるぜ!
0623595
04/05/08 19:07ID:???コーディング 【coding】
(1)
⇒符号化(ふごうか)
(2)コンピューターなどで,一定のプログラム言語を用いて,プログラムを作成すること。
ふごうか 【符号化】
(1)
〔encoding〕
情報がある一定の規則に基づいて符号に変換されること。記憶における記銘や,非言語コミュニケーションにおける表情の表出などもこの例として捉(とら)えられる。
→解読
(2)
〔数〕
〔coding〕
一連の情報を適切な符号系を定めて符号に変換すること。
とありましたので変換処理とも言えるのかなっと・・・
顔文字の件申し訳ないです。
>総じて Perl コーディング以前の問題のような気がするんだよ。
かもしれませんね。
私的には記述方法とかってあまり問題じゃなくて、関数やコーディングの機能・処理内容自体を日本語のみで全くの素人にでも
教える事ができるようになる事が大切かなって思ってます。なので、細かいとこにこだわって他人より要領が
すこぶる悪い・・・自分でも自覚してます。
とりあずこのスレで、私のように基本的な部分を質問するのは迷惑になってしまうようですね。ごめんなさい。
0625595
04/05/08 19:23ID:???>Perlは基本的にデータを文字列で記憶するからそれをバイナリ値にしたものが
>バイナリ構造体。
バイナリ→テキスト形式(文字データ)以外のデータ形式全般。
値がテキスト形式以外のデータ形式であれば全てバイナリ値。
char値→バイナリ値の分類の中の・・・・
とりあえずここで学んだことをまとめておきました。それでは失礼します。
0626名無しさん
04/05/08 19:29ID:cBod9el7バイナリ構造体なんてどっから拾ってきた言葉だかしらんが、言葉は
何かを説明するためにあるのであって、造語を前提なしに持ち出して
どういう意味なんだと考える自体が無意味。初心的どうこうではない。
プログラムはアルゴリズム実現の表記手段であって哲学的誤謬に陥るのは愚。
>>624 同じく一票
顔文字って()を使うからねぇ。。。Perlのメタ文字が入る場合は注意だし。
0627595
04/05/08 19:31ID:???pack("C*",0x41); #A
第2引数以降のリストで指定したデータを、キーボードから入力可能な文字や記号に
一定の規則をもって変換する。(char値に変換する)
0628nobodyさん
04/05/08 19:34ID:???indexで書いてみるテスト。
my $cnt = 0;
my $pos = 0;
$cnt++ while(($pos = index($data, $match_str, $pos)+1) > 0);
>>595
Perlより先にアセンブラやってみるというのはどう?
# これ以上はスレ違いなので、後は本でも読んでみては。
0629595
04/05/08 20:31ID:???>>628
アドバイスありがとうございます。とりあえず、ゆっくり地道にやっていこうと思います。
バイナリ構造体についての質問は完全にスレ違いでしたね。
ところでこうゆう質問もスレ違いでしょうか?↓
相変わらず基礎的な部分で、コーディング(符号化)の流れについてなんですが、
例えばUNIX系のサーバにあるwebページに対して、「あいうえお」と送ったとします。
そのときの内部で起こっている事は、
1、送られてきた文字データをEUCでコーディング(エンコード)
2、それをさらにASC�Uコードでエンコード
文字列データとして表示させるには
1、まずはASC�Uコード化されたデータを受け取りASC�U方式でデコード
2、それをさらにEUCでデコード
で、合っていますか?なんか違う気もするんですが・・・
一番初めに文字列データをどの形式でコーディングするかの決定権をもっているのは
クライアント側のユーザですよね?受け取り側で自動でされる処理はASC�Uでエンコードするのみですか?
でもそれだと、何故UNIX系でEUCを指定されているのか?ですし・・
・・もしかしてこれもスレ違いな内容でしたら、一言「スレ違い」とお返事ください。
0630nobodyさん
04/05/08 20:33ID:???$_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g;
}
この場合
URLがある文字数を超えたときにそれ以降を省略するようにするにはどうしたらいいのでしょうか
substrとか使えばいいんだと思うんですけどよく解りません。
0632nobodyさん
04/05/08 21:52ID:???my $limit = 16;
s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/
"$1<a href=\"$2\" target=\"_blank\">".substr($2, 0, $limit).
(length($2) > $limit && '..')."<\/a>"/egx;
こんなとか。
0634nobodyさん
04/05/08 22:37ID:???0635630
04/05/08 23:06ID:???0636nobodyさん
04/05/09 06:07ID:6P0icBMnファイルオープン後、
@temp = <FH>;
とすると行ごとに配列へ格納されますが、
\nも含めてひとつのスカラ変数に格納したいのです。
普通はjoin関数であとから結合するのでしょうか?
どうも冗長な気がし質問しました。
0638636
04/05/09 11:39ID:6P0icBMnありがとうございます!
$1〜、$_以外の特殊変数はまだまだ理解出来ないと思ってたら、こうやって使うんですね。
0639nobodyさん
04/05/09 12:54ID:LzQ8Bs2h@list = (0,1,2,3,4,5,6,7,8,9,10,11);
sub number {
if ($a < $b) {
return -1;
} elsif ($a == $b) {
return 0;
} elsif ($a > $b) {
return 1;
}
}
@result = sort number @list;
@resultが何故0,1,2,3,4,5,6,7,8,9,10,11になるのか理解できません。
漏れの考えですが、$aに0、$bに1が代入される。比較され-1が返る。@resultの第一要素は「-1」になる。
以降繰り返しで@resultは-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1となるのでは?と考えました。
@resultが何故0,1,2,3,4,5,6,7,8,9,10,11になるのか教えてください。
0640nobodyさん
04/05/09 13:44ID:???$a == $b なら ($a, $b) のまま
$a > $b なら ($b, $a)
の配列要素の順番入れ替えをおこなうのが sort 関数
数値の昇順や降順にソートすることは簡単にできる。
@result= sort {$a <=> $b} @list;
@result= sort {$b <=> $a} @list;
0642nobodyさん
04/05/09 15:48ID:???0643nobodyさん
04/05/09 16:26ID:Si4CJEJNopen(IN,"/なんとか/test.cgi|");
@file = <IN>;
close(IN);
print @file;
だと出来るのに
open(IN,"/なんとか/test.cgi?hoge|");
@file = <IN>;
close(IN);
print @file;
だと「sh: /なんとか/test.cgi?hoge: No such file or directory」と表示され開けません。
どなたかご教授ください。
0644nobodyさん
04/05/09 16:39ID:???0645nobodyさん
04/05/09 16:44ID:???0646nobodyさん
04/05/09 16:48ID:???0647nobodyさん
04/05/09 16:51ID:???失敗する、間違いない。
2ちゃんの掲示板だからこそ、人が集まりこういう流れが成立してる。
他スレでもそういう案は見かけるが、大抵が誘導に失敗し元に戻る。
Q&Aのデータベースなら活用されるとは思うが。
0649nobodyさん
04/05/09 16:57ID:???0650nobodyさん
04/05/09 17:49ID:???ム板のPerlスレにもそんなことをやろうとしたヤシがいたが、結局公開に至らず。
日本人って熱は冷めやすいから、飽きたんだろうね。
そういうことなので、>>648にはごく基本的なシステムでとりあえず公開することをきぼん。
その上で突込みが入れば修正すればいいんだし、自分で修正できなかったらここで質問すればいいんだし…
0652nobodyさん
04/05/09 18:06ID:???ちょっとしたシステムの不満でもみんな吐きまくるぞ。
そして最後には自分で作った方が早いとなっていく。
他人のシステムで満足できるような人間はこのスレにあまり来ないだろうし。
やるんだったらいっそ逆にPerl使わないほうが安全かも。
もしくはこのスレ住人の力を結集して作っていくか。
0653名無しさん
04/05/09 18:14ID:???俺はめんどくさいしやる気も無いのだが、まずは
過去ログを全検索して一覧表示できるようにっつうのは?
あとは>>をみてリンクツリー構成表示するとかね。
手動なんて絶対力つきるしPerlスレなんだからPerlつこて自動化すれ。
0654nobodyさん
04/05/09 18:17ID:???0655643
04/05/09 18:19ID:???盛り上がっているところすいません
open(IN,"/なんとか/test.cgi hoge|");
として受け取るtest.cgiに@ARGVを使うということでしょうか?
test.cgiに手を加えないで出来る方法があったらその方がよいのですが無理ですか?
0656nobodyさん
04/05/10 00:13ID:???0657nobodyさん
04/05/10 12:53ID:???AUだけ
掲示板に書き込んだ→書き込み完了画面表示→戻るリンク(その掲示板のトップへ行く)
この最後の戻るリンクをクリックすると、また書き込みしちゃうんだけど、どうすれば対処できるんでしょうか?
imode、vodafoneはちゃんと掲示板のトップに戻ってくれるんですが orz
0658nobodyさん
04/05/10 13:05ID:???>>1
http://www.au.kddi.com/ezfactory/
0660nobodyさん
04/05/10 14:41ID:???0661nobodyさん
04/05/10 14:48ID:9bXUHl3jというプログラムを書いています。
少々疑問に思ったのですが、ソケットでHTMLを獲得するのと
ウェブブラウザでHTMLを獲得するのとでは何が違うのでしょう?
処理するのがユーザ側かサーバ側か、の違いと見て良いんでしょうか。
0662nobodyさん
04/05/10 15:08ID:???ブラウザも同じソケット通信してるから、同じこと。
そのようにサーバ側でソケット使おうとユーザ側で使おうと
どちらもHTTPクライアントリクエストをwwwサーバに対しておこなっている
0663nobodyさん
04/05/10 15:17ID:???PHPなら$foo = "val";のとき$$fooで$valにアクセス出来ますが,Perlはちょっと違いますか?
$val = "hoge";
$prm = "val";
print $$prm; #「print $val;」と同じ結果
$val = "hoge";
$HASH{'prm'} = "val";
print $$HASH{'prm'}; #ダメ
0664nobodyさん
04/05/10 15:25ID:???0665nobodyさん
04/05/10 15:28ID:???use strict;
my $val = "hogehoge";
my $prm = "val";
print $$prm; #だめ
print ${$prm}; #これもだめ
0666nobodyさん
04/05/10 15:34ID:???他のアプローチを考えたほうが早いと思うが…
0667nobodyさん
04/05/10 15:36ID:???0668nobodyさん
04/05/10 15:41ID:???my $prm= 'val';
my $$prm= 'hoge';
print $$prm;
or
#use strict;
0669nobodyさん
04/05/10 15:50ID:???0671nobodyさん
04/05/10 16:04ID:???my $$prm= 'hoge';
なんてのは無理ってもんだろう。
0672nobodyさん
04/05/10 16:18ID:???どうすればいいのでしょうか。
以下のようでは空っぽのままです。
--
$test = &hairetu;
print $test[0][0];
print $test[1][1];
sub hairetu {
$box[0][0] = 0;
$box[0][1] = 0;
$box[1][0] = 0;
$box[0][2] = 0;
return $box;
}
0673nobodyさん
04/05/10 16:19ID:???×$box[0][2] = 0;
○$box[1][1] = 0;
0674nobodyさん
04/05/10 16:40ID:???print $$test[0][0];
print $$test[1][1];
sub hairetu {
$box[0][0] = 0;
$box[0][1] = 0;
$box[1][0] = 0;
$box[1][1] = 0;
return \@box;
}
0675nobodyさん
04/05/10 16:46ID:???$test = &hairetu;
print $test->[0][0];
print $test->[1][1];
sub hairetu {
$box->[0][0] = 0;
$box->[0][1] = 0;
$box->[1][0] = 0;
$box->[0][2] = 0;
return $box;
}
0677674
04/05/10 16:59ID:???0678661
04/05/10 17:04ID:9bXUHl3jするとソケットを使用したHTML取得CGIをAと言うサーバに置いた場合
ブラウザからCGIを呼び出すと
ブラウザ→CGI→HTML (→はリクエスト)
となるのではなく
ブラウザ→HTML
となるのでしょうか?
CGIを置いたサーバに負荷が掛かりそうでちょっと尻込みしているのですが
サーバ側に負荷は行かない、のかな?
0679nobodyさん
04/05/10 17:07ID:???でもそんなこと言ってたらCGIは何一つ動かせない。
それ以前に、ソケットの使えないところも多いけどね。
0681nobodyさん
04/05/10 19:02ID:???戻るリンクの代わりに戻るフォームもしくはlocationで飛ばす。
でいいような気がするけど確信はない。
いい加減な情報でスマソ。
0682nobodyさん
04/05/10 19:05ID:???0683nobodyさん
04/05/10 19:13ID:???0684すまん
04/05/10 19:14ID:DDeHe7Rs調べるにはどうしたらいいの?
0685nobodyさん
04/05/10 19:54ID:???0686nobodyさん
04/05/10 21:18ID:???http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlref.html
>>684
http://www.din.or.jp/~ohzaki/perl.htm#Character
0687nobodyさん
04/05/11 00:27ID:???詳しく載ってる本やサイトってないでようか?
0688nobodyさん
04/05/11 00:53ID:???ラクダ本とか perlref じゃ駄目?
0689nobodyさん
04/05/11 01:07ID:???ブラウザで個人的に見るのは著作権的に合法。
ソケットでCGIで取得して不特定多数に閲覧可能な状態にしてしまうのは著作権的に違法。
0691nobodyさん
04/05/11 07:45ID:???「恥知らず」という言葉を思い出したよ。
>「でも、本当に簡単なミスでも、指摘されるまで気付かないことだってありますよ。 」
簡単なミスに、指摘されるまで気付かない事自体
恥ずかしい事と思わなかったのか?
そういう台詞を言う事自体「甘え」だと思わなかったのか?
ちゃんとした大人なら、そんな甘えた台詞は恥ずかしくて言えないものだが。
こういうやつが設計をやると、三びし自みたいな日さんな事故がおきるんだろうな。
0692nobodyさん
04/05/11 08:26ID:???0693nobodyさん
04/05/11 10:07ID:???文章に自信が無いから飾ってるだけ。
0694nobodyさん
04/05/11 10:37ID:???他人様のスクリプトを見てみたところ
ロックしている方もいますし、ロックしていない方も居ます。
0695nobodyさん
04/05/11 10:47ID:???書き込んでいる真っ最中のデータを読み込んだり、
読み込んでる最中に書き込み始めたりしてもいいのなら
読込時に排他処理は不要。
「共有ロック」なんてのも調べてみると吉。
0696nobodyさん
04/05/11 12:08ID:yHiP+CICやっぱり書き込んでいる真っ最中のデータを読み込んだり、
読み込んでる最中に書き込み始めたりしちゃうわけですね。
システム側でなんとかしてくれるのかと思ってました。
共有ロック、取り入れてみたいと思います
ありがとうございました
0697nobodyさん
04/05/11 13:57ID:xHapOBBnサーバーがLocationヘッダで指定されたファイルを返すのか、
どちらでしょう? どちらでもなければ、それを教えてください。
0699nobodyさん
04/05/11 14:25ID:???サーバをテストに使ったらファイルが消えた時に責任取れないんで
ローカルでテストしたいんですがどうすれば・・・
0700nobodyさん
04/05/11 14:51ID:???0701nobodyさん
04/05/11 14:55ID:???そしたらinstall_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC ...
とエラーがでました。
恐らくモジュールが入ってないのかと思いますが
どうすればインストールできるでしょうか。
一応、Msql-Mysql-modules-1.2219と言うのをDLしてきましたが
root権限など持っていないので説明にある方法ではインストールできません。
cgiとおなじフォルダにmysql.pmを置いてやれば動くような気もしますが
取り敢えず/mysql/libの中身をまるごと置いてやっただけでは動きませんでした。
0702699
04/05/11 15:42ID:???0703nobodyさん
04/05/11 15:49ID:???winのローカル環境で動かしたいなら
http://x-web.pobox.ne.jp/fcgi/fcgi_01.html
が分かりやすいと思います
0705699
04/05/11 17:35ID:???とりあえず上のリンク先には行ってきましたが・・・
0706nobodyさん
04/05/11 17:40ID:???この人のところに文法チェッカーが配布されとる
0707nobodyさん
04/05/11 18:02ID:???という文字に変換したいのですが、
$line =~ s/<!--user-->/<a href="$usaddress">/g;
では変換されません。
どこが間違っているのでしょうか?
0711nobodyさん
04/05/11 18:31ID:???これは普通には変換されているというと思うのだが。
% cat user.pl
$usaddress = "foo";
$line = "<!--user-->";
$line =~ s/<!--user-->/<a href="$usaddress">/g;
print $line, "\n";
% perl user.pl
<a href="foo">
0712712
04/05/11 19:08ID:j+/3ilVKの掲示板なのですが、専用アイコン以外の普通のアイコンが表示されません。
中身は↓のようになってます。どうしたらいいのか、教えてください。お願いします。
http://sumiro2.hp.infoseek.co.jp/afraid/bbs.txt
0714712
04/05/11 19:20ID:???すいません・・・
0715nobodyさん
04/05/11 19:36ID:???スレ違いだが、たらい回しにされて可哀想なので一言・・。
http://sumiro2.hp.infoseek.co.jp/afraid/bbsimg/ここにアイコンを格納。
>$imgurl = "./img/";
を
>$imgurl = "http://sumiro2.hp.infoseek.co.jp/afraid/bbsimg/";
に変更。
0716nobodyさん
04/05/11 20:04ID:???0718nobodyさん
04/05/11 21:28ID:M72HBXcrhttp://pc5.2ch.net/test/read.cgi/php/1010583350/68
0719718
04/05/11 21:40ID:M72HBXcr特にエラーは出ていません。
しかし、Windows2000 + Apache2 + perl5.6.1では
鯖エラー500が出てしまいます。
どの辺がまずいのでしょうか?
0720nobodyさん
04/05/11 21:43ID:???0721718
04/05/11 21:48ID:M72HBXcrperl stove.pl
としたら、htmlのソースが表示されました。
これはサーバの問題でしょうか?
それとも、ソースに不備があってもコマンドプロンプトでは表示されるんでしょうか?
0722nobodyさん
04/05/11 21:50ID:???0723718
04/05/11 21:52ID:M72HBXcrhttp://pc5.2ch.net/test/read.cgi/php/1010583350/68-69
に分けて貼ってあるソースです。
0724nobodyさん
04/05/11 21:58ID:???http://www.rfs.jp/sitebuilder/perl/03/02.html
0725nobodyさん
04/05/11 22:04ID:???答える気にならん。
0726718
04/05/11 22:17ID:lgCnMYEoアドバイスありがとうございます。
拡張子設定はplになっています。
>>724
ありがとうございます。
よく読んでみます。
0727718
04/05/11 22:23ID:lgCnMYEoprint "Content-type: text/html", "\n\n";
が抜けていた為だったようです。
おかげで、エラーは出なくなりました。
しかし、ONボタンを押してもストーブが付きません。
なぜでしょうか?
0728718
04/05/11 22:37ID:lgCnMYEo’O N'などとスペースを入れてしまっていました。
ONに直して動くようになりました。
0729nobodyさん
04/05/12 00:31ID:cFb5OXA3�A$hoge->a('1');
�Bif ($hoge->a eq '1'){
}
�@左辺値としても使えて、$hoge->{'a'}に'1'をセットする
�Aみたいに引数で$hoge->{'a'}にセットできて
�Bみたいに引数が与えられない場合$hoge->{'a'}の値を返す
ようなメソッドを書きたいのですけどどうやったらいいのか判りませんです
どっかで見た気がするけど見つからないです
気が向いたら教えてくださいまし
0730nobodyさん
04/05/12 02:08ID:???http://perldoc.com/perl5.8.4/pod/perlsub.html#Lvalue-subroutines
require 5.006;
sub Foo::foo : lvalue {
my $self = shift;
@_ and $self->{'-foo'} = shift;
$self->{'-foo'};
}
my $obj = bless {} => 'Foo';
$obj->foo = 'foo!'; print $obj->foo; # foo!
$obj->foo('bar!'); print $obj->foo; # bar!
0731nobodyさん
04/05/12 04:19ID:???配布しているcgiに以下の記述がありました。
2ch型掲示板でID生成部分の一部です。
> $id = crypt($identify,"${year}S\.E${mday}X${mon}");
crypt関数への第二引数の部分で、「S」や「\.」、「E」、「X」はただのノイズ用文字なのでしょうか?
\記号が含まれてるため何か意味を持つのではないかと思い質問いたしました。
引用元 ttp://www.toshinari.net/ 「2chブラウザ対応掲示板」
0732nobodyさん
04/05/12 06:17ID:???http://perldoc.com/perl5.8.4/pod/func/crypt.html
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/crypt.3.html
0733nobodyさん
04/05/12 10:27ID:???Attribute::Property
http://search.cpan.org/~juerd/Attribute-Property-1.05/
とかも。」
0734731
04/05/12 11:58ID:???回答ありがとうございます。
saltは先頭が$1$以外の場合、通常先頭2文字を使うため、
$id1 = crypt($identify,"${year}"); # 104
$id2 = crypt($identify,"${year}S\.E${mday}X${mon}"); # 104S.E12X4
のどちらでも同じ結果となりました。(v5.8.2 built for MSWin32-x86-multi-thread)
もし何らかの要因で各変数が空だとしてもEとXは不要になると思うんです。
ひょっとしてコーディングミスなのでしょうか。
0737731
04/05/12 13:19ID:???どうもありがとうございました。
>>736
トリップはトリップキーをplainに、トリップキーの2文字目3文字目をsaltに、
足りない場合はH.を末尾に置き、後ろからn文字取ればn桁トリップになります。
$trip = substr(crypt($key, substr($key."H.", 1, 2)), -8); # 8桁トリップ
2chでもしたらばでもトリップ生成方法は同じのようです。
私の質問したID部分は、本家2chの場合トリップよりも複雑になっているようですが。
0738nobodyさん
04/05/12 13:38ID:???では foreach(@array) は for のように書けるのでしょうか。
こちらでは for($i = 0; @array; ++$i) とかやってみたのですがエラーが出ました。
0739nobodyさん
04/05/12 13:39ID:???0740nobodyさん
04/05/12 13:52ID:???for($i=0; $i<@array; $i++)
0741nobodyさん
04/05/12 14:05ID:???for($i = 0; $i < @array; $_ = $array[$i], ++$i)
のような感じになってるのですね。
スッキリしました。
0742nobodyさん
04/05/12 14:42ID:???http://qb3.2ch.net/test/read.cgi/operate/1067245837/
0743nobodyさん
04/05/12 16:37ID:???単にforとforeachを交換しても実行するバイトコードは変わらない、というだけの話だと思うが。
for(@array){ ... } # OK
foreach(my $i = 0; $i < @array; $i++){ .. } # OK
for($i = 0; $i < @array; $_ = $array[$i], ++$i){} はfor(@array){}に比べると
ずっと遅い、$_がlocal化されない、$_を書き換えても@arrayの要素は変わらない、などの違いがあるしな。
0744nobodyさん
04/05/12 16:58ID:???添字使いたいときもfor(my $i = 0; $i < @array, $i++) {...} よりfor(0..$#array) {...}の
方が速いよね。なんとなく0..$#arrayのリストを最初に作ってから〜とかしそうで
最初は抵抗あったけど、試してみるとその辺は処理系がよろしくやってくれてる
みたいだし。
0745nobodyさん
04/05/12 19:03ID:???多くの人はポストのようですが。
#オプティマイザが勝手にプリにしてくれるのはラクダ本で理解
0746nobodyさん
04/05/12 23:29ID:???インクリメント・デクリメント演算子のことか?
普通はポストだが、C++のコードを読み書きした直後はついプリにしてしまうね。
0747nobodyさん
04/05/12 23:33ID:???++$a
ってことか?
0748nobodyさん
04/05/13 00:54ID:???C#かなにかも後置推奨だった木がするので。
最もC#などとPerlじゃ変数の命名規則も違うけど
0750nobodyさん
04/05/13 06:04ID:???0751nobodyさん
04/05/13 06:06ID:???アセンブラとCからの習慣。
0752nobodyさん
04/05/13 10:08ID:???サーバの環境上、Dateフィールドが自動で設定されません。
そこで、自力でDateフィールドを
Date: Wed, 12 May 2004 08:50:48 +0900
のように書きたいのですが、書き方がわかりません。
(途中まではわかるのですが、下記例の最後の行がわかりません)
どなたかご存じの方、教えていただければ幸いです。
# 日時の取得 $ENV{'TZ'} = "JST-9";#タイムゾーンの設定
$times = time();#時刻を取得
($sec,$min,$hour,$mday,$month,$year,$wday,$stime) = localtime($times);
$month++;
$year = $year + 2000;
@month = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@weekly = ('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sut');#表示したい曜日文字
$Date = sprintf?(ここ不明)
0753nobodyさん
04/05/13 10:30ID:???http://perldoc.com/perl5.8.4/pod/func/sprintf.html
http://www.rfs.jp/sitebuilder/perl/05/05.html#sprintf
0754752
04/05/13 10:57ID:???すみません、それをみてもちんぷんかんぷんでして。。。
できれば>>752のケースの例を教えていただけませんでしょうか?
そこから勉強したいと思いまして。
すみませんが、よろしくお願いいたします。
0755752
04/05/13 11:33ID:???sprinfの中でカンマを表示したく、それはどのようにすればいいのでしょうか?
$ENV{'TZ'} = "JST-9";#タイムゾーンの設定
$times = time();#時刻を取得
($sec,$min,$hour,$mday,$month,$year,$wday,$stime) = localtime($times);
$year = $year + 1900;
@month_array = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@weekly_array = ('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sut');#表示したい曜日文字
$hour = sprintf( "%02d", $hour );
$min = sprintf( "%02d", $min );
$sec = sprintf( "%02d", $sec );
my $Date = qq|$weekly_array[$wday], $mday $month_array[$month] $year $hour:$min:$sec +0900|;
0756nobodyさん
04/05/13 11:39ID:???0757nobodyさん
04/05/13 11:40ID:???0758nobodyさん
04/05/13 11:47ID:???strftime使った方が楽じゃない?
use POSIX qw(strftime);
my $Date = strftime("%a, %d %b %Y %H:%M:%S %z", localtime);
sprintf(printf)の使い方も憶えといて損はないと思うけどね。激しく基本だと思う。
0759nobodyさん
04/05/13 11:49ID:???# JST == GMT + 9 時間
my $time = time + 9 * 60 * 60;
my $diff = '+0900';
my($sec, $min, $hour, $mday, $month, $year, $wday) = gmtime $time;
my @month = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @wday = qw(Sun Mon Tue Wed Thr Fri Sut);
my $Date = sprintf
'Date: %s, %02d %s %04d %02d:%02d:%02d %s',
($wday[$wday], $mday, $month[$month], $year + 1900, $hour, $min, $sec, $diff)
;
# 別解
my $Date = sprintf
'Date: %s, %02d %s %04d %02d:%02d:%02d %s',
(split /\W+/, scalar gmtime $time)[0,2,1,6,3,4,5], $diff
;
0760nobodyさん
04/05/13 13:09ID:???色々な方法があるかと。
0761nobodyさん
04/05/13 18:00ID:???Perlでの変数の値域ってどうなっているんでしょう?
文字列で扱うときはいいんですけど、数値で扱うときはどこまで大きい数字が扱えるかは、
Perlのバージョンとかで違うのでしょうか?
0762nobodyさん
04/05/13 20:48ID:???0764nobodyさん
04/05/13 22:13ID:???Perlのバージョンでは基本的には変わらない(perl6になれば変わるかもしれない)が、
バージョンは同じでもコンパイルオプションやOSによって異なる可能性がある。
まぁ普通はこんな感じだと思うが。小さすぎると思うならMath::Big(Int|Float)で。
> perl "-V:[in]v(size|type)"
ivsize='4'
ivtype='long'
nvsize='8'
nvtype='double'
0765nobodyさん
04/05/14 04:19ID:7/s5Izsl# crypt関数使用可否チェック
undef $check_crypt;
$check_crypt = eval { crypt('1111', '11'); 1; }; # ここが23行目
if ($@) { $check_crypt = 2; }
if ($check_crypt == 1) { crypt関数が使える時の処理 }
elsif ($check_crypt == 2) { crypt関数が使えない時の処理 }
else { 不明な時の処理 }
これを、-wオプション付で構文チェックすると
Useless use of a constant in void context at c:\www\〜\xxx.cgi line 23.
と注意されたのですが、どこが問題なんでしょうか?
このままでも使用に問題は無いのですが、少し気になるので・・。
よろしくお願いします。
0766nobodyさん
04/05/14 05:21ID:???戻り値を使うべき関数であるところの crypt() が
無効コンテキスト (void context) に置かれているから。
my $check_crypt = eval { crypt('1111', '11') } ? 1 : $@ ? 2 : 0;
とか
if (eval { crypt('1111', '11') }) { 使用可能 }
elsif ($@) { 未実装 }
else { crypt が何らかのエラー }
0767nobodyさん
04/05/14 06:02ID:???use HTTP::Date;
my $Date = time2str(time()+60*60*9);
$Date =~ s/GMT/+0900/;
とか。
>>761
use Config;
print "このシステムでは、\n",
"整数型(IV)はCで言うと$Config{ivtype}で、バイト長は$Config{ivsize}バイト\n",
"実数型(NV)はCで言うと$Config{nvtype}で、バイト長は$Config{nvsize}バイト\n";
いろいろ調べてみては。
0768752
04/05/14 10:31ID:???参考になります。
sprintfもなんとなくわかってきました。精進します。
ありがとうございます。
0769nobodyさん
04/05/14 10:36ID:???その日はその月の何週間目になるか調べる方法は在りますか?
この場合3が取得できるようにしたいです。
0770765
04/05/14 10:52ID:???レスありがとうございます。
問題の箇所を
$check_crypt = eval { crypt('1111', '11') } ? 1 : $@ ? 2 : 0;
と書き換えることにより、無事解決することができました。
無効コンテキストというものに理解が弱く、検索や書籍で調べても
まだ完全に理解するまでには至っていないのですが、
crypt関数の戻り値を利用すべき所なのに利用していなかったことが
問題だったのですね?
ちゃんと理解できるまで、もっと調べてみます。
ありがとうございました。
0771nobodyさん
04/05/14 11:57ID:???これのような気がする。
http://search.cpan.org/~amurren/DayOfNthWeek-1.0/
違ったら適当に探してくれ。
http://search.cpan.org/search?m=all&q=Date&n=100
0772nobodyさん
04/05/14 12:19ID:???問題の説明が曖昧だ。「その月の何週間目」という言い方はあまり
しないと思うのではっきりと定義して欲しい。
多分、月を週に分割してそのいくつ目に入るかって意味だとは思う
のだが、週の始まりは何曜日かとか、最初の週は0週目なのか
1週目なのかとかといった数え方の好みがあるだろうし。
Date::Manip使うかPOSIXのstrftimeの%Uか%W使うかだろうなぁ。
0773nobodyさん
04/05/14 16:41ID:???.htpasswdで発行されたパスワードとIDを保存してあるリストを、
perlで組んだCGI(例えばBBSやチャット)の認証の際に利用したいと
思っているのですが、htpasswdで暗号化されたパスワードとBBSとかの
フォームに入力されたパスワードをコンペアする良い方法はないものでしょうか。
0775761
04/05/14 20:16ID:???調べてみます。
0776nobodyさん
04/05/14 23:19ID:???日付から曜日を求めるツェーラの公式ってのがあったと思う
ちと、検索しても全然引っかからない…
その公式の事を書いてあった本も見つからない…
質問は「調べる方法は在りますか?」なので
ありますと言っておこう。
0777nobodyさん
04/05/14 23:26ID:???ツェーラーも見つけられないのか
[(y+[y/4]-[y/100]+[y/400]+[13m+8]/5+d)%7]
0778nobodyさん
04/05/14 23:54ID:???Zeller の公式(普通ツェラーと表記すると思う)はあくまで曜日(というか日数)を求めるものなので、
それだけでは単純に何週目という値が出てこない。
以前 CGI 関係のスレで質問があって書いてみたことがあるけど、もうひとひねり必要。
0779nobodyさん
04/05/14 23:58ID:???0780nobodyさん
04/05/15 00:03ID:???って言うか、前スレだったよ…_| ̄|○
Perl コーディング初心者質問コーナー Part33
http://pc5.2ch.net/test/read.cgi/php/1078076768/934
0781nobodyさん
04/05/15 10:55ID:???「日曜=0曜日というルールだと2004/5/1は6曜日。
2004/5/16はカレンダーで21マス目に現れる。」
これから気付けばint使って簡単に書けるでしょ。
0782lock
04/05/15 11:43ID:if9npvZfあの、最近CGIを作らんとならんコトになりまして、
ファイルのロック関係を調べたのですがちょっとお馬鹿な俺の脳味噌では理解出来ませんでした。
取り敢えずめんどう事は避けたいので、実行ロックをかけてプロセスが同時に動けないようにしたいです。
初めての経験なので負荷とか速度は気にしないことにして、安全を優先させるつもりです。
fllckを使って実現させようと思っているのですが、どのように記述すれば最も安全なのでしょうか?
開発環境はwin98ですが、本番の実行環境はUNIX系のOSです。
お馬鹿な質問で申し訳ありませんが、どなたかよろしくお願いします。
0783nobodyさん
04/05/15 12:05ID:???0785nobodyさん
04/05/15 13:09ID:???もう一台、検証用にマシンを用意してLinuxか*BSDでもインスコ
したほうがよい。
現行のwin98をwin2000以降にしてVMwareって手もあるが。
0787nobodyさん
04/05/15 15:01ID:???http://perldoc.com/perl5.8.4/pod/perlport.html#FUNCTION-IMPLEMENTATIONS
0788782
04/05/15 17:32ID:MHBM3z7f検索すると以下のコードに辿り着いたのですが、
open(OUT, "+< outfile.txt");
flock(OUT, 2);
truncate(OUT, 0);
seek(OUT, 0, 0);
print OUT "........";
close(OUT);
これはイツロックが解除されてるんでしょうか?
closeの時にファイルハンドルといっしょに消滅してるの??
と言いますか実行ロックがやりたいんだけど、プログラムの先頭に
open(OUT, "+< outfile.txt");
flock(OUT, 2);
これを書きっぱなしにしたらダメですか?
0789nobodyさん
04/05/15 17:37ID:???>プログラムの先頭に(略)これを書きっぱなしにしたらダメですか?
プログラムの開始はそこじゃないですよ。
スタートアップルーチン,perl_alloc,construct,parse(,run)して初めて(Perl)プログラムの先頭に行くわけです。
0791782
04/05/15 18:08ID:MHBM3z7fすみません、実行ロックは実行フェーズに対するロックの意でした。
つまり、インタプリタに引き渡された直後の実行フェーズの一番初めの処理としてロックをかけ、
それ以後の処理を複数のプロセスが同時に動いてほしくないと言うことです。
0792nobodyさん
04/05/15 18:08ID:???0793nobodyさん
04/05/15 18:25ID:???0794nobodyさん
04/05/15 18:27ID:???BEGINブロック作ってそこでflock。
そして、ENDブロックでclose。
壊れてもいいファイルだから、closeを書かなくても、
CGIなら問題ないのだろうけど、書いておくのがお約束。
0795nobodyさん
04/05/15 18:33ID:jlBwPWFJ掲示板のデザイン変えようとしてもどこにHTML書けばいいか分かりません。
属性名を変数にしてPrintで書けば良いの?
0796nobodyさん
04/05/15 18:36ID:???スレ違い
■ 設置の方法がわからない場合には
CGI設置について質問
http://pc5.2ch.net/test/read.cgi/php/1054216089/15(テンプレ)
■ 自分で改造できない場合には
【 スクリプト改造依頼スレ 】(丸投げ)
http://pc5.2ch.net/test/read.cgi/php/1076831972/324(テンプレ)
■ 自分で改造するアドバイスが欲しい場合には
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc5.2ch.net/test/read.cgi/php/1077525387/79(テンプレ)
0797782
04/05/15 18:53ID:???794さんの方法で行ってみます。
でも耐久テストに失敗したらまた来るかもしれませぬ。。
0798nobodyさん
04/05/15 19:47ID:???何か小難しい事書いてるけどそんな特殊な事やろうとしてるのかな。
やりたい処理を具体的に書けば良い例がいくらでも出てくる気がするが。
>>797
耐久テストって何じゃいw
0799nobodyさん
04/05/15 20:20ID:???0800nobodyさん
04/05/15 20:44ID:???use hoge;
my $hoge = new hoge();
$hoge->method(@args);
などというように、hogeオブジェクトのメソッドを呼び出そうとすると、
親のfoo::method()が呼ばれて、hoge::method()が無視されてしまうことが
よくあります。hoge::method内でSUPERなどで明示的に呼んではいません。
fooのmethodをmethod2などにリネームすると、「methodなんてメソッドは
パッケージhogeには無い、ひょっとしたらhogeをロードし忘れてるんじゃないの?」
と怒られてしまいます。
この現象は何故起こるのでしょうか?
my $hoge = new hoge();と$hoge->method(@args);の間に
print ref $hoge, "\n";を入れてやると、ちゃんと$hogeはhogeになってます。
原因が分からないので、とてもとてもデバッグしにくいのですが、hoge::methodに
バグがあって読めないのなら、強制的にhoge::methodを呼び出して、
問題のある行でエラー吐いてdieさせるとかはできないのでしょうか?
0803nobodyさん
04/05/15 21:07ID:???すいません、環境書き忘れていました。
Debian woody + Perl 5.6.1です。
同じスクリプトで結果が異なるわけではなく、最初は親クラスのが呼び出されるけど、
子クラスのmethodの中をデバッグ、というか、例えば文法が間違ってる部分を
直したりすると、ちゃんと子クラスのを呼んでくれたりするのですが、
何故親クラスのを呼びに行くのか、何故子クラスのオブジェクトにmethodが無いなどと
言われるのか…。
文法等が間違っているのなら、そこでエラー吐いて止まって欲しいのですが、
親クラスのを平然と呼ばれて続行されると、どこが間違ってるのかわからないので…。
0805nobodyさん
04/05/15 21:12ID:???0806nobodyさん
04/05/15 21:16ID:???mod_perlってapacheのモジュールですよね?
apacheは使ったこと無いのでよく知らないのですが、というかapacheのmod_perlなら
使ってないです。普通のPerl5.6.1です。
0808nobodyさん
04/05/15 22:45ID:???私もPerlのバグだとは思ってないです。
どうもhogeの中でuseしているモジュールが、インストールできてないとかで読めない
場合に発生するみたいですが…。
0809nobodyさん
04/05/16 02:01ID:???物ぐさしないで新しいの入れてご覧。
ActivePerl build 631以前はTkが同梱されておりません。
0810nobodyさん
04/05/16 05:37ID:???問題の起きるサンプルを書いて欲しいところ。
0811nobodyさん
04/05/16 07:49ID:???今日、今だったらlocaltimeで取得出来ますけど。
引数で何とか出来そうですが分かりませんでした。
0814nobodyさん
04/05/16 10:11ID:WJ6PDaM410846903300057678
のように、表示させたいとしたいのですが、
(プロセス番号は、8桁未満のときは0を入れる)
$datafile = time . sprintf("%8d",$$);
だと、
108469033 57678
となってしまいます。
この空白を0で埋めるにはどうすればよいのでしょうか?
0816814
04/05/16 10:32ID:WJ6PDaM4どうも。
$datafile = time . sprintf("%08d",$$) . ".csv";
で解決しました。
0819nobodyさん
04/05/16 15:59ID:???0821nobodyさん
04/05/16 16:53ID:???さすがマルチなだけあるな。
0822nobodyさん
04/05/16 23:45ID:???ある日付の1日前の日付(YYYY/MM/DD)の取得は一度1970年よりの秒数に変換してから再びlocal関数に通すしかないのでしょうか?
もう一つ、
ある月に何日まであるかを返すには閏年の計算は必須でしょうか?(Perlに用意されていますか?)
0823nobodyさん
04/05/16 23:50ID:???たとえば2chのDATを読む時みたいに。
LPWのmirrorをみてみたのですが、更新されてるときは新しくDLするみたいでよくわかりません。
0824nobodyさん
04/05/16 23:56ID:???3/1の前日が2/28か2/29になる以外、すべての日の前日は固定ですが?
2月以外は何日まであるか固定ですが?
それは閏年によって変わるのだから計算は当然必要ですが?
perlにはそんなものを求める関数はありませんが?
0828822
04/05/17 00:29ID:???回答ありがとうございます。
Time::Localモジュールを使えば日付→経過秒数の変換が一発でできるようですね。
ある月の日数算出は普通に組み込んでみようと思います。
また困ったことがあれば質問しに来ます。
どうもありがとうございました。
0829nobodyさん
04/05/17 06:58ID:???use Date::Calc qw(Add_Delta_Days Days_in_Month);
my ($year, $month, $mday) = (2004, 3, 1);
($year, $month, $mday) = Add_Delta_Days($year, $month, $mday, -1);
print "date-1: $year, $month, $mday\n";
my $days = Days_in_Month($year, $month);
print "days: $days\n";
0830nobodyさん
04/05/17 07:33ID:???0831822
04/05/17 08:22ID:???それです!
わざわざサンプルソースまで書き出して頂きありがとうございます(´Д⊂ヽ
Days_in_Monthにあたる関数は自力で作れましたので、
Date::CalcのAdd_Delta_Daysだけを借りてみようと思います。
そして小一時間ほどppmと格闘しなんとかDate::Calcをインストールし、
5/1→4/30の移動を確認できました!
本当にありがとうございました。
# ついでにTime::Localもインストールしておきました。
0833nobodyさん
04/05/17 13:32ID:???0834nobodyさん
04/05/17 13:44ID:???0835nobodyさん
04/05/17 20:26ID:???0836823
04/05/18 02:17ID:???>>826
探したのですが、rangeと検索してもほかの部分が見つかってしまってだめでした。
もうちょっとヒントをいただけませんか。
0837nobodyさん
04/05/18 02:27ID:???0838nobodyさん
04/05/18 07:19ID:15Ww53+yttp://www.studyinghttp.net/rfc_ja/2616/sec14.html#sec14.35
0842nobodyさん
04/05/18 22:40ID:???前に見つけたんだけど、URLがどっかいっちゃった;それでさっきから探してるけど、見つからないんだ。
0843nobodyさん
04/05/18 22:43ID:???0844名無しさん
04/05/18 23:11ID:4Rd9YBtL表の生成部分はなんとか出来そうなのですが
(a)ファイルの中から行を探して変更、削除する部分と
(b)追加する部分で同じ内容で複数行追加しないようにする部分
の方法が頭に浮かびません。どのような方法がありますか?サンプルソースを教えていただけないでしょうか?
1)予定テキストファイルを読み取り次のような表を生成します。
+−−−−+−+−+−+−+−+−+−+−+−・・・
|2004年06月|先月 |今月 |来月 |
+−−−−+−+−+−+−+−+−+−+−+−・・・
| 名前 |1|2|3|4|5|6|7|8|9・・・
+−−−−+−+−+−+−+−+−+−+−+−・・・
| 鈴木 | | |休| | |後| | |
+−−−−+−+−+−+−+−+−+−+−+−・・・
| 佐藤 | | | | |休| | | |
+−−−−+−+−+−+−+−+−+−+−+−・・・
| 田中 | | |前| | | |休| |
+−−−−+−+−+−+−+−+−+−+−+−・・・
2)先月、今月、来月の部分はリンクとなっていてCGIを呼び出し、先月の表、今月の表、来月の表を生成します。
3)名前もリンクになっていてフォームを呼び出し、SELECTタグにより年、月、日と、休、前、後を選択して予定テキストファイルに追加します。
4)休、前、後もリンクになっていて、フォームを呼び出し、予定テキストファイルから該当行を変更、削除します。
予定テキストファイルの内容は
名前ID<>年<>月<>日<>内容
n0001<>2004<>6<>3<>休
n0002<>2004<>6<>5<>休
n0001<>2004<>6<>6<>後
n0003<>2004<>6<>7<>休
名前と名前IDのリストファイルの内容
名前ID<>名前
n0001<>鈴木
n0002<>佐藤
n0003<>田中
0845nobodyさん
04/05/18 23:28ID:???まずは日本語からお勉強しようね。
お仕事をするには早すぎるようですよ。
ぶっちゃけ表はファイルから読み出すだけだし、
書き込みは重複を検査すれば良いだけだろ。
0846842
04/05/19 00:04ID:???ありがとう!見つかったよ。
目的はメルアドのチェックじゃなくてsendmailに渡す際へんなスクリプトを排除したいだけなんだ。
で、なんか一杯記号は許可されてるみたいだから、結局「<」、「>」、「"」だけ切り捨てることにしたよ。
まだperl勉強足りないんだけど、perlって「$」、「@」、「%」とかを入力されても内部で途中で展開しないで
ただの文字列として扱われるみたいね。いい!
0847nobodyさん
04/05/19 00:22ID:???Perlは不得手。全部読んで全部書き出すよろし。
splice()を使うと幸せになれるかもしれない。
(b)追加する部分で同じ内容で複数行追加しないようにする部分
重複チェックはハッシュを利用すると楽。
0848nobodyさん
04/05/19 01:25ID:???>まずは日本語からお勉強しようね。
>お仕事をするには早すぎるようですよ。
人のあらを見つけると大喜びで責め立てる。845はそういうむなしいやつ。
でもな、845だっていいところもあるんだよ。845のいいとこは↓が教えてくれる。
0849nobodyさん
04/05/19 01:31ID:???>まずは日本語からお勉強しようね。
>お仕事をするには早すぎるようですよ。
人生にとって大切なことを的確にアドバイスしてあげたこと
0850nobodyさん
04/05/19 02:31ID:???例えば相手がフォームに「ササ」と半角カタカナで入力する。んで、漏れが
require "jcode.pl";
read(STDIN,$buffer);
$buffer =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
jcode::convert(\$buffer,"euc");
jcode::h2z_euc(\$buffer);
〜処理〜
jcode::convert(\$buffer,"sjis");
print $buffer;
ってやってもうまくいかない。相手がeucで送ってくれば大丈夫だけど他の文字コードだと駄目。
半角カタカナの文字列+全角文字列(例「ササ表示」)ならちゃんと全角カタカナへ変換できるけど。
なんかPERLメモとかには先にeucに変換してあればおkだなんて載ってるけど、全然おkじゃない・・・
相手がどんな文字コードで送ってきても華麗に半角カナを全角カナに変えれちゃうおっとこまえいませんか?
0851nobodyさん
04/05/19 02:37ID:???0852850
04/05/19 03:07ID:???それも駄目なのさ。
多分問題は$bufferの中に半角カナしかないときなんだよね。他の文字も混ざってればちゃんと機能するんだけどね。
まあそんなにこだわることでもないけどできればなぁ
0853nobodyさん
04/05/19 03:33ID:???http://www.shtml.jp/mojibake/hankaku.html
0854nobodyさん
04/05/19 03:33ID:???するんですけでど、どれくらいのレベルから排他制御って必要になってくるんですか?
0855nobodyさん
04/05/19 03:56ID:???【Perl】ファイルロック(排他処理)について語ろう
http://pc5.2ch.net/test/read.cgi/php/1024795138/
0856854
04/05/19 03:56ID:???でも、人が読みこんでる最中に誰かが新たにopenしようとしたらopenエラーになっちゃいますよね。
それは嫌なので一応flock等で誰かがファイルオープンしているときは待たせればいいんでしょうか?
open(DATA,"< test.txt");
flock(DATA,1);
なんたらかんたら
close(DATA);
みたいでよろしいですか?
0859nobodyさん
04/05/19 06:29ID:Q40mcV4Uあれをやってしまうと、本文に+が含まれている場合
空白になってしまうのですがどうすれば半角の+を表示することができるのでしょうか?
++
0860nobodyさん
04/05/19 06:59ID:???「+」は「%2B」にエンコードされてるんだから無問題。
エンコードされていなかったら送信側のバグ。
0861nobodyさん
04/05/19 07:00ID:???0862nobodyさん
04/05/19 07:02ID:???デコードする際にまず+を半角スペースに変換して、それから%??を変換するのはこいつのため。
先に%2Bを+に変換してしまうと半角スペースになってしまう。
0863859
04/05/19 07:34ID:???なるほど。コードをよくよく見てみたら、unpack(デコード)したあとに
+を半角スペースに置換する処理を行っていました。
どうもありがとうございました。
0864850
04/05/19 17:11ID:???やっぱそうですかね、相手が送ってきたものを先にeucに変換する処理も相手が半角カナしか
入力しない場合、jcode.plではeucへの変換が正常におこなわれないみたいですね。
まあ、仕方ないということで半角カナは止めてね。って注意書きいれる事にしますた。
0865nobodyさん
04/05/19 17:19ID:???戻るボタンを押すと普通は
「セキュリティ保護のため、〜〜〜」
っていう文言がでてしまいますが、最近そうならないページを見つけました。
ttp://www.blueberryeye.co.jp/
の注文ページなんですが、間違っても簡単に前のページに戻れるのはいいなぁと思いますが、
やり方がわかるかたいますか?
0866nobodyさん
04/05/19 18:01ID:???.htaccessでIP指定してdenyしてもだめだし
User-Agentがlibwww-perl/5.75なのでそれをdenyしても防げません。
lwpを使ったサンプル探して自分でいろいろテストしてみようと思いましたが
そういうのも見つかりませんし
何方かお知恵を拝借できませんでしょうか
0867866
04/05/19 18:02ID:???●User-Agentがlibwww-perl/5.75なのでそれをdenyしてみましたが防げません。
0868nobodyさん
04/05/19 18:04ID:???前にもそんなネタ振った人がいたな。
入力値引き渡す方法はいろいろあるんだが
調べる気がさらさらない様子で放置されてたような。
0869865
04/05/19 18:12ID:???入力値の引継ぎではなくて、多分キャッシュ関係なんだと思います。
例えば前ページに戻ったとき、フォームに入力していたのが消えずにそれぞれのボックス内に
残ってるんですよ。フォームのあるページを普通のHTMLで作った場合と同じ事が、CGIから吐き出されるHTMLでも
できてるって話です。
0870nobodyさん
04/05/19 18:17ID:???0872nobodyさん
04/05/19 19:01ID:???そんな方法があるのなら知りたいな。
0873865
04/05/19 19:03ID:???そうなんですか?HTMLではその入力値の引継ぎを自動でやってるってことですか?
ただ単にCGIから吐かれたHTMLをブラウザに一定の時間のキャッシュを許すだけとかかなぁと
思ってました。
CGIで作られたページのキャッシュを制御するような機能をPERLで作れるのかなと。
0874nobodyさん
04/05/19 19:19ID:???Perlのコーディングとは全く関係ない
0876865
04/05/19 19:41ID:???何度も読んだ。
なんかみんな質問を勘違いしてるぽ
引継ぎなんてやっぱり関係ないみたい。ブラウザの戻るボタンで情報の再送信普通は自動
でしないけど、それを自動でやっている。っていう話でもない。
例えば、a.htmlにテキストボックスがある。そこに「あいうえお」といれてb.cgiに移る。
b.cgiが何するかなんてどうでもよくて、b.cgiからa.htmlに戻った場合、a.htmlのテキスト
ボックスには、さっき自分で書いた「あいうえお」が残ってるよね。
それは入力値の引継ぎなんて全く関係ない。ブラウザは新しく何かを読みこむわけじゃないし。
それのa.htmlがa.cgiになっても同じ様にするにはってことなんだけどね。
0877nobodyさん
04/05/19 20:03ID:???さっさと消えろ。
では、次の人どうぞ。
0879nobodyさん
04/05/19 20:30ID:???0880nobodyさん
04/05/19 20:52ID:???テキストカウンターなのですが、
<!--#exec cgi="./counter.cgi?id=tes&md=4" -->
とするとSSIエラーが出ます。
?以降を外せば動くんですが・・・。
0882nobodyさん
04/05/19 21:07ID:???しかし>>878よ、>>877は決して間違ってはいないんだぞ。そこの所は理解して欲しい。
>>877の本心を明かす男は↓
0883nobodyさん
04/05/19 21:08ID:???0884nobodyさん
04/05/19 21:09ID:???0885nobodyさん
04/05/19 21:10ID:???0886nobodyさん
04/05/19 21:11ID:???POSTでアップロードしてから戻ると「セキュリティ保護のため、〜〜〜」
ってことならもう少し盛り上がったんだろうけどねぇ。
HTTPヘッダのLocationですっとばすぐらいしか策を思いつかないが、
Perlには関係ないか。
0887nobodyさん
04/05/19 21:54ID:???ある一つのデータファイルに対して、二つ以上の
Perlプログラムからファイルの読み書きを行う場合、
flockを使っていれば排他処理は問題ないですよね?
0890nobodyさん
04/05/19 22:33ID:ObBdfHPa以前、板違いのところで質問しまいましたが、親切にこちらを紹介して頂いたので
来た次第です。今回は教えを乞いたく伺いました。
私はsendmailを使ってメールフォームCGIを作ろうとしています。しかし、
No recipient addresses found in headerというエラーが出てしまいます。
エラーは受け取り人のアドレスがヘッダーにないといっているようなのですが、
変数の中にはアドレスがきちんと入っているんです。
現在、いろいろ試して最終的なソースはこうなっています。
$honbunていうのがbody部分(のつもり)です
$sendmail = '/usr/lib/sendmail -t';
if(open(SENDMAIL,"| $sendmail")){;
print SENDMAIL <<"EOM";
From: $motoadr_1
To: $mail_to
Subject: $staff_subj
Errors-To: $errmailadr
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-2022-JP"
$honbun
EOM
close(SENDMAIL);
}
ヘッダーとボディ部分の間は空行で区切ったのですが、これではダメなのでしょうか?お気付きの方はぜひとも教えてくださいませ。
0892nobodyさん
04/05/19 23:22ID:???sendmailに食わしている内容が間違ってる可能性が高いと
思われるので、
open(SENDMAIL,"| $sendmail")
のところを
open(SENDMAIL,"> 適当なファイルのパス")
としてファイルに書き出してよく調べてみることをお勧め
する。
ありがちなのはヘッダ部に埋め込んでいる$ほげほげのどれ
かの末尾に改行がついていて、そこが空行になってしまって
いるって奴だね。
0893nobodyさん
04/05/20 00:32ID:UfxuQY5M#$1,$2,$3に前回のマッチパターンが入っているからなのかうまく行かないことがあります
$s='921010';
my ($year,$month,$day)=($s=~m/^(\d+)(\d\d)(\d\d)$/);
print "$year,$month,$day\n";
$s2='hogemogesage';
($hoge,$moge,$sage) =($s2= ~m/(hoge)(moge)(sage)/);
print "$hoge,$moge,$sage";
->
92,10,10
4294967295,,Hit any key to close this window...
これを避ける簡単な方法ってないですか?
0896nobodyさん
04/05/20 00:54ID:???0897nobodyさん
04/05/20 00:57ID:UfxuQY5Mばかでした
結局
= ~→=~
お騒がせスマソ
0898nobodyさん
04/05/20 02:58ID:746RqQ7wひとつづつopenしてgrepならできるんだけど。
0899nobodyさん
04/05/20 03:14ID:???0901nobodyさん
04/05/20 05:07ID:???grep -nH 特定の文字列 `find ディレクトリ -type f`
# find ディレクトリ -type f | xargs grep -nH 特定の文字列
# find ディレクトリ -type f -exec grep -nH 特定の文字列 {} \;
0902nobodyさん
04/05/20 05:55ID:???apacheなら
http://httpd.apache.org/docs/howto/ssi.html#includingtheresultsofacgiprogram
0905nobodyさん
04/05/20 20:22ID:???それを find にやらせるか、それとも perl が自分でやるか、というだけの違い
0906nobodyさん
04/05/20 20:25ID:???0907nobodyさん
04/05/20 22:11ID:???perlでレスポンスヘッダに含まれるHTTPのバージョンを
変更したいのですが、できるのでしょうか?
0909nobodyさん
04/05/20 22:56ID:???うまく動かないようですね。で、getcodeを使わずに直で指定して、
$line = Jcode->new($line, 'sjis')->euc;
のようにしたのですが、この$lineをEUC_JPで定義されているDBに渡すと
eucじゃないと言われます。
これは何故なんでしょうか。半角カナの有無を意識せずに文字列を扱うことはできないのでしょうか?
Perl5.6.1、Jcodeは最新のです。
0910nobodyさん
04/05/20 23:03ID:???EUCじゃないと言われてるんならEUCじゃないんだよ。
DBに渡している文字コードを再確認
0911nobodyさん
04/05/20 23:22ID:???typoでsjisじゃなくjisになってましたワン
というか、直に指定してやるしかないのでしょうか?
$lineの入力として複数ファイルを同時に扱う時に、
複数の文字コードがあったりすると困るのですが…。
0912nobodyさん
04/05/20 23:25ID:???# ローカル変数を定義する
local ($sec, $min, $hour, $day, $mon, $year, $date);
# グリニッジ標準時刻を取得する(localtimeは1900年から換算だが、GMTは1970年から)
($sec, $min, $hour, $day, $mon, $year, $date) = gmtime (time + 60 * 24 * 60 * 60);
# 曜日を表すハッシュの文字列を定義する
$date = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") [$date];
# 月を表すハッシュの文字列を定義する
$mon = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") [$mon];
# フォーマット指定の文字列を変数へ書き出す
$vaild = sprintf ("%s, %02d\-%s\-%04d %02d:%02d:%02d GMT", $date, $day, $mon, $year + 1900, $hour + 9, $min, $sec);
この状態で$vaildを見てみると、今日の日付のはずが
Monday, 19-Jul-2004 23:18:34 GMT
のように曜日と月が正確に表示されなくて困ってます。
どの部分を修正すればよろしいのでしょうか。
0913nobodyさん
04/05/20 23:34ID:???↑のこと忘れてください・・・
0915nobodyさん
04/05/21 00:18ID:2dDSzz6yEAN128バーコードを作成したいのですが、
何か良い方法はありませんでしょうか?
GD::BarcodeではEAN128は出力できないし、
まともなサーバサイドアプリケーションは100万円程するしで
悩んでいます。。
0917nobodyさん
04/05/21 01:06ID:???スレ違いなので教えてあげない
0918nobodyさん
04/05/21 04:22ID:hNvgkOa1下のどっちのやりかたでもエラーとなってしまうのですが、(ほかサーバではOK)
対処方法ご存じのかたいらっしゃらないでしょうか?
@ニフティ特有の事情ではないかとは思うのですが。
(なんせsendmailすら使えないし@ニフティ)
use Jcode;
Jcode::convert(\$in{'q'}, 'utf8', 'euc' );
require 'Jcode.pm';
Jcode::convert(\$in{'q'}, 'utf8', 'euc' );
0919918
04/05/21 04:32ID:hNvgkOa1KCatch.pmをおいてuse KCatchしても、エラーがでるし。
0920918
04/05/21 04:41ID:hNvgkOa1動作させたい perl スクリプトが必要とするライブラリを全部転送する必要がある。
ということがわかったのですが、今回のeuc⇒utf8変換をできるようにするためにおいとく必要のあるライブラリはなんでしょうか?
0921918
04/05/21 06:09ID:hNvgkOa1を参考にがんばってるんだがねー。。。足りないモジュール大杉にふてー
0922nobodyさん
04/05/21 06:18ID:???0923918
04/05/21 06:25ID:???0924nobodyさん
04/05/21 06:34ID:???NPHスクリプト
http://tohoho.wakusei.ne.jp/wwwcgi4.htm#NphScript
0925nobodyさん
04/05/21 12:22ID:ERQd2RKf無料HPエリアサービス等で「http://www.server.com/~temp/」が短縮URL「http://temp.server.com」でも表示できる場合、
http://temp.server.com/index.htmを指定しても取得できないファイルが
http://www.server.com/~temp/index.htmで取得できたりするケースがあるんですが、
この場合は「短縮されてないURL」をどのように察知すればよいのでしょうか。
http://tohoho.wakusei.ne.jp/wwwperl2.htm#Sockets
↑コピペ中のソース
0926nobodyさん
04/05/21 13:16ID:???例えば
00000000000
00000000000
という内容のログファイルがあったとして、2行目の左から5番目の文字だけを0から1に書き換える等…
0927nobodyさん
04/05/21 13:17ID:???0928926
04/05/21 13:25ID:???0929nobodyさん
04/05/21 13:26ID:???$sql = "SELECT foo FROM table WHERE bar = ? OR bar = ? OR bar …";
$sth = $dbh->prepare($sql);
しておいて、
@array = ("hage", "hige", "huge");
$sth->execute(@array);
$ref = $sth->fetchall_arrayref();
みたいなことをしたいのですが、0個以上の可変個数の要素をバインドするときって
SQL文の宣言はどういう風にすればいいのでしょうか?
要するにWHEREのOR bar = ?の個数が動的に変化して困るって事なんですが…。
0931nobodyさん
04/05/21 15:54ID:???固定されたSQL文を使い回すのが bind で、
要素が可変個数になるということはSQL文も可変なはずだから、そもそもダメ。
個数が確定してから prepare せんといかん。
SQLの書き方や考え方の話は、ここよりもDBIスレあたりが妥当だろう。
0932nobodyさん
04/05/21 16:18ID:???では@arrayを受け取ってから、joinか何かで動的にSQL文を生成して
prepare、つかそういうやり方ならdoをするしか無いって事ですかね
0933925
04/05/21 16:32ID:ERQd2RKf「短縮されてないURL」を知るべき必要がある事をどこで察知するかじゃなく、
「短縮されてないURL」を知る方法、
ないし短縮URLでもファイルをダウンロードする方法を教えて下さい。
0934nobodyさん
04/05/21 16:47ID:???>「短縮されてないURL」を知る方法
そんなものはアクセスしなけりゃわかるわけがない。
>短縮URLでもファイルをダウンロードする方法
長いURLから短縮URLを推測して試すしかない。
スレ違いなのでここまで
0935nobodyさん
04/05/21 19:38ID:???コピペはやめて、こっちで基礎から勉強。
http://x68000.startshop.co.jp/~68user/net/
0936925
04/05/21 20:15ID:???すっげ、1行追加で動くようになったわ。
thx!
0937915
04/05/21 20:27ID:2dDSzz6y(笑) 親切に教えてくれて有難う。
Barcode::Code128、大変参考になりました。
0938907
04/05/21 21:58ID:jMqF5hwGありがとうございます。やってみます。
0939nobodyさん
04/05/22 06:36ID:???perlスクリプトでGETメソッドから文字列を取り出したいんですが、文字列に半角#が含まれていると#とそれ以降が無視されてしまうんですが回避方法はないでしょうか?
ソース抜粋です。
$buffer = $ENV{'QUERY_STRING'};
@temp = $buffer;
foreach $x (@temp) {
($name, $value) = split(/=/, $x);
$FORM{$name} = $value;
}
$str = $FORM{'str"};
これで $str には#が入ったとき以外は **tp://localhost/test.cgi?str=文字列 の文字列が思ったとおりに取り出せます。
半角=が入ったときもおかしいですが、それは使用予定のケースにないので今回はどうでもいいです。
テストサーバーの環境は
WindowsXP SP1
apache_2.0.47
ActivePerl-5.8.0.806
このようになってます。
よろしくお願いします
0940nobodyさん
04/05/22 06:40ID:???>$str には#が入ったとき以外
入りません。
#の直前までしか入りませんでした。
ちなみに $buffer にも#以前までしか入っていないようです
0941nobodyさん
04/05/22 06:56ID:???0942nobodyさん
04/05/22 07:05ID:???>>941さんの通り、URIでは'#'以降はフラグメントとして扱われるので、
'#'を'%23'にエスケープしておく。
CGI側で元に戻す。
いろいろ問題の多そうなソースなんで、
どこかのスクリプトを参考にして作ってださい。
(CGI.pmを使うのが一番なんだけど)
0943nobodyさん
04/05/22 07:10ID:???str=文字列 の部分に使える文字は決まってるから、
それ以外のものを使いたい場合はURLエンコードしなきゃいけない。
<scheme>://<authority><path>?<query>#<anchor>
#はこんな風に(HTMLの)アンカーとして使うと決まってるので、
鯖にも($buffer)として渡ってきてないんじゃないかな。
詳しいことはrfc2396あたりかな。英語読むと眠れなくなるんで自分で確かめてください . 。oOオヤスミ
0945nobodyさん
04/05/22 07:24ID:???0946nobodyさん
04/05/22 13:02ID:prWBgoDShttp://www.csmoon.com/prog/dcnt.html ここにあるサンプルCGIを設置したんだけど
なぜかinternal Server Error が出まくって全然動かない
環境はRed Hat Linux + Apache 2.0.48です
パーミッション、転送法などが原因かな?
だれか教えて!
0947nobodyさん
04/05/22 13:25ID:???0949nobodyさん
04/05/22 16:46ID:???はずいです
0950nobodyさん
04/05/22 16:53ID:???0951座敷荒氏
04/05/22 19:43ID:PaJLGSDA以下、内容を自分宛にメールで送信する部分です。
「$in{'_email'}」は相手のメアドをFrom:にしないで、
本文のほうに載せたい場合どうしたらいいのでしょうか?
**************************
if (!open(OUT,"| $sendmail -t")) { &error("異常停止","$!","back"); }
print OUT &jis("X-Processed: $date_now\n");
print OUT "X-SENDER: $REMOTE_HOST\[$REMOTE_ADDR\]\n";
print OUT &jis("X-AGENT: $HTTP_USER_AGENT\n");
print OUT "From: $in{'_email'}\n";
print OUT "To: $mailto_order\n";
print OUT &jis("Subject: $mail_subject [$date_num]\n");
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT "Content-Type: text/plain; charset=iso-2022-jp\n\n";
print OUT "\n";
foreach (@in) {
s/"/"/g;
s/&/&/g;
s/</</g;
s/>/>/g;
if (/^\.\t(.*)/) { print OUT &jis("$1\n"); }
elsif (/(.*)\t(.*)/) { print OUT &jis("[$1] $2\n"); }
}
print OUT "\n";
print OUT &jis("$sign\n");
close(OUT);
**************************
0952nobodyさん
04/05/22 20:20ID:???0953座敷荒氏
04/05/22 20:44ID:PaJLGSDAいまはメールの差出人のところに変数$in{'_email'を入れてますが
メール本文の一行目に入れるように変更したということです。
よろしくおねがいします。
0954座敷荒氏
04/05/22 20:57ID:???入れるように変更したいということです。
訂正でつ(/_<。)
0955nobodyさん
04/05/22 21:24ID:???幼稚園生からやり直せ。
今のお前に必要な事だ。
0956座敷荒氏
04/05/22 21:26ID:???0957nobodyさん
04/05/22 21:46ID:???0959823
04/05/22 22:57ID:???0962823
04/05/22 23:24ID:???0963nobodyさん
04/05/22 23:34ID:???RFC2616。Rangeはページ138。
http://www.ietf.org/rfc/rfc2616.txt
0964座敷荒氏
04/05/22 23:45ID:???0965823
04/05/22 23:49ID:???おそらくRange: bytesで比較するのですね。
>>963
Range Retrieval Requestsというのがありましたので、たぶんそれっぽいですね
皆様お手数かけてすいませんでした。
今日はもう時間なので、明日がんばってみますです。
ありがとう〜
0966nobodyさん
04/05/23 18:00ID:fkswZRQD$str = "スノボー";
if( $hoge =~ /$str/){
}
こうするとこういうエラーが出るのですが、どうすれば直りますか。
Unmatched [ before HERE mark in regex m/スノボー << HERE / at hoge.cgi line xx.
0967nobodyさん
04/05/23 18:09ID:???0968nobodyさん
04/05/23 18:59ID:fkswZRQDif( $hoge =~ /\Q$str\E/){
}
こうやったらうまくいきました。
だいたい意味はわかったのですが、日本語を正規表現する時はいつも
\Q\Eで囲まないといけないのですか?
0970nobodyさん
04/05/23 20:33ID:???かといってEUCは一バイトずれでマッチする問題がおきやすかったりで、
よほど注意しないと日本語の正規表現はお勧めできない。
use utf8にしちまえば大丈夫らしいけど、それはそれで今度は正規表現
以外の点でいろいろめんどくさいことがあるしなぁ。
0971nobodyさん
04/05/23 23:42ID:???マッチするから気をつけろ。
0972nobodyさん
04/05/23 23:57ID:???いつも普通にSJIS使ってるけど
0973nobodyさん
04/05/24 00:00ID:???しかし既存サイトを一部だけ UTF-8 にするんだと死にそうだ。
0974nobodyさん
04/05/24 06:52ID:???マルチバイト文字を考慮して作られているので、
ずれた位置でマッチすることもありません。
Perl version 5.8.0以降なら、encoding。
マルチバイト文字の正規表現も素で使えるようになります。
(5.8.1以降ならtr///も対応。)
0975nobodyさん
04/05/25 07:37ID:???perlでリクエストヘッダのHTTPバージョンを任意に変更したいのですが、
実現できる方法はあるでしょうか?
どなたかご回答お願い致します。よろしくお願いします。
0977nobodyさん
04/05/25 07:52ID:???例えば普通なら
GET http://www.yahoo.co.jp HTTP/1.0
とリクエストを送りますが、このHTTP/1.0の部分をHTTP/0.9とか
HTTP/1.2など任意に変更したいのです。
その実現方法が分からず、質問させていただいています。
0978nobodyさん
04/05/25 07:56ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0979nobodyさん
04/05/25 20:18ID:???LWPモジュールはHTTP/1.0と1.1しか対応してないので、
IO::Socket::INETモジュールまたはネットワーク関数(素のソケット)で書くしか。
0980nobodyさん
04/05/26 03:45ID:???なんかCGIのログが頻繁にぶっ飛ぶ(0バイトになる)んですが、
ファイルロック以外でこんな状況になるのはどんなミスが多いんでしょうか?
漠然とした質問で申し訳ないっす。
0981nobodyさん
04/05/26 03:47ID:???△▲ WebProg 初心者の質問 Part8 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1078568723/
0982nobodyさん
04/05/26 03:59ID:???>>981
ああ、すみません。通信間の問題ではないと思うんです。
ファイルロックはflock使ってて、しかもそのプログラム自体にはほとんどアクセスがない状態なんです。
んで、それなのに1日2回くらい飛ぶんです。
さらに、実際には使ってるサーバーが複数プロセスが同時に動かないようになってるんで、
実際んとこファイルロックさえいらん、って状況なんです。
で、ハマってしまって全く原因が分からないから、そーゆう時はどんなミスが多いのかなー?
と言った内容の質問です!長くてすみませぬ。
0983nobodyさん
04/05/26 04:06ID:???0985nobodyさん
04/05/26 16:10ID:???0986nobodyさん
04/05/26 16:48ID:???0987nobodyさん
04/05/26 16:54ID:kkhhiYmo【次スレ】
Perl コーディング初心者質問コーナー Part35
http://pc5.2ch.net/test/read.cgi/php/1085557731/
過去ログのpart30〜32がpc2にもpc5にも見つからんのだけど・・・
0989nobodyさん
04/05/27 09:56ID:???0990nobodyさん
04/05/27 17:13ID:???0991nobodyさん
04/05/27 17:15ID:???0992nobodyさん
04/05/27 17:15ID:???0993nobodyさん
04/05/27 17:17ID:???0994nobodyさん
04/05/27 17:18ID:???0995nobodyさん
04/05/27 17:19ID:???0996nobodyさん
04/05/27 17:20ID:???0997nobodyさん
04/05/27 17:21ID:???0998nobodyさん
04/05/27 17:22ID:???0999nobodyさん
04/05/27 17:23ID:???1000nobodyさん
04/05/27 17:25ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。