Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1306829
  • 博文数量: 213
  • 博客积分: 7590
  • 博客等级: 少将
  • 技术积分: 2185
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-31 17:31
个人简介

热爱开源,热爱linux

文章分类

全部博文(213)

文章存档

2018年(4)

2017年(1)

2015年(1)

2014年(5)

2013年(2)

2012年(2)

2011年(21)

2010年(82)

2009年(72)

2008年(23)

分类: LINUX

2011-01-06 10:49:04


从今天开始,我将我学到的自己觉的有意义的perl脚本不定期的添加到该文件下面,以备不时之需。
1.输出过滤器实例


#!/usr/bin/perl -w

# The script is used to print a file/directory in current dir per # #   second

open(F,"ls -l |") or die;
while(<F>) {
    print;
    sleep(1);
}


2.输入过滤器

#!/usr/bin/perl -w

# The script is used to count how many words in the given array

open (FILE,"|wc -w");
print FILE "Hello world!";
close(FILE);


3.批量修改文件内容
如果有一批文件中的Name域的名字Ceagle需要修改为CJF,但是文件有成百上千个,那么需要使用脚本进行处理
如文件file1内容如下

Name:    CJF
ID:    001
Date:    Fri Jan 7 10:49:09 CST 2011
...

还有类似文件100个,可使用下列脚本实现批量修改

#!/usr/bin/perl -w

use strict;
chomp(my $date = `date`);
#print $date;

$^I = ".old";
while(<>) {
    s/^Name:.*/Name:\tCJF/;
    s/^Date:.*/Date:\t$date/;
    print;
}

当然也可以使用perl里面的指定内容进行修改

perl -p -i.bak -w -e 's/CJF/Ceagle/g' file*

如此,便把所有文件中的CJF修改为了Ceagle

4.计算一串数字中的最大值

#!/usr/bin/perl -w

use strict;
sub max_number {
    my $current_max = shift @_;
    foreach(@_) {
        if ( $_ > $current_max ) {
            $current_max = $_;
        }
    }
    $current_max;
}
my @number=qw/1 2 3 4 6 5 7/;
my $max = max_number(1,2,4,5);
my $max1 = max_number(@number);
print "The max number is :$max\n";
print "The max number of \@number :$max1\n";


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