![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_03.png?c9bd177)
2次元配列のようなものについてどなたかご教授ください。
たとえば
1,2,3,4
a,b,c,d
という2行のテキストデータを読み込んで
(["1","2","3","4"], ["a","b","c","d"])
のようようなリストにはできたみたいなんですが
それをまたもとのカンマ区切りテキストにできなくて困ってます。
どこが間違ってるのでしょうか。よろしくお願いします。
open(READ,$filename) || &error("Read Error");
@BASE = <READ>;
close(READ);
@itemlist=();
foreach $num (0 .. $#BASE) {
$BASE[$num] =~ s/\n//g;
(@item) = split(/\,/,$BASE[$num]);
@itemlist = (@itemlist,[@item]);
}
#######
$dummy="";
foreach $num (0 .. $#itemlist) {
$renketu=join(",",$itemlist[$num]) ."\n";
$dummy.=$renketu;
}
open(WRITE,">$filename");
flock(WRITE,2);
print WRITE $dummy;
close(WRITE);
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ではダメだったかも
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ターミナルで特定の文字と文字...
-
Perlで縦横変換のような事をし...
-
テキストファイルで提出とは?
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
-
perlについての質問
-
perlのプログラミング 部分入れ...
-
ペプシコーラとコカ・コーラとD...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
Strawberry Perl for Windows ...
-
リストボックスに縦スクロール...
-
二次元配列のインデックスについて
-
文字の整列(printf)
-
エクセルVBAでTransposeの不思議
-
クラスに配列を渡す方法
-
二次元配列における要素数のは...
-
Excel VBA ユーザーフォームの...
-
perlで配列の要素が空なのを知...
-
perlで2次元配列をサブルーチ...
-
マクロ Publicでの配列定義
-
Dim flag(4) as boolean で配列...
-
参照配列の要素数の求め方は?
-
チェックボックスのperlでの値...
-
VB6で配列の最大値を簡単に求め...
-
jcode->jfold で禁則処理
-
DataGridViewに配列の値を表示...
-
VBScript 配列
-
配列を使わずに、数字(連番)...
おすすめ情報