Perl合并文本的一段实例代码_perl

有这样一个文本文件,内容有多行如下,数量不定。
Lif(__amscript_cd("www.jb51.net")){__amscript_wc('#closead {display:none;}');};
Lif(__amscript_cd("www.jb51.net")){__amscript_wc('#footer_win {display:none;}');};
Lif(__amscript_cd("www.jb51.net")){__amscript_wc('.mainad {display:none;}');};
Lif(__amscript_cd("www.jb51.net")){__amscript_wc('.mt5.recommend {display:none;}');};
Lif(__amscript_cd("jbxue.net")){__amscript_wc('.ggAD {display:none;}');};
Lif(__amscript_cd("jbxue.net")){__amscript_wc('.ggSideBox {display:none;}');};
…………
要求合并为:
Lif(__amscript_cd("www.jb51.net")){__amscript_wc('#closead, #footer_win, .mainad, .mt5.recommend {display:none;}');};
Lif(__amscript_cd("jbxue.net")){__amscript_wc('.ggAD, .ggSideBox {display:none;}');};

思路:可以将url视为key,而将合并的字符串视为value,这样存储下来,在打印即可。只是打印的时候有点麻烦,因为这个字符串里面包含了单引号,双引号,小括弧和花括弧,用q##做为字符串界定符即可。

复制代码 代码如下:

#!/usr/bin/perl
use strict;
use warnings;
sub test {
    my %comments_of_url = ();
    open FILE, "<D:/Codesnippets/Perl/abc.txt" or die $!;
    while (<FILE>) {
        # Skip empty lines
        next if /^\s*$/;
        # Use url as key and #xxx as value for each line
        # Merge all the #xxx for a url
        if (/amscript_cd\("(.*?)"\)\){__amscript_wc\('(.*?)\s+\{/) {
            $comments_of_url{ $1 } .= ( $2 . ',' );
        }           
    }
    foreach my $key (keys %comments_of_url) {
        chomp (my $value = $comments_of_url{$key});
        print q{Lif(__amscript_cd("};
        print $key;
        print q#")){__amscript_wc('#;
        print $value;
        print q#{display:none;}');};#;
        print "\n";
    }
}
sub main {
    &test();
}
&main();

时间: 2024-10-13 16:46:01

Perl合并文本的一段实例代码_perl的相关文章

perl获取日期与时间的实例代码_perl

注意:localtime获取的年份是相对于1900的偏移,需要加上1900,而localtime获取的month范围是0-11,需要加1. 复制代码 代码如下: #!/usr/bin/perlmy ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime();    $year += 1900;    $mon++;my $date = "$year-$mon-$day";    print $date, &quo

用Perl操作Excel文档的实例代码_perl

在Linux或者Unix上操作(生成)Excel,CPAN上提供了Spreadsheet::WriteExcel 和 Spreadsheet::ParseExcel这两个模块. 下面就来看看 Spreadsheet::WriteExcel 和 Spreadsheet::ParseExcel的使用方法. 首先,要在服务器上安装相应的模块. 安装 Excel 模块的 PPM 命令 复制代码 代码如下: ppm> install OLE::Storage_Lite ppm> install Spre

javascript 文本图片向上滚动实例代码

javascript教程 文本图片向上滚动实例代码 marque(500,24,"icefable1","box1left") var scrollElem; var stops教程croll; var stoptime; var preTop; var leftElem; var currentTop; var marqueesHeight; var www.111cn.net function marque(width,height,marqueName,mar

perl的格式化(Format)报表输出实现代码_perl

perl有最好的文本数据处理能力.这是大家都知道的.在perl本身有一个别的软件没有的小功能,就是Perl格式.它相当于简单的命令行报表和图表输出.这个需要先声明格式.创建格式的文件句柄.然后由@,^,<,>,|这样的字符构成所谓的"报表"来输出图表.这样可以指定出行的外观.后面接数据项,最后用write来显示格式化的内容. 样例:输出纪录格式输出象下边一样定义:format NAME =FORMLIST. 第一部分,声明.如上.如果省略 NAME,上面的代码将定义格式输出

perl Socket编程实例代码_perl

在networking方面,最基础的是BSD socket编程,但往往perl入门时在这个方面,最头疼的无疑是如何开始,如何Step by step.最好的药方就是Example,一段完整的可以运行(working)的代码,通过实践来感受远比看枯燥的manual来得深刻.      以下给出几段使用Socket及IO::Socket编写的Server/client,他们能实现最简单但是却最基本的任务,包括一个forking/accept的模型.可以直接复制这些代码,然后小加修改即可开发一些小型的

使用AS调整文本字段的大小实例代码

创建一个新的 Flash 文档,并将其另存为 resizeText.fla.     将下面的 ActionScript 添加到时间轴的第 1 帧:  代码如下 复制代码 this.createTextField("my_txt", 10, 0, 0, 100, 21); my_txt.border = true; my_txt.multiline = true; my_txt.text = "Hello world"; my_txt.wordWrap = true

perl的logwrapper使用实例代码_perl

这里为大家举二个小例子,供朋友们学习参考. 对任何的函数记录函数运行的时间. 复制代码 代码如下: #!/usr/bin/perluse warnings;use strict;no strict "refs";sub testLogToStd{print "Test stdout : \n";open LOG,"> 2.txt";select LOG;print "just a test\n";#recover STD

perl常量、多维数组及变量的初始化的实例代码_perl

例1: 复制代码 代码如下: #!/usr/bin/perluse strict; use warnings;my $test = "asdf";print "${test}_test2\n";#constantuse constant {    AAA => "aaa",    BBB=> "bbb",    MIN_TOTAL => 12,    SCORE_PASS => 90,    SCORE

perl用grep map求交集、并集、补集的实例代码_perl

复制代码 代码如下: #!/usr/bin/perl## 用grep map 获取两个列表的交集并集.补集#use strict;my @a=("a","b","c","d","e");my @b=("b","g","f","e");print "列表a数据: @a \n";print "列表b数据