Re: [問題] 如何把文字檔案讀為二維陣列? 請益各位 …

看板Perl作者 (cot)時間16年前 (2009/03/19 18:01), 編輯推噓2(208)
留言10則, 2人參與, 最新討論串1/1
※ 引述《ForeverT (全家好神)》之銘言: : 如今我有一個文字檔例如下 : name: kent : age: 20 : tel: 4587564 : 我希望perl能把這當成二維陣列來讀 : 但似乎perl把我這檔案當成一維陣列了 : 也就是希望可以 : printf OUT "@aaa->[2]->[2]\n"; #顯示 4587564 : 但實際上不會顯示 : 但 : printf OUT "@aaa->[2]\n"; : 則會顯示 tel: 4587564 : 所以研判我的檔案被當為1維陣列 : 如何改為二維陣列的形式 : 這不是作業 只是和我檔案類似 舉個簡單的例子請教大家 : 希望有高手能指點我 : 新手在此先謝謝各位 我想你需要的是reference 下面是範例 = @row1 = ("name", "kent"); @row2 = ("age", 20); @row3 = ("tel", 4587564); @ref = (\@row1, \@row2, \@row3); print $ref[2]->[1], $/; = @row1 是array \@row1 是@row1的reference $ref[2]->[1]要拆開看 $ref[2] 就是 \@row3 $ref[2]->[1] 就是指到 $row3[1] 囉 最後, $ref[2]->[1] 可以省略 "->", 變成 $ref[2][1] 希望對你有幫助~ 想要知道詳細點可用reference當做關鍵字搜尋囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.90.81

03/19 19:24, , 1F
感謝你的指點 對於新手的我又成長了但是這只是舉簡單例
03/19 19:24, 1F

03/19 19:25, , 2F
實際我的檔案 約有6欄 3000列 不太可能一一手工KEY
03/19 19:25, 2F

03/19 19:27, , 3F
又該如何解呢 就算一列一列讀進去利用spilt 讀進去
03/19 19:27, 3F

03/19 19:28, , 4F
拆成3000個陣列 也是好大
03/19 19:28, 4F

03/19 21:00, , 5F
我解決了 用回圈 一直PUSH 陣列給另一個陣列 如下
03/19 21:00, 5F

03/19 21:01, , 6F
$rows =$#data_information_a;
03/19 21:01, 6F

03/19 21:01, , 7F
for($i = 0; $i <=$rows; $i++){
03/19 21:01, 7F

03/19 21:01, , 8F
my@temp = split(" " , @data_information_a[$i]);
03/19 21:01, 8F

03/19 21:02, , 9F
push @array , [@temp]; }
03/19 21:02, 9F

03/19 23:49, , 10F
我太晚看到了 :p 不過能解決就好~
03/19 23:49, 10F
文章代碼(AID): #19mXVrv_ (Perl)
文章代碼(AID): #19mXVrv_ (Perl)