Perl Learning - 11 (hash keys, values, each, exists, delete)

Subroutine &keys() and &values() ruturns the keys and values of a hash.#!/usr/bin/perlmy %hash=("a"=>1,"b"=>2,"c"=>3,);my @k=keys %hash;my @v=values %hash;my $count=keys %hash;print "@k\n@v\n$count\n";if(%hash){    print "That's not a empty hash\n";}$ ./key_value.plc a b3 1 23That's not a empty hashAlthough key list and value list are not ordered as we think,they order the same way.Between keys() and values() are called,don't change the hash.&each() returns the key_value pairs of a hash.while(($key,$value)=each %hash){    print "$key => $value\n";}The only use of each() in practice is in while() loop.Note while() is a scalar context,when the condition is a list,take the number of elements of list for true/false judgment.If more than 0 element it is true,0 element is false.We can use foreach to get an ordered key_value pair.foreach $key (sort keys %hash){    print "$key => $hash{$key}\n";}&exists() can judge if a key exists in a hash or not.If exists then true,otherwise false.if(exists $hash{"a"}){    print "There is a value for a\n";}else{    print "There is no value for a\n";}&delete() deletes a pair of value and key from hash.It is not the same as to give undef to a value,with value undef the key_value still exists.The value of hash can be inserted in quotes like value of scalar.#!/usr/bin/perlmy %books=(fred=>3,wilma=>1,barney=>0,pebbles=>undef,);foreach $person(sort keys %books){    if($books{$person}){        print "$person has $books{$person} items\n";    }}%ENV stores the environment parameters of the system,we can get the envs:foreach $env(sort keys %ENV){    print "The '$env' is '$ENV{$env}'\n";}Every value we exports in shell will be added to %ENV.$ export aa=AAAAAAAA    # set in shellprint "The name of 'aa' is '$ENV{aa}'\n";The name of 'aa' is 'AAAAAAAAA'Execsices:1. Get names of some users,print their given names.#!/usr/bin/perlmy %names=(    fred => "flintstone",    barney => "rubble",    wilma => "flintstone",    );foreach $surname(sort keys %names){    print "The name of $surname is $names{$surname}\n";}##################################2. Input some names,each line one name,Print the times of each name appears.#!/usr/bin/perlwhile(<>){    chomp;    $count{$_}++;}foreach $name(sort keys %count){    if($count{$name}){        print "$name appears $count{$name} times\n";    }}##################################3. Print %ENV each line left align,use length() to get the proper length to align.#!/usr/bin/perlmy $longest=0;foreach(sort keys %ENV){    $longest = length($_) if $longest < length($_);}foreach $env(sort keys %ENV){    printf "%-${longest}s: %s\n",$env,$ENV{$env};}

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...