觉得这个范例不错就保存了,原文地址在这里:http://www.cnblogs.com/zhangzhi/archive/2010/10/19/1855302.html

Perl 文件处理范例

. 任意字符

?0或者1个

* 任意个

+ 一个或者以上

$_ 默认数组

$@ 第一被匹配的字符

$` 被匹配字符之前的字符

$' 被匹配字符之后的字符

$1 第一个被匹配的字符,以左括号的顺序算。

<>砖石输入符

=~ 匹配判断符号

\d 数字

\D 非数字

\w [A-Za-z0-9_]

\W 非  [A-Za-z0-9_]

\s 字符

\S 非字符

{n} 重复n次

open FILE, "file.txt" 打开已经存在的文件

open FILE,">file.txt" 打开file.txt,如果不存在的话就创建file.txt

open FILE,">>file.txt" 打开,并将新内容追加到文本的末端,如果不存在的话,创建file.txt

双引号内的转义符

\n           换行
\r            回车
\t            制表符
\f             formfeed
\b          退格
\a         响铃
\e          escape(ASCII 中的escape 字符)
\007      任何八进制值(这里是,007=bell(响铃))
\x7f       任何十六进制值(这里是,007=bell)
\cC          一个控制符(这里是,ctrl +c)
\\           反斜线
\”        双引号
\l          下个字符小写
\L        接着的字符均小写直到\E
\u        下个字符大写
\U          接着的字符均大写直到\E
\Q        在non-word 字符前加上\,直到\E
\E         结束\L,\U 和\Q

example1

从一个mail.list中识别 @eric.com的usr name,排序后输出到result.list中。

mail.list:

f@brand.com
d@eric.com
g@syv.com
a@eric.com
h@mail.com
c@eric.com
x@joey.com
b@eric.com

perl script:


代码
#! /usr/bin/perl   #perl directory declaration open MAIL,"mail.list";               #open and read mail.list context
open RESULT,">result.list";       #create a new file named" result.list", using filehandle "RESULT" to transfer information $n =0;                                   #define a varibale foreach (<MAIL>){                  #processing each line from context <MAIL>
if(/(\@eric\.com)/)                   # judge if pattern"@eric.com" matched, and store it in "$&"  
    {   $array[$n]= "$`\n";        # store words before matched("$`") in @array
        $n =$n +1;                    #index add one
    }
} @sorted = sort (@array);          # sort array by letters print RESULT @sorted;              # print array in output file close RESULT;                         # close file
close MAIL;

result.list

a
b
c
d

example2

将当前目录下所有 .cc结尾的文件 重命名为 .c结尾


#! /usr/bin/perl

@list =glob('./*.cc');

foreach $list(@list){
    my $name = $list;
    $name =~ s/cc$/c/;
    rename $list,$name;  
    }

example 3

将文件的中的各个module 实例化,输出到新的文件中。


代码
#! /usr/bin/perl open TMP,">instance.v"; while(<>){
if(/^module (.*)\((.*)\);$/m){
    $module_name =$1;
    $port_list = $2;
    
    @ports = split(/,/,$port_list);
    my $n =@ports;
    my $i=0;     print TMP "$module_name U_$module_name(\n";     for($i=0; $i<$n; $i =$i+1){
        print TMP "$ports[$i]($ports[$i]),\n";
        if($i==$n -1){
         print TMP ");\n";
        }
    }   
}      
} close TMP;
close CODE;

windows下perl脚本范例


 1 #! C:\strawberry\perl\bin\perl
 2 system("update.bat"); #运行脚本
 3 open FILE, "file.lst";
 4 @lines =<FILE>;#将文本所有内容读入@lines
 5 
 6 foreach $lines (@lines){ #处理@lines中的每行
 7     chomp($lines);
 8     open SOURCE,"$lines";
 9     my @content=<SOURCE>;
10     open Result ,"> ./result/$lines"; #windows下的路径也是用斜杠,而不是反斜杠
11     #$lines =~ s/txt/png/;
12     #print Result "$lines\n";
13     foreach $content(@content)
14     {
15         if($content =~ /Image filename/)
16         {    
17             chomp($content);
18             @dirname =split(/"/,$content);
19             print Result "$dirname[$#dirname] \n";    
20             print "$dirname[$#dirname] \n";
21         }
22 
23 
24         if($content =~ /(Objects with ground truth : )/)
25         {
26             $re = $';
27             @num =split(/\s/,$re);
28             print Result "$num[0] \n";    
29         }        
30 
31         if($content =~ /(\(Xmin, Ymin\) - \(Xmax, Ymax\) :)/)
32         {
33             $a=$';
34             if($a =~ /([0-9]+)\D*([0-9]+)\D*([0-9]+)\D*([0-9]+)/)
35             {
36                 print Result "$1 $2 $3 $4 \n";
37             }
38     
39         }
40 
41     }
42         close SOURCE;
43         close Result;
44 
45 }
46 close FILE;
47 
48 

Perl 文件处理范例的更多相关文章

  1. 分享:perl 文件操作总结

    发布:thebaby 来源:net [大 中 小] perl 文件操作,包括打开.关闭文件,读取.定入文件等.原文链接:http://www.jbxue.com/article/3153.html 打 ...

  2. 单片机成长之路(51基础篇) - 015 关于sdcc的多文件编译范例二

    本文是续 单片机成长之路(51基础篇) - 009 关于sdcc的多文件编译范例(一)编写的. 在实际的工作中,单片机的头文件和功能函数不可能同全部放在同一个文件夹下面,我们把单片机成长之路(51基础 ...

  3. Makefile中怎样调用python和perl文件为自己提供须要的数据

    Makefile中怎样调用python和perl文件为自己提供须要的数据,利用print函数对外输出数据 实例代码例如以下 perl.pl #!/usr/bin/perl print("he ...

  4. perl文件操作

    Perl 文件操作 Perl 使用一种叫做文件句柄类型的变量来操作文件. 从文件读取或者写入数据需要使用文件句柄. 文件句柄(file handle)是一个I/O连接的名称. Perl提供了三种文件句 ...

  5. Perl文件测试操作和stat函数

    在shell中通过test命令或者中括号[]可以进行文件测试以及其它类型的测试,例如判断文件是否存在,比较操作是否为真等等.perl作为更强大的文本处理语言,它也有文件测试类表达式,而且和shell的 ...

  6. Perl文件、目录常用操作

    注意,这些操作的对象是文件名(相对路径/绝对路径),而非文件/目录句柄,句柄只是perl和文件系统中文件的关联通道,而非实体对象. 创建文件 在unix类操作系统中有一个touch命令可以非常方便的创 ...

  7. 单片机成长之路(51基础篇) - 009 关于sdcc的多文件编译范例(一)

    本文是续 单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境编写的. 本范例主要由(main.c ,delay.h,delay.c,makefile)4个文件组成,s ...

  8. Perl文件读写

    Perl File Handling: open, read, write and close files #==================== Opening files Solution 1 ...

  9. Linux网络编程:socket文件传输范例

    基于TCP流协议的socket网络文件传输Demo: 实现:C语言功能:文件传输(可以传任何格式的文件) /********************************************** ...

随机推荐

  1. servlet路径映射中的完全路径匹配、目录匹配、扩展名匹配

    在servlet路径映射中,关于url-pattern的配置有三种,分别是完全路径匹配.目录匹配.扩展名匹配 其优先级分别为:完全路径匹配>目录匹配>扩展名匹配: 一.三种路径印射的区别 ...

  2. Go Example--通道非阻塞

    package main import ( "fmt" ) func main() { messages := make(chan string) signals := make( ...

  3. Mongo 3.6.1版本Sharding集群配置

    Mongo低版本和高版本的sharding集群配置,细节不太一样.目前网上的配置文档大都是针对低版本的.本人在配置3.6.1版本的mongosharding集群的过程中,碰到不少问题,官方文档没有直观 ...

  4. C#模拟键盘按键的三种方式实现

    1.System.Windows.Forms.SendKeys 组合键:Ctrl = ^ .Shift = + .Alt = % 模拟按键:A private void button1_Click(o ...

  5. axios 的使用方法

    axios是一个基于promise的HTTP库, 可以再浏览器和node.js中使用 浏览器的兼容 安装 使用npm安装 npm install axios --save 使用bower安装 bowe ...

  6. nginx 镜像使用说明

    nginx 镜像说明 目录 说明 /etc/nginx nginx安装目录 /usr/share/nginx/html nginx网站资源存放的目录 运行nginx容器,相关命令: 命令 说明 doc ...

  7. apache的MultipartEntityBuilder文件上传

    本文讲解多文件上传方法,不比较上传有几种方法和效率,而是定向分析apache的httpmime包的MultipartEntityBuilder类,源码包:httpmime-4.5.2.jar 一.常用 ...

  8. 运行成功的Demo(Python+Appium)

    原文摘自:廖丹  http://www.cnblogs.com/android-it/p/8805659.html 1.打开Appium运行 2.在Pycharm输入代码如下所示: from appi ...

  9. Hadoop HDFS 文件块大小

    HDFS 文件块大小 HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M ...

  10. hanlp提取文本关键词的使用方法记录

    本文是csu_zipple 分享的关于使用hanlp汉语言处理包提取关键词的过程一个简单的记录分享.想要使用hanlp提取文本关键词的新手朋友们可以参考学习一下! 如何在一段文本之中提取出相应的关键词 ...