Chinaunix首页 | 论坛 | 博客
  • 博客访问: 258553
  • 博文数量: 54
  • 博客积分: 2915
  • 博客等级: 少校
  • 技术积分: 486
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-21 12:20
个人简介

这个人很懒,什么都没有留下

文章分类
文章存档

2013年(1)

2012年(6)

2011年(11)

2010年(16)

2009年(20)

我的朋友

分类:

2009-05-21 15:15:58

文件:作业一报告.doc.zip
大小:4KB
下载:下载
第一次作业,要求是:找出一篇中文文本里所有的“因为……所以……”,输出时,包括这两个词旁边的部分内容,要求每对“因为”“所以”都对齐输出。

下面是代码,附件是报告。存在的问题在报告中提及。由于是比较早就完成的作业,这里就不去考究它了,新开的博客,顺便把以前的东西搁进来。

#!/usr/bin/perl


use strict;

use warnings;

#####################定义变量名##################


my $dir = "C:\\cause_so";

my $filename;

my $part_of_before="";

my @part_of_middle;

my $sentence="";

my $i;

my $line;

###################函数体#####################


open(FILE2,">C:\\cause_so.txt")or die "can not open this file $!";

opendir(DH,"$dir") || die "cannot open $dir: $!";        #开启文件目录操作


foreach $filename (grep(/\.txt$/i,readdir DH)) {        #依次读入文件目录中每个文件的内容


    open(FILE1,"$dir\\$filename") or die "can not open this file $!";

    printf FILE2 "\n\n$filename:\n\n";

    $line=0;



    for($i=0;$i<20;$i++) {

     $part_of_before=$part_of_before.".";    #给每一句话前都加上20个字符".",避免匹配时错过某些符合要求的句子


    }



    while(<FILE1>) {            #依次将每一段文本读入


        $line++;

         foreach $sentence (split/|||/) {    #以这几个符号把每个段落分开,存放到数组中。“因为”和“所以”的搭配得有意义                    


                $sentence=$part_of_before.$sentence;    #同第21行代码的解释


                while ($sentence=~/(.{10})(因为)(.*)(所以)(.*)/g) {         #匹配字符串


                    printf FILE2 "%4d=\t%s\t%s\t","$line", $1, $2;        #下面的都是输出的控制,以达到对齐输出的效果


                    @part_of_middle=split('',$3);

                    if ($#part_of_middle > 29) {                #这里的功能是,让$3所匹配的内容限定字符串长度打印输出,


                        printf FILE2 "%-24.24s","$3";            #如果其长度大于限定的长度,则用省略号代替多出来的字符


                        printf FILE2 "%6.6s",".........";

                    }    else {

                            printf FILE2 "%-30s","$3";

                    }

                    printf FILE2 "\t$4\t$5 \n";

                }

        }

    }

    close(FILE1);

}

close(FILE2);

closedir(DH);

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