【perl】例子记录

#!/usr/bin/perl

while(<STDIN>){
  chomp;
  if(/(?<name1>\b\w+a\b)/g){
    print "Matched:|$`<$&>$'|\n";
    print "\'word\' contains \'$+{name1}\'";#注意反向引用
  }
  else{
    print "No match: |$_|\n";
  }

}

#!/usr/bin/perl

use strict;

my $in=$ARGV[0];
unless(defined $in){
  die "Usage:$0 filename"; #$0含有正在执行的文件名
}

my $out=$in;
$out=~ s/(\.\w+)?$/.out/;

unless(open IN,"<d:/2.txt"){die "Can't open :$!";}
unless(open OUT,">$out"){die "Can't open :$!";}

while(<IN>){
  s/fred/Larry/gi;
  print OUT $_;
}

#!/usr/bin/perl

my %do_these;
foreach (@ARGV){
  $do_these{$_}=1;
}

while(<>){
  if(/##Copyright/){
    delete $do_these{$ARGV};#当前正在读取的命令行参数可用$ARGV取得
  }

}

@ARGV = sort keys %do_these;

while(<>){
  if(/^#!/){
    $_ .= "##Copyright (c) 20XX by Yours Truly \n";
  }
  print;
}

#!/usr/bin/perl

unless(open NUM,"d:/3.txt"){die "Can't open : $!";}

while(<NUM>){
  push @numbers,split;#输入的第一行看作是一个字符串,所以要用split隔开
                      #split 如果后面没有参数时默认为 split /\s+/ ,$_
}

foreach(sort {$a<=>$b} @numbers){#按数字顺序排序
  printf "%20g\n",$_;
}

close NUM;

open(A,"test.txt");

while(my $line=<A>){
   chomp $line;
   @sss = split("\t",$line);
   $save{$sss[2]} =$line;
}
close(A);
 
my @key =sort {$b <=> $a} keys %save;
 
for my $i(@key){
    print $save{$i};
}

#!/usr/bin/perl

my %last_name = (

  'fred'   => 'flintsone',
  'Silma'  => 'filntsone',
  'Barney' => 'Rubble'
);


sub by_name{

  "\L$last_name{$a}" cmp "\L$last_name{$b}" #以ASCII顺序(非字典顺序)进行sort

  or 
  "\L$a" cmp "\L$b"

}

my @result = sort by_name keys %last_name;

foreach (@result){
  print "$last_name{$_},$_\n";
}

#!/usr/bin/perl

#功能:比对两个文件的数据

unless (open FILE ,"<d:/verify_data_output.txt"){die "Can't open file : $!"};
unless (open VFYMDF ,">d:/vfy_mdf.txt"){die "Can't open file : $!"};

$line = 0;
while(<FILE>){
  if($line == 0){#去除第一行数据
    s/.*//;
    s/\s+//;
  }
  else{
    chomp($_);
    my $h=hex($_);#十六进制转为十进制
    my $bin=sprintf("%027b",$h); #十进制转为二进制
    $bin =~ s/^(d{25})/$1 /;
    my ($valid,$f) = split /\s+/,$bin;#提取前25位数据
    print VFYMDF "$valid\n";
  }
  line++;
}

close FILE;
close VFYMDF;



 

#!/usr/bin/perl

#批量重命名

chdir "d:/ex" or die "Can't chdir to d:/ex:$!";

foreach my $file (glob "*.bak"){#glob读取一个目录下的所有文件

  my $newfile = $file;
  $newfile =~ s/\.bak$//;
  if(-e $newfile){
    warn "can't rename $file to $newfile:$newfile exists\n";
  }
  elsif(rename $file,$newfile){}
  else{
    warn "rename $file to $newfile failed : $! \n";
  }

}

#!/usr/bin/perl

unless(open FILE,"d:/4.txt"){die "Can't open file : $!";}

my @f_n = <FILE>;

foreach $num (0..$#f_n){
  unless(open MGG,"<$f_n[$num]"){die "Can't open file : $!";}
  unless(open OUT,">$f_n[$num].bak"){die "Can't open file : $!";}
  &delete_part_file;
}

sub delete_part_file{
  #$^I = ".bak";  #只能和钻石操作符配合使用
  my $line = 0;
  while($tem = <MGG>){
    if($line<=3){#删除前四行
      $tem=~ s/.*//;
      $tem=~ s/\s+//;
    }
    elsif(/__END__/){
      $line=0;
      close MGG;
      last;
    }
    else{
      print OUT "$tem";
    }
    $line++;
  }
}

#!/usr/bin/perl


unless(open FILE,"<D:/4.txt"){die "Can't open file : $!";}

my @f_n = <FILE>;

foreach $num (0..$#f_n){
  unless(open MGG,"+<$f_n[$num]"){die "Can't open file : $!";}#先读后写
  unless(open OUT,">$f_n[$num].bak"){die "Can't open file : $!";}
  &delete_part_file;
}

sub delete_part_file{
  #$^I = ".bak";  #只能和钻石操作符配合使用,用于产生文件的备份
  my $line = 0;
  while($tem = <MGG>){
    if($tem=~/\n/){
      $currentpos=tell;#返回文件句柄当前位置
      last;
    }
  }
  seek(MGG,$currentpos,0);#0:文件开头,1:当前位置,2:文件末尾 
  print MGG "hello !\n";
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值