回答編集履歴

1

いろいろありすぎます。

2018/02/21 18:50

投稿

KojiDoi
KojiDoi

スコア13671

test CHANGED
@@ -2,8 +2,26 @@
2
2
 
3
3
 
4
4
 
5
- use strictつけることを強く勧めます。このばあいすべての変数定義をmy @xのようにしなければならないので面倒に感じるでしょうが、これによって少なくとも変数名のスペルミスによるおかしなバグを防ぐことができます。
5
+ スクリプトの先頭にはuse strictつけることを強く勧めます。このばあいすべての変数定義をmy @xのようにしなければならないので面倒に感じるでしょうが、これによって少なくとも変数名のスペルミスによるおかしなバグを防ぐことができます。
6
6
 
7
7
 
8
8
 
9
9
  文字化け: 当該perlスクリプトが仮に正しいとしても、送られてくるものが想定と違うものであれば結果もおかしなものになります。両方正しいとしても画面出力の段階で設定が間違っていればやはり「文字化け」します。どの段階に問題があるのかはすべてを知っているあなたにしか確認できません。ただ「うまくいきません」だけの質問を何十回繰り返されても問題は解決できません。いいかげん質問の仕方を学びましょう。
10
+
11
+
12
+
13
+ 追記:
14
+
15
+ まず上述のsubstr周りについて。 これはリストコンテキストとスカラーコンテキストの混同ということになります。スカラーが求められるところに配列を置くと、配列はスカラーに変換されます。このとき、どういう風に変換するかというと、**「配列の個数」をもってその値とする**のです。すなわち、substr(@syouhinfile,...は、実際にはsubstr("5",... とかになります。その"5"を分解して一部を取り出そうというわけです。おそらくtrm氏のやりたいこととは違うでしょう。
16
+
17
+
18
+
19
+ そもそも、if($syouhinkensaku ne ""){以下のブロックは謎すぎます。文字列をカンマで分割しようとしているように見えますが、その大本は上の方で配列の中身を一生懸命カンマで繋いだ(つなごうとしている)ものです。繋いだり分割したり、いったい何をしたいんだろう。
20
+
21
+
22
+
23
+ 他にも、このスクリプトは至る所あっちもこっちもおかしいところだらけです。質問者のこれまでの質問ぶりを見ると、いきなりcgiに手を出すのは無謀の上にも無謀と言わざるを得ません。
24
+
25
+
26
+
27
+ もっと部分部分をしっかり把握してコードが組めるように、コマンドラインで小さなコードを書く練習を積むべきです。さもないと、この調子では10年たっても同じことの繰り返しでしょうねえ。