perl 消除重复
来源:互联网 发布:婴儿秋衣套装纯棉淘宝 编辑:程序博客网 时间:2024/05/27 16:43
print "pls input file path:/n";
$fpath=<STDIN>;
chop $fpath;
print "pls input pakage name:/n";
$pgname=<STDIN>;
chop $pgname;
print "pls input group name:/n";
$Gname=<STDIN>;
chop $Gname;
@listNo=&bugNo($fpath, $pgname, $Gname);
print "@listNo/n";
####################################################33
sub bugNo
{
$filepath=$_[0];
$packagename=$_[1];
$groupname=$_[2];
open(MYFILE,"$filepath");
@test1= <MYFILE>;
$num=@test1;
%result=();
$A="";
$B="";
$flag="0";
$packagefalg="0";
for($n=0; $n<=$num; $n++)
{
$item=$test1[$n];
chop $item;
##检查是否是*****DESKT GRoup*****
if ($item =~ //*+ ([a-zA-Z0-9 ]+)/*/)
{
if($1 eq "$groupname")
{
$flag="1";
}
else
{
$flag="0";
}
}
if($flag eq "1")
{
##检查是否是<package name>
if ($item =~ /^< ([a-zA-Z.]+[a-zA-Z0-9-]+[a-zA-Z]+/d?)/)
{
if($1 eq "$packagename")
{
$packagefalg="1";
}
else
{
$packagefalg="0";
}
}
if($packagefalg eq "1")
{
##获取BUG NO,这里我们给子函数传了两个参数,
##一个是当前行的字符串
##一个是已经找到的bug 的数组(主要是让子函数直接将找到的)
@result=&getbuginner($item,%result);
}
}
##返回查找到的数据
keys(%result);
}
##在以下getbuginner函数中,我们将试图处理以下几种情况
##
###1.we wewe jk GNOME bug #123123 RH bug #123123 sdfsdfw
##
###2.we wewe jk GNOME bug #123123 sdfsdfsdf
##
###3.we wewe jk RH bug #123123 sdfsdfsdf
##
###4.we wewe jk #123123 RH bug #123123 sdfsdfw
##
###5.we wewe jk #123123 Rsdsds sdfsd #123123 sdfsdfw
##
##以上五种情况,其实,对于3,4,5来说,我们并不需要特殊处理
##只要把#后面的bug号拿到就行了,也就是说只要该行没有出现GNOME bug
##那末,我们就直接提取#就行了。
##
##也就是说,我们可以先判断该行中是否有GNOME bug,
##如果有,那么就按照1,2来处理
##如果没有,那么直接提取#后面的bug号就行了。
##
##
sub getbuginner
{
$item=$_[0];
%result=$_[1];
$pos=index($item,"GNOME bug #");
##我们首先检查该行含有GNOME bug,
##如果有,那末我们按照以上的1,2两种情况来处理
##对于1,2两种情况来讲,我认为只需要获得GNOME bug的位置,
##然后将该行分成3截
##例如,对于情况1
##we wewe jk GNOME bug #123123 RH bug #123123 sdfsdfw
##
##情况1->分成3截:
###1截:we wewe jk
###2截:GNOME bug #123123
###2截:RH bug #123123 sdfsdfw
##
##对于情况2
##we wewe jk GNOME bug #123123 sdfsdfsdf
##
##情况2->分成3截:
###1截:we wewe jk
###2截:GNOME bug #123123
###2截:sdfsdfsdf
##
##通过以上两种情况来看,我们只需要将包含GNOME bug的行,截成3截即可,
##含有GNOME bug的那截不需要,另外两截提取bug号
###
$bugstr1="";
$bugstr2="";
$bugstr3="";
if($pos ==0)
{
##此处处理以GNOME bug开头的行,此时将该行分成两截即可
$str1=substr($item,0,17);
$str2=substr($item,17);
$bugstr1=$str2;
}
else
{
if($pos>0)
{
##此处处理GNOME bug在行的中间的情况,此时将该行分成三截即可
$str1=substr($item,0,$pos);
$str2=substr($item,$pos,17);
$str3=substr($item,$pos+17);
$bugstr1=$str1;
$bugstr2=$str3;
}
else
{
$bugstr1=$item;
}
}
##在以上处理中,我们直接将需要提取bug号的字符串赋给了$bugstr1,$bugstr2
##那么,我将这几个字符串直接合并,让程序统一提取出bug 号来
$item="$bugstr1 $bugstr2";
while($item =~ /(#[a-zA-Z0-9]+)/g)
{
$itemflag="0";
%result{$B}=1;
}
%result;
}
- perl 消除重复
- 消除重复
- 消除重复的设计
- 消除重复行
- 消除重复行distinct
- js消除重复
- 消除重复代码
- 消除重复数字
- 消除重复单词
- 消除重复元素
- 消除重复元素
- 消除序列中的重复
- 消除重复数字
- 如何消除重复代码
- 消除重复代码的方法
- 使用DISTINCT消除重复项
- 消除列表的重复数
- 消除重复代码的意义
- ACCESS在Web.config里设置连接字符串
- 基于AJAX技术的WebGis系统实践 (4. 三维城市地图系统功能概述)
- 杭州著名公司
- SQLServer_第1章 SQLServer2000简介
- C#中常用的文件操作方法
- perl 消除重复
- 《实况足球10》全套数值能力解析
- SQLServer_第2章 数据库和表的创建
- 基于Web的图像编辑实现方案(上)
- SQLServer_第3章 表数据操作
- 资源脚本文件的语法格式
- BPEL与WF的映射关系
- 让界面更加绚丽 Java SE 6.0四种新功能
- javascript控制realplayer对象使用