请教大家了my %oldHash = %$hashRef;和if (@$arrayRef == 1) { 都啥意思啊?

请教大家了my %oldHash = %$hashRef;和if (@$arrayRef == 1) { 都啥意思啊?

sub makeNewHash($) {
    my $hashRef = shift;
    my %oldHash = %$hashRef;    my %newHash = ();
    while ( my ($key, $innerRef) = each %oldHash ) {
        my $value = @$innerRef[0];
        if ($key eq 'dob') {
            $newHash{'age'} = dob2age($value);
        } else {
            if ($key eq 'price') {
                $value = fixPrice($value, 0.20);
            }
            $newHash{$key} = $value;
        }
    }
    return \%newHash;
}
sub foldType ($) {
    my $arrayRef = shift;
    # if single element in array, return simple hash
    if (@$arrayRef == 1) {
        return makeNewHash(@$arrayRef[0]);
    }
    # if multiple elements, return array of simple hashes
    else {
        my @outArray = ();
        foreach my $hashRef (@$arrayRef) {
            push @outArray, makeNewHash($hashRef);
        }
        return \@outArray;
    }
}
都是关于引用的.
1,3 和 引用有关

2 就是让 shhgs 疯了的一种用法。
看精华区。或者继续死等。


QUOTE:
原帖由 flw 于 2007-9-12 08:54 发表
看精华区。或者继续死等。

当家的好酷!
perldoc perlref


QUOTE:
原帖由 moonce 于 2007-9-12 09:01 发表



当家的好酷!

恩,你说的对,不是一般的酷,小心给你来极速冷却,“咻~~~~”

QUOTE:
3楼 发表于 2007-9-12 08:50
1,3 和 引用有关

2 就是让 shhgs 疯了的一种用法。

的确,让某个还是有些底子的人疯了

ps. 为何他从来没想过 = 和 == 咋就能接受呢,不都是等于。(只是ps,所以大家请无视)

哦,回正题,一个是hash的引用,一个是数组的引用,一看就明白
这里没用太复杂的机理,应该一看书就知道了

%$hashRef是从hash引用析值
@$arrayref是从数组引用析值

@$arrayref == 1 是判断析值后的数组的元素个数是否是1. ==符号是标量上下文, 而数组在标量上下文返回其元素个数.