Chinaunix
标题:
请教两个问题
[打印本页]
作者:
bandaotidejia
时间:
2014-11-10 11:09
标题:
请教两个问题
本帖最后由 bandaotidejia 于 2014-11-10 11:23 编辑
之前做c开发,现在做perl发现很多理解起来有点费解,请前辈指教
1 perl的hash表 %xxx 和c的hash是不是不一样,hash本来是将字符串映射为一个地址,但是perl好像都是指定一个数字 比如:
%abc= (
name => 3,
medium => 1,
large => 2,
);
对于下面的代码,keys是perl内置的变量吗?
@sts = keys %abc;
foreach $dkey (@sts)
{
print dout1 "$dkey;\n";//这个是打印出所有的key值吗?
}
如果打印多少value是不是得这样:
@sts = values %abc;
foreach $dkey (@sts)
{
print dout1 "$dkey;\n";
}
2 $$ 表示变量的变量,是不是和c里面地址的地址类似,好像还不一样
比如$$abc{"Name"};是什么意思啊?
作者:
zhlong8
时间:
2014-11-10 11:43
我觉得 Perl 是动态类型的 C+shell +sed/awk
hash 把字符串映射为一个 scalar,scalar 包括了数字、字符串、引用。
keys values 是处理 hash 的关键字/内置函数。
引用是安全的指针,它没法做数学运算,只能通过取了一个值的引用来创建,不存在空引用。
C中 *a 是取指针a的值,Perl 中 $$a 是取引用 $a 指向的 scalar, %$a 是取 $a 指向的 hash ,解引用时需要根据类型选择是 $$a 还是 @$a 还是 %$a 。这不科学,没必要指明类型($%@)才对,但 Perl 的语法决定了它需要这样设计。
单独的 $$ 和shell 中一样表示当前进程的PID。Perl 的变量的名字可以是
单个
符号,比如 $$ $! $@ @- %- 怎么同 $$a 区分这个靠语法。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2