设为首页 收藏本站
查看: 862|回复: 0

[经验分享] Perl Learning - 11 (hash keys, values, each, exists, delete)

[复制链接]
YunVN网友  发表于 2018-8-31 09:52:25 |阅读模式
Subroutine &keys() and &values() ruturns the keys and values of a hash.  #!/usr/bin/perl
  my %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.pl
  c a b
  3 1 2
  3
  That's not a empty hash
  Although 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/perl
  my %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 shell
  print "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/perl
  my %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/perl
  while(){
  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/perl
  my $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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-559231-1-1.html 上篇帖子: Perl Learning - 10 (hash) 下篇帖子: perl数字格式转换
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表