Perl コーディング初心者質問コーナー Part34
■ このスレッドは過去ログ倉庫に格納されています
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);
■ このスレッドは過去ログ倉庫に格納されています