- ベストアンサー
&ReadParseを用いての画面データの取得
Perl初心者なので、わからないことばかりです。 前画面からの情報を&ReadParseを用いて取得し、 取得データの中からキーAのデータを抽出し、 その抽出結果をEUCで変換し、変換後のものを"|(パイプ)"で分割し、 できた7つのデータを、ハッシュでリターンするというサブルーチンを作っています。 このサブルーチンは不特定多数の画面から呼び出されるのですが、 &ReadParseを用いて取得するデータは同じです。 また、ハッシュでリターンする項目も固定です。 ↓こんな感じで書いてみましたが、&ReadParseをあまり理解していないので自信がありません。 どうしたらいいでしょうか? sub return_hash{ &ReadParse(*in); $param = %in{A}; #EUC変換する &jcode::convert(*param ,'euc'); #"|"(パイプ)で分割する @ResultDatas = split(/|/,$param); $val0 = @ResultDatas[0]; $val1 = @ResultDatas[1]; $val2 = @ResultDatas[2]; $val3 = @ResultDatas[3]; $val4 = @ResultDatas[4]; $val5 = @ResultDatas[5]; $val6 = @ResultDatas[6]; $val7 = @ResultDatas[7]; #ハッシュにし返す %in = ('KEY-A' => $val0, 'KEY-B' => $val1, 'KEY-C' => $val2, 'KEY-D' => $val3, 'KEY-E' => $val4, 'KEY-F' => $val5, 'KEY-G' => $val6, 'KEY-H' => $val7); return %in; }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ここも #"|"(パイプ)で分割する @ResultDatas = split(/|/,$param); $val0 = @ResultDatas[0]; $val1 = @ResultDatas[1]; $val2 = @ResultDatas[2]; $val3 = @ResultDatas[3]; $val4 = @ResultDatas[4]; $val5 = @ResultDatas[5]; $val6 = @ResultDatas[6]; $val7 = @ResultDatas[7]; ではなく、 $val0 = $ResultDatas[0]; $val1 = $ResultDatas[1]; ・ ・ ですね。
その他の回答 (3)
- naoto0314
- ベストアンサー率34% (25/73)
ハッシュには詳しくないのでなんともいえませんが、 %in{A}じゃなくて 全て読み込むなら%in %inの"A"だけ読み込むのなら$in{A} ではないのでしょうか?
- moon_night
- ベストアンサー率32% (598/1831)
> ↓こんな感じで書いてみましたが、&ReadParseをあまり理解していないので自信がありません。 > どうしたらいいでしょうか? 自信を持ってください! といえばいいのでしょうか? 最近自分が意地悪君になっているような気がする(汗) ともかく、自分で書いたサブルーチンを動かしてみましたか? そして、どうなりましたか?(エラーになった、想定する動きにならない、など) それでどうしたいですか?(どこが分かりませんか?)
実際に試してみてください。 分からない点があるならともかく、自分が正しいかどうかだけを単純に質問するだけでは勉強になりませんよ。 それとも、このプログラムがちゃんと動かなくて、その対処法が分からないってことなんでしょうか? $param = %in{A}; が文法的に間違っているようではありますが……。
補足
すみません。説明不足だったようで。 このプログラムが動かなくて困っています。 >$param = %in{A}; が文法的に間違っているようではありますが……。 この部分は修正を加えてみます。
補足
サブルーチンを動かした結果、 $param = %in{A}; の部分でエラーが出ました。いろいろ試行錯誤してみたのですが・・・。