hash的键值问题

hash的键值问题

$image{ $token->[2]{’src’} }++;  我看不懂这句是啥意思,特别是{’src’} ,麻烦各位大哥帮忙解释一下,谢谢!

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl -w
  
use strict;
use LWP::Simple;
use HTML::TokeParser;
  
my $html   = get("http://www.oreilly.com/");
my $stream = HTML::TokeParser->new(\$html);
my %image  = ( );
  
while (my $token = $stream->get_token) {
    if ($token->[0] eq ’S’ && $token->[1] eq ’img’) {
        # store src value in %image
        $image{ $token->[2]{’src’} }++;    }
}
  
foreach my $pic (sort keys %image) {
    print "$pic\n";
}

%images的键是这个网页中的所有图片源地址,值是每个源地址出现的次数。
$image{ $token->[2]{’src’} }++;  # 每找到一个src属性就给它的的计数器加一
$token->[2]{’src’} #散列的数组析值


QUOTE:
原帖由 machine 于 2008-11-26 14:45 发表
%images的键是这个网页中的所有图片源地址,值是每个源地址出现的次数。
$image{ $token->[2]{’src’} }++;  # 每找到一个src属性就给它的的计数器加一
$token->[2]{’src’} #散列的数组析值

$token->[2]{’src’}
等于
$token->[2]->{src}


QUOTE:
原帖由 ynchnluiti 于 2008-11-26 14:51 发表

$token->[2]{’src’}
等于
$token->[2]->{src}

' src' != src
为什么多了个空格。


QUOTE:
原帖由 MMMIX 于 2008-11-26 17:04 发表

' src' != src

他的是中文符号吧


QUOTE:
原帖由 machine 于 2008-11-26 14:45 发表
%images的键是这个网页中的所有图片源地址,值是每个源地址出现的次数。
$image{ $token->[2]{’src’} }++;  # 每找到一个src属性就给它的的计数器加一
$token->[2]{’src’} #散列的数组析值

明白了,你是指$token->[2]是一个散列,’src’是它的一个键对吧,然后这个键对应的值已经被定义好了,就是紧接着的源地址,对吗?

QUOTE:
$p->get_token
This method will return the next token found in the HTML document, or undef at the end of the document. The token is returned as an array reference. The first element of the array will be a string denoting the type of this token: "S" for start tag, "E" for end tag, "T" for text, "C" for comment, "D" for declaration, and "I" for process instructions. The rest of the token array depend on the type like this:

  ["S",  $tag, $attr, $attrseq, $text]
  ["E",  $tag, $text]
  ["T",  $text, $is_data]
  ["C",  $text]
  ["D",  $text]
  ["I", $token0, $text]
where $attr is a hash reference, $attrseq is an array reference and the rest are plain scalars. The "Argspec" in HTML:arser explains the details.



QUOTE:
原帖由 ynchnluiti 于 2008-11-26 17:35 发表

他的是中文符号吧

没错。这种情况就更简单了,直接编译就会报错。