用正则表达式提到c程序注释

“提取c程序注释”,这是一个典型的状态机问题,但在此我想用正则表达式(regExp)工具来解决。 perl的正则表达式很强,起初我想到“多行匹配”,将c文件整个读入一个串变量,然后逐个抽取/*块注释*/。这可能需要使用选项 /m /g ,还得考虑行注释和块注释符的混合情况,是个棘手的问题。 初次尝试 发现一个大问题: 匹配最大串还是最小串? # perl 5.12 # // 行注释 # /* */ 块注...

作者: vivieu 发布时间: 12-23

Perl的array 动态添加 push unshift pop shift

废话不多讲,直接上需求 有一个文件,里面每一行保存一条记录,每一条记录有两个字段,第一个字段为数字,第二个字段表示被提取的内容,第一个字段表示内容在对应文件的行数。 现在,我假定行数相同的内容划分为同一类。需要做的就是,统计总共有多少类,并将每条记录所属类别标记出来,写到文件中。。 下面是源代码(countCLS.pl): 1 #!/usr/bin/perl 2 my $in = $ARGV[0...

作者: neobilly 发布时间: 12-22

Perl 程序 文本处理 从文本文件中提取需要的信息

接上回,从网上获得了一组文件,然后需要提取信息,考虑到文件的结构比较规则,决定用正则表达式。 当然前期的处理有:把^M去掉,命令如下: #for a in `ls htmls`; do sed -e 's/^M//g' $a >$a.out; done 注意:^M不是^ M,而是Ctrl+V Ctrl + M 源代码如下: #!/usr/bin/perl my $in = $ARGV[0]; my $line = ""; die "NO input file!" if(!defined($in));#没有输入则结束 op...

作者: neobilly 发布时间: 12-03

将阿拉伯数字转换成罗马数字 (Perl版本)

#use warnings; use strict; use Switch; my @set=('M','D','C','L','X','V','I'); while(<STDIN>) { chomp; my $number=$_; my $i=0; my @array; my $result; if($number=~ m/^[1-3]??(?(?<=^)[1-9]|\d){0,3}$/) { $number=sprintf "%4d",$number; my @num=split "",$number; foreach my $num (@num) { unless(($num eq ' ')||($num eq '0')){ switch($i) { case 0 { @arra...

作者: icybay 发布时间: 11-30

windows下运行perl-cgi程序

今天下载了个好东西,“PERL编程24学时教程”,我直接看 将perl用于cgi那部分。我发现,学一门东西,当时学不下去时,很困惑时,就放在那里,过段时间有灵感了,再翻过来看,其实很简单。 怎么在windows下运行cgi程序呢?? 第一步:安装好perl5 第二步:安装好apache 第三步:在apache根目录下建一个文件夹cgi-bin,文件夹下再建个hello.cgi文件,里面写上 use CGI qw(:stand...

作者: xp_寞踪 发布时间: 11-23

perl之Globbing

一、Globbing 通常,shell将每个命令行中的任何的文件名模式转换成它所匹配的文件名。这被称作globbing。例如,在echo命令后使用了文件名模式*.pm,shell会将它转换成它所匹配的文件名。 my @all_files = glob "*";foreach $v (@all_files){ print $v."\n";} @all_files得到了当前目录下的所有文件,这些文件按照字母排序的,不包括由点(.)开头的文件。 my @all_files = glo...

作者: huaius 发布时间: 11-16

perl---regular expression

1. 使用简单的模式 要匹配某个模式(正则表达式)和$_的关系,可以将模式放在正斜线(//)之间,如下: $_ =“yabba dabba doo”; if(/abba/){ print “It matched!\n”; } 表达式/abba/将在$_寻找这四个字母。如果找到,则返回true,在本例中,它出现了不止一次,但结果没什么不同。总之,如果找到了,则匹配上;如果没找到,则没匹配上。由于模式匹配通常返回true 或false,因...

作者: leve1031 发布时间: 11-03

perl---hash

1. what is hash? 哈希是一种数据结构,和数组类似,可以将值存放到其中,或者从中取回值。但是,和数组不同的是,其索引不是数字,而是名字。也就是说,索引(这里,我们将它叫key)不是数字而是任意的唯一的字符串.but the key must be unique in the hash.另一种思考hash 的方法是,把它看作一堆数据(a barrel of data),每一个数据都有一个相应的标签。可以通过标签访...

作者: leve1031 发布时间: 11-03

Perl取数据的一段CGI脚本

#!/usr/bin/perl ## ====================================== ## cluster_cgi Used to check cluster ## Created by yangyi:2010-07-29 ## Last modified by yangyi:2010-09-21 ## ====================================== use strict; use warnings; use lib qw(./lib); use DBI; use DBD::mysql; use dbconnect; use CGI qw(:standard); ##==============================...

作者: jayamge 发布时间: 11-02

About issue of chomp command

what 's the issue? chomp function can't assign to others variable. for example: # cat /tmp/a a d g f # cat /tmp/b.pl #!/usr/bin/perl $file="/tmp/a"; @array=qw(a b c d); open(FH,"$file") or die "couldn't open $file:$!"; foreach (<FH>) { $line=chomp($_); print "$line\n"; foreach (@array) { $item=chomp($_); if ("$item" eq "$line" ){ print "$line\n"...

作者: yu_jiang163 发布时间: 10-22