+ -
当前位置:首页 → 问答吧 → [求助] Perl语法问题

[求助] Perl语法问题

时间:2010-10-08

来源:互联网

本帖最后由 brant_chen 于 2010-10-08 14:20 编辑

Perl语法真的让我焦头烂额啊

有如下的code:
  1. sub _uniq {
  2.    my (@keys) = @_;
  3.    my %seen;

  4.    for my $key (@keys) {
  5.       $seen{$key}++;
  6.    }

  7.    return keys %seen;
  8. }

  9. my $verify = {
  10.       id    => 'SCALAR',
  11.       text  => 'SCALAR',
  12.       dependents    => 'ARRAY',
  13.    };
  14.    my $require = {
  15.       id    => 'required',
  16.       text  => 'required',
  17.       dependents    => 'optional',
  18.    };
  19.    my $fail = 0;

  20.    for my $key (_uniq(keys %$verify, keys %$struct)) {
  21. ....
  22.    }
复制代码
我不懂
1. $verify 明明是hash,为什么不是写成:my %verify?
2. keys %$verify是什么意思? 我只见过:
   @keys = keys %ENV;

谢谢。
我并不是常用perl,所以经常整晕,请原谅~~

作者: brant_chen   发布时间: 2010-10-08

引用

作者: 猪鼻插葱   发布时间: 2010-10-08

回复 brant_chen


    reference/dereference

作者: Perl_Er   发布时间: 2010-10-08

perl 语言的精髓 引用

作者: liyangole   发布时间: 2010-10-08

http://www.chinaunix.net/jh/25/504623.html
LZ你去看看这个 或许对你有帮助

作者: 猪鼻插葱   发布时间: 2010-10-08

哦也!
明白了!
谢谢楼上各位,特别是 猪鼻插葱  :)

作者: brant_chen   发布时间: 2010-10-08

回复 brant_chen


    1. $verify 明明是hash,为什么不是写成:my %verify?
   答:$verify不是hash,它是一个指向hash的引用(或者称呼它为指针,这样可能会让你更明白一些,嘿嘿),因为它用{}来定义。而hash是用()来定义的。
       %$verify才是一个hash。
   
   2. keys %$verify是什么意思? 我只见过:
      @keys = keys %ENV;
     答:keys %$verify是一个数组,
  1. _uniq(keys %$verify, keys %$struct)
复制代码
等于
  1. @keys1 = keys %$verify;
  2. @keys2 = keys %$struct;
  3. _uniq(@keys1,@keys2);
复制代码

作者: 珞水的大叔   发布时间: 2010-10-08

大叔 能告之你的联系方式吗?MAIL SMN什么的都行

作者: 猪鼻插葱   发布时间: 2010-10-08

OK
QQ:252843195

作者: 珞水的大叔   发布时间: 2010-10-08