- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2次元配列の扱い)
2次元配列の扱いについての質問
このQ&Aのポイント
- 2次元配列のようなデータを元のカンマ区切りテキストに戻せない問題です。
- 質問者はテキストデータを2次元配列に変換しましたが、再び元の形式に戻せない状況です。
- 質問者が実行しているコードが正しく動作していない可能性があります。
- みんなの回答 (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ではダメだったかも
お礼
ご丁寧な解説ありがとうございます。 おかげさまでうまく動作しました。