Friday, September 30, 2011

Perl Hashes - reverse, sort, merge,


$hash{$some_key} = "value";

eg. $hash{name} = Raymond;
    $hash{age}  = 29;
    $hash{city} = Hamilton;

%hash = ();     #"%" 百分号就是hash的意思

$hash{name} = Raymond;
 $hash{age}  = 29;
$hash{city} = Hamilton;


print "@{[%hash]}\n";
结果是: city Hamilton name Raymond age 29

单个hash值
print "$hash{city}\n";

如果key有多余一个words 就要用'', $hash{'my name'} = "Raymond nz";


另一种创建hash方法
%hash = (
   'name', 'Raymond',
   'age', '29',
   'city', 'Hamilton'
);

%hash = qw(
 name john
 age 28
 city Hamilton
);

looping hash
%hash = qw(
  food sandwich
  desert donut
  drink coke
);

while(($key, $value) = each(%hash)){
  print "$key --- $value\n";
}

foreach $key (keys %hash){
  pring "$key\n";
  $value = $hash{$key};
  print "$key => $value\n";
}

if(exists($hash{animal})){
  print "Key does exist!\n";
}else{
  print "key doesn't exist!\n";
}
结果:key不存在

defined 和 exists的区别
defined检查有没有值value, exists检查又没key

Reverse, sort, merge
reverse: 把key变成value,把value变成key

%hash = qw(
  food sandwich
  desert donut
  drink coke
);
%reversed = reverse %hash;
foreach $key (keys %reversed){
 print "$key - $reversed{$key};
}

sort:
foreach $key(sort key %hash){
print "key\n";
}

merge:
%hash2 = qw(
 drink coffee
 sugar 1
 milk yes
);

%hash3 = (%hash, %hash2);
print "$hash3{drink}\n";  结果是coffee;

No comments: