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

Perlコーディング初心者質問スレ Part 45

■ このスレッドは過去ログ倉庫に格納されています
00019882005/12/08(木) 22:48:27ID:???
Perlのコーディングで困ってる人のスレです。

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

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0412nobodyさん2006/01/07(土) 23:57:20ID:???
>>411
貼りたきゃ勝手に貼れ。それより>>408の質問に答えろ。
0413nobodyさん2006/01/07(土) 23:58:01ID:???
>>410にもねー
0414382-3832006/01/07(土) 23:58:04ID:5axJGSRV
OS バージョン:

Red Hat Linux 7.2 2.96-118.7.2
0415382-3832006/01/08(日) 00:00:24ID:0I8ISceR
エラー ログは設置した覚えはないですが、自動的に書庫化されているようです。
日ごとに書庫化されています。
スクリプトを実行するたびに書庫にログが追加されています。
0416nobodyさん2006/01/08(日) 00:01:40ID:???
>>415
RedHat7.2+perl5.6.1で「コマンドライン実行」した結果は?
「name は予約語となる可能性があります。あるいは、name の前にオペレータが抜けてはいませんか。」
なんて表示が日本語で出てくるわけじゃないよな?
0417382-3832006/01/08(日) 00:02:34ID:0I8ISceR
勝手に貼れということはあまり参考にならないということのようなので、やめておきます。
必要なら言ってください。
0418382-3832006/01/08(日) 00:03:30ID:0I8ISceR
>>416
FAQ に「当サーバではコンソールの使用を認めておりません。」とあります。
参考になりますか。
0419nobodyさん2006/01/08(日) 00:04:11ID:???
>>418
氏ね
0420382-3832006/01/08(日) 00:05:19ID:0I8ISceR
>>419
どういうことですか。
0421nobodyさん2006/01/08(日) 00:10:14ID:???
情報の後出しが多すぎるな。実行環境とかレン鯖だったことは最初に言うものだが。
あと自作CGIはローカルに実行環境を持って、そこでテストしてからレン鯖に持っていくのが常識。

で、結論から言うと>>402のスクリプトに異常はない。これでエラーが出てるなら
perl以外の問題である非常に高い。レン鯖の名前を出せるようなら、親切な人が
検証してくれる可能性もあるが。
0422nobodyさん2006/01/08(日) 00:10:29ID:???
通りすがりだが、自分のPCで試さないでサーバでテストするって・・・
市ねってことでしょ。まさか自分のPCにPerlも入れてない?
0423nobodyさん2006/01/08(日) 00:11:03ID:???
まぁ精々KENTでも見習って適当にやってくれ。
0424nobodyさん2006/01/08(日) 00:18:25ID:???
ここは回答者も初心者ですね
0425nobodyさん2006/01/08(日) 00:22:07ID:???
「情報の後出しが多い」と言われて先にいろいろ書くと「長い」「ごちゃごちゃ書くな」と言われる
初心者回答者は答えられない言い訳を質問者に転嫁することが多いですね
0426nobodyさん2006/01/08(日) 00:22:27ID:???
Perlコーディング初心者(が)質問(に答える)スレ Part 45

ですが何か?
0427nobodyさん2006/01/08(日) 00:28:21ID:???
ガッテン!ガッテン!
0428nobodyさん2006/01/08(日) 00:29:43ID:???
まぁ、初心者同士の互助会ってことだな
0429nobodyさん2006/01/08(日) 00:31:48ID:???
初心者でも達人でも>>382-383に答えられないのはいっしょだがな。
0430nobodyさん2006/01/08(日) 01:01:05ID:???
>>424-428
じゃあ答えてやれよ
0431nobodyさん2006/01/08(日) 01:14:47ID:???
初心者の質問に答えられない達人ぶった初心者が多いスレはここだと聞いてやってきました
0432nobodyさん2006/01/08(日) 01:17:17ID:???
環境依存の問題に答えようがあるかい
0433382-3832006/01/08(日) 01:17:38ID:???
>>431
急いでいます。教えてください。
0434nobodyさん2006/01/08(日) 01:17:57ID:???
達人って……小学生かよ
0435nobodyさん2006/01/08(日) 01:18:14ID:???
というか >>421 が答えだよね。いまんとこ
0436382-3832006/01/08(日) 01:27:57ID:???
誰も答えられないのですか?
0437nobodyさん2006/01/08(日) 01:28:59ID:???
>>436
>>432
あと騙りじゃないならID出せ。
0438nobodyさん2006/01/08(日) 01:46:42ID:???
「環境依存」と来たか
ID出してもどうせだれも答えられないんだからID出すこと自体無意味
0439nobodyさん2006/01/08(日) 01:48:20ID:???
421=435
初心回答者は自画自賛もお手の物です。
0440nobodyさん2006/01/08(日) 01:51:53ID:???
ところが>>421以外の回答が出てこない。何故だろう。
0441nobodyさん2006/01/08(日) 01:53:13ID:???
' ' => '\s'
0442nobodyさん2006/01/08(日) 01:58:25ID:???
ちなみに、空文字のかわりに空白を入れるなんて邪道は嫌です。
0443nobodyさん2006/01/08(日) 02:00:29ID:???
つーか
スペースじゃなくて文字が入っていても結果が同じだと言ってるのだから何の解決にもならない
二つスクリプト貼ってるだろ
よく読め
ボケカス
0444nobodyさん2006/01/08(日) 02:08:37ID:???
ぅはwwwww
俺ンとこでも再現した!
0445nobodyさん2006/01/08(日) 02:09:04ID:???
nameが評価されてるだろ

エラーメッセージ嫁
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>
0447nobodyさん2006/01/08(日) 02:17:07ID:???
>>445
堂々巡りの阿呆だな
解決策を書けよ
0448nobodyさん2006/01/08(日) 02:20:40ID:???
KENT様を見習ってヒアドキュメントでも書かれたらいかがですか?
0449nobodyさん2006/01/08(日) 02:21:31ID:???
>>446
エラーメッセージ何て出てる?
0450nobodyさん2006/01/08(日) 02:22:59ID:???
出ねーよ
モノは出力されてんだから
シェルからでも同じ
0451nobodyさん2006/01/08(日) 02:24:05ID:???
>>450
実行環境plz
0452nobodyさん2006/01/08(日) 02:24:42ID:???
Content-type: text/html

<HTML>
   <BODY>
      <FORM action="" method=POST>
         <TEXTAREA
      </FORM>
   </BODY>
</HTML>
0453nobodyさん2006/01/08(日) 02:25:33ID:???
というか、こんな横暴な質問者を助けるんだ…。
みんな優しいのな。
仕事なら自分で解決しろとしか俺は言わんが。
0454nobodyさん2006/01/08(日) 02:26:06ID:???
perl 5.6.1
fedora core 4
0455nobodyさん2006/01/08(日) 02:26:13ID:???
FreeBSD4.11+perl5.8.1では再現しない。スクリプトもテンプレもEUC。
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:???
初心者ほど猿のように実行環境はなんだOSはなんだと質問する
いったいおまえらにバージョンの差異がわかるのかと(ry
0457nobodyさん2006/01/08(日) 02:27:26ID:???
>>453
質問者が仕事じゃないときの答えられないお前の言い訳は?
0458nobodyさん2006/01/08(日) 02:28:27ID:???
>>456
再現する環境としない環境がある以上は聞かなきゃ仕方がないだろ。
0459nobodyさん2006/01/08(日) 02:31:00ID:???
どうして「しかたがない」のやら……まったくもって頭の良い御方の発言は理解できませぬ
0460nobodyさん2006/01/08(日) 02:31:27ID:???
冬休みいつまでだよ
0461nobodyさん2006/01/08(日) 02:31:58ID:???
>>459
>>458見てわからんようじゃ相当頭悪いなお前
0462nobodyさん2006/01/08(日) 02:32:15ID:???
$comment1 = ""; # の場合
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:???
ActivePerl5.6.1でも再現しねーな。なんだこりゃ?
0465nobodyさん2006/01/08(日) 02:34:07ID:???
それこそ解らないやつが聞いても仕方がないわけだが。

というかこいつらのデバッグってただ流せれば終わりなの?
0466nobodyさん2006/01/08(日) 02:35:39ID:???
それがKENTクオリティ
0467nobodyさん2006/01/08(日) 02:35:41ID:???
>>465
遠まわしに言っても理解できないから単刀直入に結論をどーぞ
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:???
@FOO=<>;
するぐらいならヒアドキュメントのほうがどれだけいいことか。
0470nobodyさん2006/01/08(日) 02:38:01ID:???
評価部分にはnameがなくっても$lineにあるなら同じようになるようだ
04714552006/01/08(日) 02:38:25ID:???
>>468
こちらではどっちも問題ない。
0472nobodyさん2006/01/08(日) 02:38:56ID:???
>>469
質問者の前提条件をひっくり返してしまってよいなら誰でも答えられるがなアンタ
0473nobodyさん2006/01/08(日) 02:40:19ID:???
textareaじゃなくてinput type=text name=...で試してくれんか
0474nobodyさん2006/01/08(日) 02:41:38ID:???
これ以上なく単純明快な形で既に解決策が提示されているものを猿が罵倒した件について。
04754552006/01/08(日) 02:42:47ID:???
>>473 普通に置換できてる。つか当たり前っちゃ当たり前。
0476nobodyさん2006/01/08(日) 02:43:14ID:???
>>469
あの質問ではあんなテンプレートあってもなくても意味がないような気がするが
のちのちの完成形ではテンプレートを読み込むというのが絶対条件なら
くずせないだろ、バカチン
0477nobodyさん2006/01/08(日) 02:44:46ID:???
Content-type: text/html

<HTML>
   <BODY>
      <FORM action="" method=POST>
         <INPUT type=text
      </FORM>
   </BODY>
</HTML>
0478nobodyさん2006/01/08(日) 02:45:40ID:???
KENT様を見習え。バカチン!
0479nobodyさん2006/01/08(日) 02:45:47ID:???
>>474
解決策などありませんでした
ありませんでした
ありませんでした
0480nobodyさん2006/01/08(日) 02:47:04ID:???
requireやuseしていない組み込みモジュールに$nameがあると見た!
0481nobodyさん2006/01/08(日) 02:47:22ID:???
赤帽系のperlが変ってこと?
0482nobodyさん2006/01/08(日) 02:48:48ID:???
>>480
仮にそんなことがあるとしてもそんなことが判明しても解決にならない。
formのnameが別の名前に置き換えられないんだから。
0483nobodyさん2006/01/08(日) 02:50:03ID:???
そこらへんのHTTPデーモンにはエラーログを日本語で出力してくれるものがあるの?
0484nobodyさん2006/01/08(日) 02:50:31ID:???
フォームでは「name/value」しか使えないのケ?
0485nobodyさん2006/01/08(日) 02:52:10ID:???
>>483
アーカイブ化されてるつってんだからレンタル屋がraw->日本語処理スクリプトも置いてんだろ
0486nobodyさん2006/01/08(日) 02:53:22ID:???
もうこいつら頭良すぎ(w
全然付いていけない。

オヤスミナサイ。
0487nobodyさん2006/01/08(日) 02:53:57ID:???
>>486
逃げたwww
0488nobodyさん2006/01/08(日) 02:54:28ID:???
daemonのエラーログには何にも残ってねーな
つーかエラーじゃないし
0489nobodyさん2006/01/08(日) 02:55:40ID:???
何の役にも立たない>>486の捨て台詞カッコイイぜ
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される
0492nobodyさん2006/01/08(日) 03:11:21ID:???
>>491
仮にそれがperlのバグだとしても今まで出てこなかったのが変だよなー
0493nobodyさん2006/01/08(日) 03:15:59ID:???
>>492
再現しない環境があるんだから
それが大多数ならおかしくないな
perlやosの種類・バージョン・リビジョンの組み合わせは星の数だ
04943662006/01/08(日) 04:52:43ID:ekOfQHSy
>>374
そうなんですか!?知りませんでした。
ご親切にありがとうございます!

質問していいですか?
「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
4行目は改行が削られたデータ
$numは要素の数が入る

最後の行、その他の解釈の仕方があればそれを知りたい
0496nobodyさん2006/01/08(日) 05:08:26ID:???
>>494
「array(配列)」を略しただけだと思う。つかそのくらい想像せい。
04973662006/01/08(日) 05:15:05ID:ekOfQHSy
>>374
そうなんですか!?知りませんでした。
ご親切にありがとうございます!

質問していいですか?
「data.txt」 という何か書き込みされている テキストファイルがあるとして
open(F,"data.txt");
while(<F>){
chomp;
push(@arr,$_);
}
close(F);
$num = @arr;
$num += 1;
という感じに書き込みした順番付けをしてあって、順番は1から始まる数字なんですが

このスクリプト4行目の「$_」には、行番号がセットされているんですか?
@arrというのは、どの部分を指しているんでしょうか?

CGI&Perlポケットリファレンスには、「$_」は特殊変数と言う事位しか触れられていません。
@arrというのは、「ただのarrという名前の配列」と理解してるんですが、これは大間違いですかね?
04984942006/01/08(日) 05:52:31ID:ekOfQHSy
>>495
早速のアドバイスありがとうございます!
...と言うことは、例えば「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」からどんなデータが渡されているのでしょうか?
0499nobodyさん2006/01/08(日) 05:59:48ID:???
>>498
非常に痛々しいが答えてあげる。

「$_」の中身が知りたければprintしなさい。
pushの解釈はそれでおk。
「$num = @arr;」は@arrの要素数、つまり>>498の例の場合は3が入る。
これ以上噛み砕きようがない。その後で1足してるけど意図は不明。

つか書いたのお前だろうがよ。
0500nobodyさん2006/01/08(日) 06:00:39ID:???
>>498
printすりゃいいだろ。
少しくらい自分で解決できるようになれ。
あと関数の意味くらい調べろ。
05014982006/01/08(日) 06:08:00ID:ekOfQHSy
間違えてました!

10行目の
@arr[0]は【山田太郎,[email protected]】は、
$arr[0]は【山田太郎,[email protected]】でした!書き間違えてました!

もう一つ補足です。
僕の中ではまだ仮定なのですが、
「$num = @arr;」という処理は、「@arr」の中身を順番に「$num」に渡す。
「@arr」には3つの変数がセットされていて、それぞれ

「山田太郎,[email protected]」
「鈴木花子,[email protected]」
「佐藤次郎,[email protected]」

そんでもって、それらの名前は「$arr[0]」、「$arr[1]」、「$arr[2]」となると。
>>495さんが言ってた【$numは要素の数が入る】の【要素の数】とは、
「$arr[0]」の「0」の事だったんですかね!

だから、「$num = @arr;」の処理をすると、「1」、「2」、「3」になってる!
と考えれば納得できますけど、この仮定は合ってます?やっぱりダメですか?
0502nobodyさん2006/01/08(日) 06:11:00ID:???
>>501
print $num; してみ? 答えが出てくるから。
0503nobodyさん2006/01/08(日) 06:16:30ID:???
そろそろ放置しないと、このレベルのガ湧き出すぞ
0504nobodyさん2006/01/08(日) 06:17:27ID:???
いいんじゃね? 初心者スレだし。
0505nobodyさん2006/01/08(日) 06:18:55ID:???
ID:ekOfQHSyは初心者以前にバカだがな。
05065012006/01/08(日) 06:42:29ID:ekOfQHSy
さっきのdata.txtで

#!/perl/bin/perl
require "jcode.pl";
print "Content-type: text/html\n\n";

open(F,"data.txt");
while(<F>){
chomp;
push(@arr,$_);
}
close(F);
$num = @arr;
$num += 1;
print $num;

をやったら、「4」が出ました!
>>499さんが「3」が入るの意味が分かりました!
みなさん、僕のレベルが低くてすみませんでした。
でも、ありがとうございました!

CGI&Perlポケットリファレンスはお勧めだと言われて買ったんですけど、基本と言うか仕組みと言うか、その辺を分かった上で使う物みたいな気がします。
ただ、僕のレベルが低いだけかもしれませんけどね。

やっぱり、perlやphpってのは本だけでやるものじゃなくって、ちゃんと学校行って勉強するべきなんですかね?

>>503
早くこのレベルから抜け出たいです!>>503さんはどれくらいの経歴の持ち主なんですか??やっぱり何年もされてるんですか?
0507nobodyさん2006/01/08(日) 06:53:18ID:???
>>506
ネットの情報だけでも一週間あればBBSくらい作れるやつはゴロゴロしてる。
逆に学校で習っても全然理解できないやつもゴロゴロしてる。

要は素質の問題。素質の差を埋めるのは勉強の仕方と、知識を求める意欲。
0508nobodyさん2006/01/08(日) 07:03:07ID:???
>>506
安易に2chに頼るヤシは成長しない。
悩んで悩んで悩みぬいてのちに来なさい。

それと、馴れ馴れしくしないでくれるかな?
お前と茶飲み話をするためにここにいるんじゃないんだから。
05095062006/01/08(日) 07:14:08ID:ekOfQHSy
>>507
簡単な掲示板やスケジュール表は作ったりしました!

最初は、本も買ってなかったのでネットで勉強していました。そこで、配布されてたスクリプトを試して、こんな感じにしてみたいなと思ったら少し書き換えて遊んだりしていました。
なので、自分で1から作ったりは出来ませんでしたが、ほんの少しずつ「なんだか、何か分かんないんだけど、何かが分かってきたような気」がしてごくごく簡単なスクリプトを書いてみたら、
Internal Server Errorと何回も何回も出てきて悔しかったですが、やっと画面に文字が出てきた時はかなり嬉しかったんです!!

僕は、プログラムなんて向いてないだろうし、どうせ出来ないんだから...
と思っていたので余計に嬉しかったです!興奮して眠れませんでした!

>>507さんが学校で習っても全然理解できないやつもゴロゴロしてるというのは想像もつきませんが
恥ずかしいけど、僕には学校に行く余裕も無いのでネットと本で勉強して、自分が作りたいようなプログラムなら出来るくらいにはなりたいです。
でも、いつかちゃんとした設計の仕方とかも覚えてみたいので、まずは今の自分が出来ることからやってるという段階です。

>>507さん、みなさん、色々親切にしてくれてありがとうございます。
正直、僕程度のレベルじゃみなさんの邪魔になるだろうし、野次られても全然構いません。
これからはちゃんと自分で調べれることは調べてみてから相談します。無視はこたえるので、野次でも何でも良いから教えてくれたら嬉しいです!!
ありがとうございました。
05105062006/01/08(日) 07:24:11ID:ekOfQHSy
>>508
>安易に2chに頼るヤシは成長しない。
>悩んで悩んで悩みぬいてのちに来なさい。
はい。基本がなっていない為、最初は、数多いかもしれませんが
理解して、ここに来る回数は減らします。努力します。

>それと、馴れ馴れしくしないでくれるかな?
>お前と茶飲み話をするためにここにいるんじゃないんだから。
ごめんなさい。
0511nobodyさん2006/01/08(日) 07:31:42ID:???
よし、じゃあID:ekOfQHSyはコテハンを名乗ることを許す。
■ このスレッドは過去ログ倉庫に格納されています