perl模块_List::Util

1加2加3加4 … 加到100,试了一下还是perl最快
需要用到perl的List::Util模块.

  1. [root@centos perl]# more plus.pl
  2. #!/usr/bin/perl -w
  3. use strict;
  4. use List::Util qw[sum];
  5. my $t = sum(1..100);
  6. print "$t\n";
  7. [root@centos perl]# perl plus.pl
  8. 5050

shell取巧的方法也很简单,利用seq与sed和bc
seq生成数字,sed将空格替换为加号,通过管道传递给bc进行加法运算.

  1. [root@centos perl]# seq -s " " 100|sed 's/ /+/g'|bc
  2. 5050

perl_reverse_sort_scalar

学习perl的reverse,sort,scalar,记录一下。

  1. [root@OTRS perl]# more reverse_sort_scalar.pl      
  2. #!/usr/bin/perl -w
  3. use strict;
  4. #reverse
  5. my @array_reverse = 1..3;
  6. my @array_ed = reverse(@array_reverse);
  7. print "数组的值为1 2 3,reverse反转数组的值为: ","@array_ed\n";
  8. #sort
  9. my @array_sort = qw/c b a/;
  10. my @sorted = sort@array_sort;
  11. print "数组的值为c b a,sort排序后为: ","@sorted\n";
  12. #scalar强制指定标量上下文。
  13. my @array_scalar = qw/a b c/;
  14. print "数组的值为abc,scalar指出数组的个数为:",scalar@array_scalar,"\n";
  15. [root@OTRS perl]# perl reverse_sort_scalar.pl
  16. 数组的值为1 2 3,reverse反转数组的值为: 3 2 1
  17. 数组的值为c b a,sort排序后为: a b c
  18. 数组的值为abc,scalar指出数组的个数为:3

perl_pop_push_shift_unshift

perl的pop跟push操作数组的最右边,shift跟unshift操作数组的最左边
学习记录一下

  1. #!/usr/bin/perl -w
  2. use strict;
  3. print '@a @b @c @d 的值都为1 2 3',"\n";
  4. my @a = (1..3);
  5. pop(@a);
  6. print "\@a的值为@a,pop拿掉数组最右边的值\n";
  7. my @b = (1..3);
  8. push(@b,'4');
  9. print "\@b的值为@b,push添加一个值到数组的最右边。\n";
  10. my @c = (1..3);
  11. shift@c;
  12. print "\@c的值为@c,shift拿掉数组最左边的一个值。\n";
  13. my @d = (1..3);
  14. unshift(@d,0);
  15. print "\@d的值为@d,unshift添加一个值到数组的最左边。\n";
  16.  
  17.  
  18. [root@OTRS perl]# perl pop_push_shift_unshift.pl
  19. @a @b @c @d 的值都为1 2 3
  20. @a的值为1 2,pop拿掉数组最右边的值
  21. @b的值为1 2 3 4,push添加一个值到数组的最右边。
  22. @c的值为2 3,shift拿掉数组最左边的一个值。
  23. @d的值为0 1 2 3,unshift添加一个值到数组的最左边。

perl脚本计算IP

由于工作上的需要,要将IP段计算成IP,perl的Net::IP刚好用上.

  1. #!/usr/bin/perl -w
  2. use strict;
  3. use Net::IP;
  4. my $ip = new Net::IP ('192.168.0.0/24') or die;
  5. do {
  6.    print $ip -> ip(),"\n";
  7. } while(++$ip);

将文本文件的ip段计算成ip地址

  1. #!/usr/bin/perl -w
  2. use strict;
  3. use Net::IP;
  4. open (A, "<wait.txt");
  5. while (<A>) {
  6.    my($a) = $_;
  7.    my $ip = new Net::IP ("$_") or die $!;
  8.    do {
  9.       print $ip -> ip(), "\n";
  10.    }
  11.    while (++$ip);
  12.          }

perl进度条

收藏个perl的进度条

  1. #!/usr/bin/perl -w
  2. $n = 27;
  3. for($i=1;$i<=$n;$i++){
  4. proc_bar($i,$n);
  5. select(undef, undef, undef, 0.2);
  6. }
  7. print "\n";
  8.  
  9. sub proc_bar{
  10. local $| = 1;
  11. my $i = $_[0] || return 0;
  12. my $n = $_[1] || return 0;
  13. print "\r\033[36m[\033[33m".("|" x int(($i/$n)*50)).
  14. (" " x (50 - int(($i/$n)*50)))."\033[36m]";
  15. printf("%2.1f%%\033[0m",$i/$n*100);
  16. local $| = 0;
  17. }