Chinaunix首页 | 论坛 | 博客
  • 博客访问: 958009
  • 博文数量: 99
  • 博客积分: 3306
  • 博客等级: 中校
  • 技术积分: 1238
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-21 10:14
文章分类

全部博文(99)

文章存档

2012年(37)

2011年(56)

2010年(6)

分类: Python/Ruby

2011-08-28 20:14:01

今天粗略看了下《Perl 高效编程》,觉得是本好书。学到了一些之前没有见过的小技巧。
1.perl里的switch:given () when {}
  1. a.
  2. given ($var) {
  3.         when('a') { do sth1}
  4.         when('b') {do sth2}
  5.         when('c') {do sth3}
  6.         default { do default thing};
  7. };

  8. b.
  9. given ($dog) {
  10.    when ($dog eq 'a') {do sth1}
  11.    when ($dog eq 'b') {do sth2}
  12.    default (do default thing);
  13. };

  14. b.
  15. given ($dog) {
  16.    when($dog ~~ 'a') {do sth1}
  17.    when($dog ~~ 'b') {so sth2}
  18.    default (do default thing);

  19. };
2.智能匹配


3.只编译一次正则表达式和预编译正则表达式
加 'o' 标志,如if ($line=~/\d{3,}/o )则正则表达式只编译一次
使用 qr则可以预编译正则表达式
  1. my $regex= qr/\b$name\b/
4.哈希的切片,删除

  1. #!/usr/bin/perl -w
  2. use strict;
  3. my %hash=(
  4.         'a'=>1,
  5.         'b'=>2,
  6.         'c'=>3,
  7.         'd'=>4,
  8.         'e'=>5,
  9.         );

  10. &phash(\%hash);
  11. my @del=('a','b','e');
  12. delete @hash{@del};
  13. print "after delete :\n",join("\n",@del),"\n";
  14. &phash(\%hash);
  15. sub phash(\%) {
  16.     my $href=shift;
  17.     while (my ($k,$v)=each %{ $href }) {
  18.         print $k,'==>',$v,"\n";
  19.     }

  20. }
  21. gnu@debian:~$ ./hash.pl
  22. e==>5
  23. c==>3
  24. a==>1
  25. b==>2
  26. d==>4
  27. after delete :
  28. a
  29. b
  30. e
  31. c==>3
  32. d==>4



阅读(1817) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~