トップページ⇒php
1001コメント382KB

Perl コーディング初心者質問コーナー Part34

■ このスレッドは過去ログ倉庫に格納されています
0001前スレの連投で気分崩したので後よろ04/04/05 16:01ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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:???
[過去ログ] 1 of 2

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:???
[過去ログ] 2 of 2

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:???
 [Document&Tutorial]
 ・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:???
初心者の質問は8本目に移行しております。

△▲ WebProg 初心者の質問 Part8 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1078568723/
0008nobodyさん04/04/05 16:28ID:???
過去ログで読めないスレは s/pc2/pc5/ とすると読めるかも知れません。
0009nobodyさん04/04/05 19:00ID:???
初歩的な質問で申し訳ないんですが教えて下さい。
所謂、動作が遅いといわれるモジュールを使用する場合、例えばCGI.pmとして、
オブジェクト指向じゃなく関数指向で利用し、
インポートする関数を極力抑えて少なくするのと、
よく見る:standardとして殆どをインポートするのとでは
前者の方が動作は速くなるのでしょうか?
0010nobodyさん04/04/05 19:33ID:???
>>9
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:???
>>10
ですよねぇ
しかしベンチとったんだけどほっとんど変わらなかったんで聞いたんですが、
まぁ一応これからも関数指向・使う関数のみインポートでやっていきます。
有難うございました。
0012nobodyさん04/04/05 20:36ID:sKUQSXmG
前スレのレス番ミスがアフォすぎて泣けてきますね。
0013nobodyさん04/04/05 21:27ID:???
>12
仕事人★のおかげでログが完全復旧せず「空白の一日」が
出来たからじゃない? 専ブラ使っている人が、
「空白の一日」込みのログをそのまま使っていたせいだと思われ。
0014nobodyさん04/04/05 21:47ID:???
>>11
CGI.pm に限って言えば、現実問題として、誤差の範囲内だと思う
負荷が気になるなら CGI::Lite 使うとかそういう
0015nobodyさん04/04/06 12:17ID:???
sub loadPass
{
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;
}
このようなコードを書いたのですが,
読み込むファイルの最初の行のデータだけが読み込めません。
何が悪いのでしょうか?
00161504/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:???
#!/usr/local/bin/perl
$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:???
↑がなんでforeachにしてるかわからんが。表示させて確かめれ。俺はこうだ。
$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:???
1行目
$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:???
>15
話とは関係無いんだが

$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:???
s/[\n\r]*$//g; ってなんだよ・・・
まあいいけど
0027未承諾広告※ ◆TWARamEjuA 04/04/06 14:21ID:???
>>25
zip -9 -o ./loadPasszip ./loadPass.pl
0028nobodyさん04/04/06 16:09ID:???
ここは質問者の感謝が最近足りていないスレですね。
0029nobodyさん04/04/06 17:57ID:???
>>26
>>21じゃないけど、なんかおかしい? chompは不安だから自前でやってるんでは?
0030nobodyさん04/04/06 18:02ID:???
>>29
/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:???
いま、UPされたファイルをCGI.pmを使ったりして一度保存し、
それをImageMagickでまた読み込んで編集して保存してるんですが、
これをわざわざ一度保存せず、編集して書き出すことって出来ないでしょうか?
いろいろ調べたのですが、どうもwin環境だからか、何度試しても動いてくれません。

CGI.pmを利用し、アップしたファイルのファイルハンドルが$fileに入ってます。
$img = Image::Magick->new;
$img->Read(file=>\$file);

↑こんな感じで動くと書いてあるサイトがあったりするのですが、
読み込んでくれません。
どのようにすれば可能なのか、また例えばwin環境では無理なのか等、
教えていただけませんでしょうか。
0033nobodyさん04/04/07 03:12ID:???
>>32
>>1
http://www.imagemagick.org/www/perl.html#exam
0034nobodyさん04/04/07 05:02ID:???
>>33
えっと、そのページは翻訳しもって一通り読んでます。
で、そのスクリプト例の項目がどう関係あるのかわからないのですが。。
つまり、そんなこと出来ないということでしょうか?
0035nobodyさん04/04/07 06:45ID:???
>>34
私のところでは、問題発生しました…で強制終了。
ファイルハンドルではなぜか使えない。
0036nobodyさん04/04/07 07:20ID:???
>>35
ああやっぱりそうですか・・・うちもperlが強制終了しちゃいます。
UNIX系の環境ではどうやら動くようなのですが、
レンタルしてる鯖につっこんで実験ってのはこわくてできないし(強制終了ですからねぇ)
そもそもローカルテスト環境と本番の環境で違うファイルにしなければならないというのは
少々困りものですし・・・。

出来ないなら諦めて今までどおり一旦保存して再読み込みでいくしかないですね。
しかし検索してもこのような問題が出てこないんで、やはり書き方に問題があるような気も。
もうちょっとだけ調べてみます。
00371504/04/07 09:13ID:???
>>16-31
なんとか解決できました。
ありがとうございました。
0038nobodyさん04/04/07 16:02ID:9kyfgT/3
*hoge = 10;
とは、どういう事なのでしょうか?
よく分りません。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています