• ベストアンサー

&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; }

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.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)
回答No.3

ハッシュには詳しくないのでなんともいえませんが、 %in{A}じゃなくて 全て読み込むなら%in %inの"A"だけ読み込むのなら$in{A} ではないのでしょうか?

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

> ↓こんな感じで書いてみましたが、&ReadParseをあまり理解していないので自信がありません。 > どうしたらいいでしょうか? 自信を持ってください! といえばいいのでしょうか? 最近自分が意地悪君になっているような気がする(汗) ともかく、自分で書いたサブルーチンを動かしてみましたか? そして、どうなりましたか?(エラーになった、想定する動きにならない、など) それでどうしたいですか?(どこが分かりませんか?)

pyonsama
質問者

補足

サブルーチンを動かした結果、 $param = %in{A}; の部分でエラーが出ました。いろいろ試行錯誤してみたのですが・・・。

noname#25358
noname#25358
回答No.1

 実際に試してみてください。  分からない点があるならともかく、自分が正しいかどうかだけを単純に質問するだけでは勉強になりませんよ。  それとも、このプログラムがちゃんと動かなくて、その対処法が分からないってことなんでしょうか?  $param = %in{A}; が文法的に間違っているようではありますが……。

pyonsama
質問者

補足

すみません。説明不足だったようで。 このプログラムが動かなくて困っています。 >$param = %in{A}; が文法的に間違っているようではありますが……。 この部分は修正を加えてみます。

関連するQ&A