作者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