加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:02:27 所属栏目:大数据 来源:网络整理
导读: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 "@kn@vn$countn";if(%hash){?? ?print "That's not a empty has
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 "@kn@vn$countn";if(%hash){?? ?print "That's not a empty hashn";}$ ./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 => $valuen";}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 an";}else{?? ?print "There is no value for an";}&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} itemsn";?? ?}}%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} timesn";??? }}##################################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: %sn",$env,$ENV{$env};}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读