作者cot123 (cot)
看板Perl
標題Re: [問題] 如何把文字檔案讀為二維陣列? 請益各位 …
時間Thu Mar 19 18:01:24 2009
※ 引述《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
1F:推 ForeverT:感謝你的指點 對於新手的我又成長了但是這只是舉簡單例 03/19 19:24
2F:→ ForeverT:實際我的檔案 約有6欄 3000列 不太可能一一手工KEY 03/19 19:25
3F:→ ForeverT:又該如何解呢 就算一列一列讀進去利用spilt 讀進去 03/19 19:27
4F:→ ForeverT:拆成3000個陣列 也是好大 03/19 19:28
5F:推 ForeverT:我解決了 用回圈 一直PUSH 陣列給另一個陣列 如下 03/19 21:00
7F:→ ForeverT:for($i = 0; $i <=$rows; $i++){ 03/19 21:01
8F:→ ForeverT:my@temp = split(" " , @data_information_a[$i]); 03/19 21:01
9F:→ ForeverT:push @array , [@temp]; } 03/19 21:02
10F:→ cot123:我太晚看到了 :p 不過能解決就好~ 03/19 23:49