开始学perl,是从<<learning perl >>一书开始的, 这样有个好处:初学者不用也不应该去知道perl太多的约定,不然,perl还没有学到人就怕了.
learning perl一书内容比较简单.感觉很自在.大概浏览了后,发现提到perl两种数据结构:
1. array
1. hash
但是没有提到:
1. 多维array
1. array与hash的混合引用.
这最觉得不爽了, 对于算法不强的人来说这无疑是个灾难!
google了一把, 原来这方面的知识在<<programming perl>>一书中讲到:
* http://docstore.mik.ua/orelly/perl/prog3/ch09_01.htm
回顾一下简单的array和简单的hash的产生方法:
1. array的产生:
my @TiketNum = (1, 19, 20, 45, 56, 19, 42, 56);
2. hash的产生:
my %Person = (
jessinio => "SA",
jacke => "PE",
hyliker => "RP",
zoomq => "LD",
smallfish => "EA"
);
可以看到, array和hash都是使用了"("和")"与产生的.
仅仅利用"()"产生array和hash是不能构造出复杂的数据结构的.如下面的写法就出问题了:
my @TiketNum = ((1, 9), 19, 20, 45,56,19,42,56);
print $TiketNum[0][0]
或者:
my @TiketNum = (1, 19, 20, 45,56,19,42,56);
$TiketNum[0] = (1, 9);
print $TiketNum[0][0];
都是有问题的. hash也是有同样的问题
看了programming perl讲到的数据结构后, 知道了array和hash原来有其它的产生方法:
1. array 使用 "[]"
1. hash 使用"{}"
要想复杂的数据结构只能利用这两种产生方法, 如:
my %Person = (
name => "jessinio",
age => 26,
description => "System administrator",
location => "zhu hai",
LuckNumber => [8, 168, 88] #不是使用"()"的!!
);
print $Person{'LuckNumber'}[0];
* 当然, 可以把所有的"()"用"{}","[]"去代替
产生array和hash后, 去修改存在的array和hash, 使之成为复杂的数据结构, 要使用"[]"和"{}"
如:
my @TiketNum = (1, 19, 20, 45,56,19,42,56);
$TiketNum[0] = [1, 4, 0, 8]; #不是使用"()"的!!
print $TiketNum[0][3];
还可以array的成员为hash:
my @TiketNum = (1, 19, 20, 45,56,19,42,56);
$TiketNum[0] = {1 => 4, 0 => 8}; #不是使用"()"的!!
print $TiketNum[0]{1};
这样就有复杂的数据结构了.
BTW: 没有这两种数据结构真的不是滋味!shell就没有了!!!呃......所以学perl了(原因之一) ^_^
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.