Perlコーディング初心者質問スレ Part 44
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/10/17(月) 00:47:17ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0002nobodyさん
2005/10/17(月) 00:47:57ID:???CGI: Common Gateway Interface part 13
http://pc8.2ch.net/test/read.cgi/php/1126436361/
【Perl,CGI】参考書籍 第三版
http://pc8.2ch.net/test/read.cgi/php/1030209573/
【Perl】ファイルロック(排他処理)について語ろう
http://pc8.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc8.2ch.net/test/read.cgi/php/1034645635/
Perlモジュールについて
http://pc8.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc8.2ch.net/test/read.cgi/php/1030548610/
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc8.2ch.net/test/read.cgi/php/1077525387/
【 スクリプト改造依頼スレ 】(丸投げ) part4
http://pc8.2ch.net/test/read.cgi/php/1127916965/
0003nobodyさん
2005/10/17(月) 00:48:29ID:???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
0004nobodyさん
2005/10/17(月) 00:49:52ID:???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
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と誤記)
0005nobodyさん
2005/10/17(月) 00:50:39ID:???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://pc5.2ch.net/php/kako/1059/10590/1059043704.html
part27 http://pc5.2ch.net/php/kako/1060/10608/1060808783.html
part28 http://pc5.2ch.net/php/kako/1063/10635/1063562491.html
part29 http://pc5.2ch.net/php/kako/1066/10662/1066286828.html
part30 http://pc5.2ch.net/test/read.cgi/php/1069846177/
0006nobodyさん
2005/10/17(月) 00:51:22ID:???part31 http://pc5.2ch.net/test/read.cgi/php/1072896288/
part32 http://pc5.2ch.net/test/read.cgi/php/1075545279/ (タイトルに31と誤記)
part33 http://pc5.2ch.net/test/read.cgi/php/1078076768/
part34 http://pc5.2ch.net/test/read.cgi/php/1081148490/
part35 http://pc5.2ch.net/test/read.cgi/php/1085557731/
part36 http://pc5.2ch.net/test/read.cgi/php/1089779036/
part37 http://pc5.2ch.net/test/read.cgi/php/1093106507/
part38 http://pc5.2ch.net/test/read.cgi/php/1097158988/
part39 http://pc5.2ch.net/test/read.cgi/php/1101522903/
part40 http://pc5.2ch.net/test/read.cgi/php/1106816922/
part41 http://pc8.2ch.net/test/read.cgi/php/1110383236/
part42 http://pc8.2ch.net/test/read.cgi/php/1116970588/
part43 http://pc8.2ch.net/test/read.cgi/php/1123777607/ (前スレ)
0007nobodyさん
2005/10/17(月) 00:52:36ID:???[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/
[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873110378/
[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.7/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://search.cpan.jp/
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0008nobodyさん
2005/10/17(月) 00:53:16ID:???[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
関連スレ
正規表現道場@2ch Part4
http://pc8.2ch.net/test/read.cgi/php/1105930285/
0010nobodyさん
2005/10/17(月) 01:08:17ID:???0011nobodyさん
2005/10/17(月) 01:42:22ID:???誰か (ちゃんとしたスクリプトを書いてくれるとこ) に依頼した方が会社もお前もいい判断だろうに。
1〜2週間やそこら悩んでできないくらいだったらそのほうがはるかにコストパフォーマンスがよいハズ。
つかそんなことで雇ってもらえてるのが、何ていうか、うらやましい。
0012nobodyさん
2005/10/17(月) 01:48:57ID:???0013766
2005/10/17(月) 01:57:00ID:???おっしゃるとおりです。おいらもできるってゆっちゃったのがいけなかったんです。ほんとに前スレの999ですね。。。情けないです。
0014766
2005/10/17(月) 01:59:05ID:???今回だけマジで助けてほしい。。お願いします。
0015nobodyさん
NGNG0016nobodyさん
2005/10/17(月) 02:20:21ID:???まだ出来てないなら要点まとめて頂戴。
まずは、送信したフォームの情報が正しく所得できているのか。
↓
POSTでなく、GETで値をみられるようにする。
データを保存する方法はわかっているのか。
↓
変数に入れた文字が保存できたのか調べる。
0017nobodyさん
2005/10/17(月) 02:43:10ID:???買い物などのWEBで、検索や完了まで時間がかかるとき、「ただいま検索(登録)中です」のような一時的画面を表示させたいのですが、
perlではどのような方法があるでしょうか?
一定時間(例えば1分とか)は、特定の一時ページを表示して、
完了した時に完了ページを表示するものをイメージしています。
javaなどでは時々このようなページを使っているとこがあるのですが。。。。
一応、小枝とかその他有名なサイトは見たんですが、
こういう点での会報がわからなくて。。。。
0018766
2005/10/17(月) 02:50:52ID:???すいません。ありがとうございますです。
・送信したフォームの情報はexcelで開いたとき、名前が文字化け(EUCでやってるからだと思いますが、解決策わからず。。)
・変数にいれた文字(回答番号 1とか2とか)はcsvに数字で保存できています。
【お手上げ】
・前スレ >>981 に書いたような並びでexcelに保存ができなし。。
・名前をいれてなかったらエラー(送信できない)ようにしたい。
です。何卒ご指導お願いいたします。。まじですいません。
001916
2005/10/17(月) 03:04:21ID:???「エクセルは関係ない」。
エクセルで読める表示形式で保存したいって言うのは最後の手段で、今はそこまでいってないので頭から忘れてください。
送信する
↓
データを受け取る
↓
ファイルに保存する
第一段階でHTMLのメソッドをgetに・・・
って現段階のコード、どっかにアップしてもらったほうが早そうね。
もうちょっと常駐しとく。
002016
2005/10/17(月) 03:21:03ID:???0021nobodyさん
2005/10/17(月) 03:41:01ID:???現段階のコードは前スレに。
参考にやり取りを列挙すると
前スレ http://pc8.2ch.net/test/read.cgi/php/1123777607/ の
Q >>922-925
A >>931,932
Q >>936-938
A >>950
Q >>954-956
A >>958
Q >>981,982-986 (現状の全ソース)
その要件を実装するのはすぐにできるけれど、
完成物を渡してしまっても766のためにはならないしな…
0022nobodyさん
2005/10/17(月) 03:51:17ID:???じゃないとまた同じ事繰り返す羽目になる
002316
2005/10/17(月) 04:19:43ID:???0025766
2005/10/17(月) 04:40:42ID:???レス有難うございます。
ヒントだけでも結構です。。後はもちろん自分でなんとか完成させるつもりです。
何卒宜しくお願いいたします。
0027766
2005/10/17(月) 04:54:56ID:???http://www.nextftp.com/sentobeat/
皆さんに頼りっぱなしなのもわかっております。
ヒントだけでもいただければもちろん自分でもなんとかするようにします。
なんとか宜しくお願いいたします。。マジ泣
002816
2005/10/17(月) 05:03:25ID:???希望動作は最初のとおりでいいのよね?
002916
2005/10/17(月) 05:12:34ID:???0030766
2005/10/17(月) 05:13:39ID:???まじですか ほんとに有難うございます。。
はい。希望動作は >>18 に書いたものです。
今なんとか自分でもとりあえずエラー機能をつけようと思って
#入力チェック
if ($in{name} eq '') { &error('名前を入力してください',''); }
を頭につけてみたんですが、動きませんでした。。orz
何卒宜しくお願いいたします。
0031766
2005/10/17(月) 05:16:11ID:???ありがとうございます。
http://other.free-uploader.com/up/
でお願いしますです。
003216
2005/10/17(月) 05:30:28ID:???ソース汚いままだけど保存はちゃんとされるはず。
読みにくかったfont size=2はスタイルに勝手に変えちゃったままですが。
003316
2005/10/17(月) 05:32:40ID:???003416
2005/10/17(月) 05:41:52ID:???0035766
2005/10/17(月) 05:42:40ID:???有難うございますです。マジで感謝です。
今試してみたんでうが、動かない。。泣
パーミッションもなおしますた。
はじめのはquestion_1.inc っていうふぁいると連動してたんですが、
作っていただいたものは関係ありますか?
question_1.cgiにいきなりアクセスですよね?
003616
2005/10/17(月) 05:44:24ID:???usestrictでエラー追いやすいように一つにまとめました。
0037766
2005/10/17(月) 05:53:08ID:???!!!!
でけてるー!!! 感謝です!
こんな朝方まで付き合ってくださって本当にありがとうございます。大泣
ソースみたらやっぱり全然違いますた。。
これは質問をquestion_1.tsvから読み込まなくても、index.html → post でquestion.cgiでももしかしていけますか?
003816
2005/10/17(月) 05:57:15ID:???perlの中の変数はかなり弄ったけど、フォームの部分は触ってません。
0039766
2005/10/17(月) 06:04:44ID:???わかりましたです!やってみますです。
本当に有難うございます。
あと名前をcsvに書き出したいんですが、$in{name}で書き出せるのでしょうか?(配列は自力でやりますです。)
あとその名前が入っていなかったら、エラーにしたいんですが、さっき入れた if ($in{name} eq '') { &error('名前を入力してください',''); } じゃだめでしょうか?
これで最後の質問です。。ご指導おねがいできませんでしょうか?
0040766
2005/10/17(月) 06:16:25ID:???すませんです。。せっかく作っていただいたのですが、
1人目の名前: name1
その人の1〜3問目の回答番号: hoge1, hoge2, hoge3,
1〜3問目の正解番号: anser1,anser2,anser3
2人目の名前: name2
・
とすると
name1、hoge1, hoge2, hoge3,(改行)
”空欄”,anser1,anser2,anser3(改行)
name2、hoge1, hoge2, hoge3,(改行)
”空欄”,anser1,anser2,anser3(改行)
・
になってませんでした。。。泣
hoge1,anser1(改行)
hoge2,anser2(改行)
・
になってました。。もう一度みてもらえませんでしょうか、、再度大泣
004116
2005/10/17(月) 06:23:47ID:???いつのまにか名前入力とか増えてたのね。
>あと名前をcsvに書き出したいんですが、$in{name}で書き出せるのでしょうか?(配列は自力でやりますです。)
フォームで<input type="text" name="name" value="">としていれば$in{name}に入る。
>あとその名前が入っていなかったら、エラーにしたいんですが、さっき入れた if ($in{name} eq '') { &error('名前を入力してください',''); } じゃだめでしょうか?
cgi-lib.plでのエラー表示用はCgiDie。CgiErrorでもいいけどどっちがいいとかは忘れた。
unless ($in{name}) { &CgiDie('名前を入力してください');}
とりあえず、ヒキなおいらに頼るような仕事は今後受けないようしましょうね。
昔、友達に頼まれたCGIが、これによく似てたから作ってみただけですので。
↑これも、ただ働きだったけど。
0042766
2005/10/17(月) 06:36:14ID:???レス有難うございます。やってみますです。
はいです。今後出来ない仕事は請けないです。(絶対)
>>40 の内容をいただいたソースもとにいじってみたんですけど
やぱりエラーでした。。
# CSVへの書き出し
open (CSV , '>>file.csv');
flock (CSV,2);
print CSV join(',', $in{name}, $in{'Q'.$i}), "\n";
print CSV join(',', '', $array[1]), "\n";
flock (CSV,8);
close (CSV);
004316
2005/10/17(月) 06:36:39ID:???こゆこと?
my$data;
my@q1;
my@q2;
for (my$i = 1; $i <= @question; $i ++) {
my@array = split("\t", $question[$i - 1]);
push(@q1, $in{'Q'.$i});
push(@q2, $array[1]);
}
$data = $in{name}.','.join(',', @q1)."\n".','.join(',', @q2)."\n";
正解を保存する理由もよく分からないままなんですが。
あと、選択する問題が4つ目とか増えるなら36行めを
for (my$s = 1; $s <= (@array - 2); $s ++) {
にしないとだめです。
0044766
2005/10/17(月) 06:46:20ID:???はっ!! できてる!
有難うございますー!! (泣きっぱなし)
名前は今EUCなので、excel開けたときに文字化けすてるんですが、
こいつをcsvに書き出すときに直すソースってありますでしょうか?
(ほんとにこれで最後でございます。。)
0045766
2005/10/17(月) 06:53:52ID:???をrequire "cgi-lib.pl";の後に挿入したら、名前しれているのに
でっかく 名前を入力してください て出ます。。
いれるとこ間違ってるのかな?
004616
2005/10/17(月) 06:56:07ID:???読み方 : シーエスブイ
フルスペル : Comma Separated Values
別名 : コンマ区切り
データの保存形式のこと。文字コードの指定はない。
エクセルはShift_jis限定だっけ?
メモ帳じゃないテキストエディターで変換保存すれば読めるはず。
保存時からShift_jisにしたいのならコード変換の処理が必要。
というか、ラジオボタンで値が数字だけだからいらなかったのに、テキストフォームつけるなら、Jcodeとか必要よ?
>>45
&ReadParse;の後
0047766
2005/10/17(月) 07:08:46ID:???jcode.pl 入れますた。
下のコードをどっかにいれたりしたらokだったりしますか?
# jcode.plを用いたコード変換
require 'jcode.pl';
open READ, '<sjis.txt';
open WRITE, '>euc.txt';
while(my $data = <READ>){
jcode::convert(*data, 'euc');
print WRITE $data; }
close WRITE; close READ; exit;
004816
2005/10/17(月) 07:17:18ID:???先頭で
require 'jcode.pl';
さっき変えたところで
$data = $in{name}.','.join(',', @q1)."\n".','.join(',', @q2)."\n";
jcode::convert(\$data、'sjis');
# CSVへの書き出し
というかエクセルは文字コード固定なの?
OOoしか使ってないからエクセルのことは知らないよ。
0049nobodyさん
2005/10/17(月) 07:31:39ID:???2ch外でやってもらえません?
0050766
2005/10/17(月) 07:49:53ID:???長い間ほんとにお手数おかけしました。
無事完成いたしましたです。
本当に感謝です。たすけていただいて本当にうれしくて泣きそうでした。
有難うございました。
これから教えていただいたことを無駄にしないように自分で勉強かさねていきますです。
>>49
すいませんでしたです。
0051nobodyさん
NGNG005216
2005/10/17(月) 07:53:59ID:???次の質問どぞー
↓
0053nobodyさん
2005/10/17(月) 08:09:02ID:???0054nobodyさん
2005/10/17(月) 08:39:52ID:???0055nobodyさん
2005/10/17(月) 09:18:14ID:???0056nobodyさん
2005/10/17(月) 10:19:11ID:???0058nobodyさん
2005/10/17(月) 13:09:39ID:???二度と来ないでくれ。
0059nobodyさん
2005/10/17(月) 17:49:53ID:???0060nobodyさん
2005/10/17(月) 18:40:37ID:???そこに誘導(隔離?)するのがいいかもね。
0061nobodyさん
2005/10/17(月) 19:11:36ID:???http://pc8.2ch.net/test/read.cgi/php/1102980903/
ここに誘導しとけばよかったね
0062nobodyさん
2005/10/18(火) 00:10:47ID:aW0OtyWyプログラム名は test.cgi です。手元で、% ./test.cgi > log として、出力されたログを見ると、きちんと
EUC-JPで出力されているのですが、ブラウザでアクセスしたり、fetch コマンドでアクセスしたり、telnet で
直接WebServerと話したり、とにかくApache を通すと、日本語の部分が、&xxx; と、文字実体参照の形に
なってしまいます。どうすれば文字化けを無くせるでしょうか。
(余計な部分を切り詰めた)プログラムを貼ります。
#! /usr/local/bin/perl -w
binmode(STDOUT, ":encoding(euc-jp)");
$filename= "/usr/local/man/ja/man3/strlen.3.gz";
$command = "gzcat $filename | /usr/local/bin/groff -man -Thtml -dlang=ja_JP.eucJP";
open(PIPE, "-|:encoding(euc-jp)", "$command") or die;
@html = <PIPE>;
close(PIPE);
print "Content-type: text/html; charset=euc-jp\n\n";
for $text (@html) {
print $text;
}
006362
2005/10/18(火) 00:12:05ID:aW0OtyWyコマンドライン上で ./test.cgi > log とした時の、ファイル log の中の一部分。
<a href="#名称">名称</a><br>
WebServer にCGIを起動させて結果を得た場合の、上と同じ部分。(アンド記号はわざと全角にした。)
<a href="#&Igrave;&frac34;&frac34;&Icirc;">&Igrave;&frac34;&frac34;&Icirc;</a><br>
環境。
OS: FreeBSD 5.4-RELEASE i386
WebServer: Server version: Apache/1.3.33 (Unix)
Perl: This is perl, v5.8.7 built for i386-freebsd-64int
0065nobodyさん
2005/10/18(火) 00:27:48ID:aW0OtyWyHTMLにするのはあきらめて、Plain text で我慢しろ、っていう意味ですか?
0067nobodyさん
2005/10/18(火) 03:43:48ID:???いちいちCGIで出力するより、htmlで吐いてアップした方が良いとは思うが・・・。
コマンドラインとApacheで動作が異なる場合はまず環境変数を疑う。
とりあえず2行目あたりに
$ENV{'LANG'} = 'ja_JP.eucJP';
を挿入。これで大丈夫だと思う。確かめてないけど。
0069nobodyさん
2005/10/18(火) 13:57:42ID:???フォルダの中身を全て消す処理というのはどうすれば良いのでしょうか?
ファイルの場合は @Test=''; これだけで消せますが、
フォルダの中身全てを消去する方法が判らず製作が滞っています。
何方かお知恵をお貸し下さい。お願いします。
0070nobodyさん
2005/10/18(火) 14:03:18ID:???0072nobodyさん
2005/10/18(火) 14:29:41ID:???ここにツッコミを入れる奴はおらんのか?(笑)
0073nobodyさん
2005/10/18(火) 14:48:42ID:???@Test = `del c:\*.*`;
とするんじゃなかったっけ?
0074nobodyさん
2005/10/18(火) 15:15:57ID:???0075nobodyさん
2005/10/18(火) 15:41:11ID:???また>>16が降臨して、>>69の掲示板スクリプトを全部作ってやればいい。
但し、↓のスレでやってほしい。
■こんなCGI作ってください■
http://pc8.2ch.net/test/read.cgi/php/1102980903/
0076nobodyさん
2005/10/18(火) 17:06:06ID:???0077nobodyさん
2005/10/18(火) 17:11:13ID:???0078nobodyさん
2005/10/18(火) 21:16:25ID:???> とりあえず2行目あたりに
> $ENV{'LANG'} = 'ja_JP.eucJP';
> を挿入。
で、うまく行きました。
%gzcat /usr/local/man/ja/man3/strlen.3.gz \
| env -i /usr/local/bin/groff -man -Thtml -dlang=ja_JP.eucJP
と、環境変数無しで実行すると、groff が実体参照を吐くことも確認できました。
ありがとうございました。
0079nobodyさん
2005/10/18(火) 22:15:08ID:???レンタル鯖のCGIで接続したい場合、どういった方法を取ればいいのでしょうか。
CGI自体はローカル起動、ローカルのMySQL、ローカル起動、レンタル鯖のMySQLで正しく動くので、スクリプト上のエラーではないと思います。
0080nobodyさん
2005/10/18(火) 22:25:23ID:???htmlの方で、
<form method="post" action="****.cgi">
コメント<Input Type="text" Name="com" Size="**" Maxlength="**">
<INPUT TYPE="image" SRC="img/send.jpg" align=right>
<form>
としておいてテキストを書込み、SENDボタンを押すと、CGIが動作しコメントがログに書込される、というものです。
でperlのCGIの方で(既存のCGIを自分で修正)
#!/usr/bin/perl -w
use CGI;
変数宣言
$form = new CGI;
$com = $form->param('com');
open (TEXTFILE,">>./log.txt")
print TEXTFILE $com;
print TEXTFILE "\n";
close (TEXTFILE);
としてるのですが、どうにもうまくいきません。
どうすればうまくいくかヒントでもいただけませんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています