• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2次元配列の扱い)

2次元配列の扱いについての質問

このQ&Aのポイント
  • 2次元配列のようなデータを元のカンマ区切りテキストに戻せない問題です。
  • 質問者はテキストデータを2次元配列に変換しましたが、再び元の形式に戻せない状況です。
  • 質問者が実行しているコードが正しく動作していない可能性があります。

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

@itemlist の各要素は「配列リファレンス」なので、それを文字列として join すると「ARRAY(0x177f124)」のような文字列が連結されてしまいます。 リファレンスからデータ実体を参照するには、リファレンスが入った変数の頭に変数プリフィクス($ @ % など)を付けるだけです。 例えば配列リファレンスが入った変数 $a から、実際の配列データを見るには   @$a とします。 ただし、変数プリフィクスは演算子よりも先に評価されるので、$itemlist[$num] の場合は { } を使って   @{$itemlist[$num]} とする必要があります。 つまり、連結部分は次のようにすれば大丈夫です。   $renketu = join(",", @{$itemlist[$num]}) ."\n"; あと、これは今回の質問と関係ありませんが、   foreach $num (0 .. $#配列名) という使い方は、余計なメモリを消費するので   for (my $num = 0; $num <= $#配列名; $num++) の方がいいです。 また、$num を要素の参照以外に使わないのなら、   foreach $alias (@配列名) とすれば、$alias が $配列名[$num] の代わりになります。 ($alias への更新は、配列要素にも反映されます。) # 古いPerlではダメだったかも

7623goo
質問者

お礼

ご丁寧な解説ありがとうございます。 おかげさまでうまく動作しました。