Perlコーディング初心者質問スレ Part 45
■ このスレッドは過去ログ倉庫に格納されています
0001988
2005/12/08(木) 22:48:27ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0398nobodyさん
2006/01/07(土) 23:34:23ID:???「初心者なので」というセリフは大嫌いだが、>>391をそのまま実行すると
print "content-type: text/html" . \n\n; でエラー。当然だがね。
0399382-383
2006/01/07(土) 23:35:54ID:5axJGSRVopen(TEMPLATE, "./template.html");
@lines = <TEMPLATE>;
close(TEMPLATE);
print "content-type: text/html\n\n";
for ($i = 0; $i < @lines; $i++) {
$line = $line[$i];
#以下、前記のとおり
print $line;
}
exit 0;
でも先の問題は解決されません。
0400382-383
2006/01/07(土) 23:36:41ID:5axJGSRV0401nobodyさん
2006/01/07(土) 23:37:43ID:???こっちでは再現しないけど。「前記の通り」とかじゃなくてフルに書いてみ?
あとPerlのバージョン含めた実行環境も。
0402382-383
2006/01/07(土) 23:41:59ID:5axJGSRV$comment1 = "";
open(TEMPLATE, "./template.html");
@lines = <TEMPLATE>;
close(TEMPLATE);
print "content-type: text/html\n\n";
for ($i = 0; $i < @lines; $i++) {
$line = $lines[$i];
$line =~ s|<textarea name="comment1" cols="60" rows="10"></textarea>|<textarea name="comment1" cols="60" rows="10">$comment1</textarea>|;
print $line;
}
exit 0;
駄目。
#!/usr/local/bin/perl
$comment1 = "test";
open(TEMPLATE, "./template.html");
@lines = <TEMPLATE>;
close(TEMPLATE);
print "content-type: text/html\n\n";
for ($i = 0; $i < @lines; $i++) {
$line = $lines[$i];
$line =~ s|<textarea name="comment1" cols="60" rows="10"></textarea>|<textarea name="comment1" cols="60" rows="10">$comment1</textarea>|;
print $line;
}
exit 0;
これも駄目です。
template.html の内容と印刷結果は載せなくても大丈夫ですか。
0403nobodyさん
2006/01/07(土) 23:42:28ID:???そうすれば直ぐに答えがかえってくるんだから。
0404382-383
2006/01/07(土) 23:44:11ID:5axJGSRVこれは perl, v5.6.1 built for i386-linux です
0405382-383
2006/01/07(土) 23:46:11ID:5axJGSRV>>402 に書いたのは全行です。
テストなので、これだけしか書いていません。
これだけしか書かないうちに先の不都合が見つかりました。
もっとも、最終的にやろうとしていることはありますが、それらはまだ書いていません。
この問題の解決が先なので。
0406nobodyさん
2006/01/07(土) 23:47:27ID:???0407382-383
2006/01/07(土) 23:48:07ID:5axJGSRV#!/usr/local/bin/perl
$comment1 = "";
open(TEMPLATE, "./template.html");
@lines = <TEMPLATE>;
close(TEMPLATE);
print "content-type: text/html\n\n";
for ($i = 0; $i < @lines; $i++) {
$line = $lines[$i];
$line =~ s|<textarea name="comment1" cols="60" rows="10"></textarea>|<textarea name="comment1" cols="60" rows="10">$comment1</textarea>|;
print $line;
}
exit 0;
0408nobodyさん
2006/01/07(土) 23:48:16ID:???前者も後者も正常に実行できている。ソースを見てもスクリプトの問題とは思えない。
エラーの出方から見てえらく特殊な環境で実行しているようにしか思えない。
perlバージョンだけでなく、OSのバージョンも。
0409382-383
2006/01/07(土) 23:50:31ID:5axJGSRV「雛形の」という意味ですか。
であれば、違います。
雛形で言えば、該当行の下には
</form>
</body>
</html>
などの行もあります。
0410nobodyさん
2006/01/07(土) 23:50:41ID:???コマンドラインで実行できないの?
0411382-383
2006/01/07(土) 23:56:08ID:5axJGSRV0414382-383
2006/01/07(土) 23:58:04ID:5axJGSRVRed Hat Linux 7.2 2.96-118.7.2
0415382-383
2006/01/08(日) 00:00:24ID:0I8ISceR日ごとに書庫化されています。
スクリプトを実行するたびに書庫にログが追加されています。
0416nobodyさん
2006/01/08(日) 00:01:40ID:???RedHat7.2+perl5.6.1で「コマンドライン実行」した結果は?
「name は予約語となる可能性があります。あるいは、name の前にオペレータが抜けてはいませんか。」
なんて表示が日本語で出てくるわけじゃないよな?
0417382-383
2006/01/08(日) 00:02:34ID:0I8ISceR必要なら言ってください。
0418382-383
2006/01/08(日) 00:03:30ID:0I8ISceRFAQ に「当サーバではコンソールの使用を認めておりません。」とあります。
参考になりますか。
0420382-383
2006/01/08(日) 00:05:19ID:0I8ISceRどういうことですか。
0421nobodyさん
2006/01/08(日) 00:10:14ID:???あと自作CGIはローカルに実行環境を持って、そこでテストしてからレン鯖に持っていくのが常識。
で、結論から言うと>>402のスクリプトに異常はない。これでエラーが出てるなら
perl以外の問題である非常に高い。レン鯖の名前を出せるようなら、親切な人が
検証してくれる可能性もあるが。
0422nobodyさん
2006/01/08(日) 00:10:29ID:???市ねってことでしょ。まさか自分のPCにPerlも入れてない?
0423nobodyさん
2006/01/08(日) 00:11:03ID:???0424nobodyさん
2006/01/08(日) 00:18:25ID:???0425nobodyさん
2006/01/08(日) 00:22:07ID:???初心者回答者は答えられない言い訳を質問者に転嫁することが多いですね
0426nobodyさん
2006/01/08(日) 00:22:27ID:???ですが何か?
0427nobodyさん
2006/01/08(日) 00:28:21ID:???0428nobodyさん
2006/01/08(日) 00:29:43ID:???0431nobodyさん
2006/01/08(日) 01:14:47ID:???0432nobodyさん
2006/01/08(日) 01:17:17ID:???0434nobodyさん
2006/01/08(日) 01:17:57ID:???0436382-383
2006/01/08(日) 01:27:57ID:???0438nobodyさん
2006/01/08(日) 01:46:42ID:???ID出してもどうせだれも答えられないんだからID出すこと自体無意味
0439nobodyさん
2006/01/08(日) 01:48:20ID:???初心回答者は自画自賛もお手の物です。
0441nobodyさん
2006/01/08(日) 01:53:13ID:???0442nobodyさん
2006/01/08(日) 01:58:25ID:???0443nobodyさん
2006/01/08(日) 02:00:29ID:???スペースじゃなくて文字が入っていても結果が同じだと言ってるのだから何の解決にもならない
二つスクリプト貼ってるだろ
よく読め
ボケカス
0444nobodyさん
2006/01/08(日) 02:08:37ID:???俺ンとこでも再現した!
0445nobodyさん
2006/01/08(日) 02:09:04ID:???エラーメッセージ嫁
0446nobodyさん
2006/01/08(日) 02:16:12ID:???<HTML>
<BODY>
<FORM action="" method=POST>
<TEXTAREA name="comment1" cols="60" rows="10"></TEXTAREA>
</FORM>
</BODY>
</HTML>
実行結果
<HTML>
<BODY>
<FORM action="" method=POST>
<TEXTAREA
</FORM>
</BODY>
</HTML>
0448nobodyさん
2006/01/08(日) 02:20:40ID:???0450nobodyさん
2006/01/08(日) 02:22:59ID:???モノは出力されてんだから
シェルからでも同じ
0452nobodyさん
2006/01/08(日) 02:24:42ID:???<HTML>
<BODY>
<FORM action="" method=POST>
<TEXTAREA
</FORM>
</BODY>
</HTML>
0453nobodyさん
2006/01/08(日) 02:25:33ID:???みんな優しいのな。
仕事なら自分で解決しろとしか俺は言わんが。
0454nobodyさん
2006/01/08(日) 02:26:06ID:???fedora core 4
0455nobodyさん
2006/01/08(日) 02:26:13ID:???content-type: text/html
<HTML>
<BODY>
<FORM action="" method=POST>
<textarea name="comment1" cols="60" rows="10">test</textarea>
</FORM>
</BODY>
</HTML>
0456nobodyさん
2006/01/08(日) 02:27:15ID:???いったいおまえらにバージョンの差異がわかるのかと(ry
0459nobodyさん
2006/01/08(日) 02:31:00ID:???0460nobodyさん
2006/01/08(日) 02:31:27ID:???0462nobodyさん
2006/01/08(日) 02:32:15ID:???Content-type: text/html
<HTML>
<BODY>
<FORM action="" method=POST>
<TEXTAREA
</FORM>
</BODY>
</HTML>
$comment1 = "test"; # の場合
Content-type: text/html
<HTML>
<BODY>
<FORM action="" method=POST>
<TEXTAREA
</FORM>
</BODY>
</HTML>
0463nobodyさん
2006/01/08(日) 02:32:30ID:???0464nobodyさん
2006/01/08(日) 02:33:42ID:???0465nobodyさん
2006/01/08(日) 02:34:07ID:???というかこいつらのデバッグってただ流せれば終わりなの?
0466nobodyさん
2006/01/08(日) 02:35:39ID:???0468nobodyさん
2006/01/08(日) 02:35:45ID:???$line =~ s|<TEXTAREA name="comment1" cols="60" rows="10"></TEXTAREA>|<TEXTAREA name="comment1" cols="60" rows="10">$comment1</TEXTAREA>|;
$line =~ s|comment1" cols="60" rows="10"></TEXTAREA>|comment1" cols="60" rows="10">$comment1</TEXTAREA>|;
どっちでもダメだわこりゃ
0469nobodyさん
2006/01/08(日) 02:37:44ID:???するぐらいならヒアドキュメントのほうがどれだけいいことか。
0470nobodyさん
2006/01/08(日) 02:38:01ID:???0473nobodyさん
2006/01/08(日) 02:40:19ID:???0474nobodyさん
2006/01/08(日) 02:41:38ID:???0476nobodyさん
2006/01/08(日) 02:43:14ID:???あの質問ではあんなテンプレートあってもなくても意味がないような気がするが
のちのちの完成形ではテンプレートを読み込むというのが絶対条件なら
くずせないだろ、バカチン
0477nobodyさん
2006/01/08(日) 02:44:46ID:???<HTML>
<BODY>
<FORM action="" method=POST>
<INPUT type=text
</FORM>
</BODY>
</HTML>
0478nobodyさん
2006/01/08(日) 02:45:40ID:???0480nobodyさん
2006/01/08(日) 02:47:04ID:???0481nobodyさん
2006/01/08(日) 02:47:22ID:???0482nobodyさん
2006/01/08(日) 02:48:48ID:???仮にそんなことがあるとしてもそんなことが判明しても解決にならない。
formのnameが別の名前に置き換えられないんだから。
0483nobodyさん
2006/01/08(日) 02:50:03ID:???0484nobodyさん
2006/01/08(日) 02:50:31ID:???0486nobodyさん
2006/01/08(日) 02:53:22ID:???全然付いていけない。
オヤスミナサイ。
0488nobodyさん
2006/01/08(日) 02:54:28ID:???つーかエラーじゃないし
0490nobodyさん
2006/01/08(日) 03:03:25ID:???$line =~ s|<TEXTAREA name="comment1" cols="60" rows="10"></TEXTAREA>|<TEXTAREA name="comment1" cols="60" rows="10"></TEXTAREA>|;
0491nobodyさん
2006/01/08(日) 03:08:21ID:???それも試したんだわ
これも試した↓
$line =~ s|comment1" cols="60" rows="10"></TEXTAREA>|comment1" cols="60" rows="10"></TEXTAREA>|;
結果
Content-type: text/html
<HTML>
<BODY>
<FORM action="" method=POST>
<TEXTAREA
</FORM>
</BODY>
</HTML>
どうやらこうやら$lineがnameを含有していて評価部分にnameがあろうとなかろうと$lineを評価してしまうとダメらしい
$lineを評価なしにそのままprintしたときだけテンプレートのすべてがprintされる
0493nobodyさん
2006/01/08(日) 03:15:59ID:???再現しない環境があるんだから
それが大多数ならおかしくないな
perlやosの種類・バージョン・リビジョンの組み合わせは星の数だ
0494366
2006/01/08(日) 04:52:43ID:ekOfQHSyそうなんですか!?知りませんでした。
ご親切にありがとうございます!
質問していいですか?
「data.txt」 という何か書き込みされている テキストファイルがあるとして
open(F,"data.txt");
while(<F>){
chomp;
push(@arr,$_);
}
close(F);
$num = @arr;
$num += 1;
という感じに書き込みした順番付けをしてあって、順番は1から始まる数字なんですが
このスクリプト4行目の「$_」には、行番号がセットされているんですか?
@arrというのは、どの部分を指しているんでしょうか?
CGI&Perlポケットリファレンスには、「$_」は特殊変数と言う事位しか触れられていません。
@arrというのは、「ただのarrという名前の配列」と理解してるんですが、これは大間違いですかね?
0495nobodyさん
2006/01/08(日) 05:04:36ID:Pbsz8/Oh$numは要素の数が入る
最後の行、その他の解釈の仕方があればそれを知りたい
0497366
2006/01/08(日) 05:15:05ID:ekOfQHSyそうなんですか!?知りませんでした。
ご親切にありがとうございます!
質問していいですか?
「data.txt」 という何か書き込みされている テキストファイルがあるとして
open(F,"data.txt");
while(<F>){
chomp;
push(@arr,$_);
}
close(F);
$num = @arr;
$num += 1;
という感じに書き込みした順番付けをしてあって、順番は1から始まる数字なんですが
このスクリプト4行目の「$_」には、行番号がセットされているんですか?
@arrというのは、どの部分を指しているんでしょうか?
CGI&Perlポケットリファレンスには、「$_」は特殊変数と言う事位しか触れられていません。
@arrというのは、「ただのarrという名前の配列」と理解してるんですが、これは大間違いですかね?
0498494
2006/01/08(日) 05:52:31ID:ekOfQHSy早速のアドバイスありがとうございます!
...と言うことは、例えば「date.txt」の中身が
山田太郎,[email protected],\n
鈴木花子,[email protected],\n
佐藤次郎,[email protected],\n
だった場合、具体的に言うと「$_」の最初は
「山田太郎,[email protected]」で、2番目に
「鈴木花子,[email protected]」が来て、3番目に
「佐藤次郎,[email protected]」という順番でセットされていく訳ですか?(ただ\nが抜けただけ?)
これが、@arrにセットされていく訳だから@arr[0]は【山田太郎,[email protected]】という理解なんですがOKですかね?
その後の、「$num = @arr;」という処理の仕組みが詳しく説明できないのですが、
結果は【山田太郎,[email protected]】は【山田太郎,[email protected],1】となっています。
>>495さんは【$numは要素の数が入る】と言われてますが、もう少し噛み砕いてもらえないでしょうか?
「$num」には、「@arr」からどんなデータが渡されているのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています