perl1

930阅读 0评论2013-03-16 cherish568
分类:LINUX

       

           

           

            100991027 100991028 100991029 100991030 100991031 100991032 100991033 100991034 100991035 100991036 100991037 100991038 100991039 1009

91040 100991041 100991042 100991043 100991044 100991045 100991046 100991047 100991048 100991049 100991050 100991051 100991052 100991053 100991054 100991234 1

00991235 100991427 100991428 100991429 100991430 100991431 100991432 100991433 100991434 100991523

           

                85213 85218 63271 21945 21942 63273 65628 21945 21942 65631 0 0 0 0 21945 21942 19104 19104 18869 18869 1432 1433 28051 28054 21

5 215 0 0 18026457 10523131 1 0 0 0 0 0 0 0 0

           

           

                82989 82986 61495 21492 21494 61494 63738 21492 21494 63737 0 0 0 0 21492 21494 18674 18672 18527 18527 1394 1394 26877 26879 22

6 226 0 0 17468441 10239837 0 0 0 0 0 0 0 0 0

           

           

                71633 71632 52405 19228 19228 52404 54293 19228 19228 54292 0 0 0 0 19228 19228 15861 15861 15545 15544 1095 1095 23259 23258 16

1 161 0 0 15004024 8841928 0 0 0 0 0 0 0 0 0

           

                85294 85296 63953 21340 21341 63956 65277 21340 21341 65280 0 0 0 0 21340 21341 20873 20874 20804 20802 752 752 23813 23819 142

142 0 0 17955088 10441777 0 0 0 0 0 0 0 0 0

           

       


#################################################3

#!/bin/perl

my $InputFile=@ARGV[0]; #source File Name

my $DataDir=@ARGV[1];   #the Directory for data File save

my $necode=@ARGV[2];

@s;

@m;

 

my $tmp="";

my $j=0;

 

die("can not open file \"$inPutFile\"")unless(open(HWSOURCEFILE,$InputFile));

while ($line=) {

   $line=DeleteEndNewLineCharacter($line);

   if ($line =~ /^

     $line = &GetProperties($line,"measInfoId");

         $tmp=$line;

        

         if ($DataDir !~ /\/$/) {

     $DataDir=$DataDir."/";

     }

         #print $DataDir;

         #print $line;        

   }

    elsif ($line =~ /^

     $line = &GetProperties($line,"endTime");

     $line = substr($line,0,index($line,"+"));

     $line =~ s/T/ /g;

     $line = &strTrim($line);

         $endtime=$line;

   }

elsif ($line =~ /

        $line = &GetProperties($line,"measObjLdn");

        #$line = substr($line,0,index($line,"+"));

        #$line =~ s/\//\t/g;

        $line = &strTrim($line);

        $measObjLdn=$line;

} 

   elsif($line =~ /^

        {

     my $result2 = (split(">",$line))[1];

         $result2 = (split("<",$result2))[0];

     $result2 = &strTrim($result2);

     $result2 =~ s/ /   /g;

         $result2 =~ s/NIL//g;

        

         @s=split/\s+/,$result2;

         $filename2=$DataDir.$tmp."-measTypes.txt";

         print "***".$filename2."***";

        

         open(fhn2,">>$filename2")|| die $!;

     unshift(@s,"measObjLdn");

     unshift(@s,"endtime");

         unshift(@s,"number");

 

         while(@s)

                {

                

                 $value2=shift(@s);

                

         print fhn2 ("$value2\t");

        

                 }

                 close(fhn2);

   }

   elsif ($line =~ /^

     my $result = (split(">",$line))[1];

         $result = (split("<",$result))[0];

     $result = &strTrim($result);

     $result =~ s/ /    /g;

         $result =~ s/NIL//g;

         #print "[$result]\n";

         @m=split/\x20/,$result;

 

         $filename=$DataDir.$tmp."-measResults.txt";

         print "***".$filename."***";

         open(fhn1,">>$filename")|| die $!;

         while(@m)

                {

                 $j++;

                 $value=shift(@m);          

         print fhn1 ("$j\t$endtime\t$necode\t$measObjLdn\t$value"); 

                

                 unless(@m)

                        {

                 print fhn1 ("\n");

                 last;

                 }

                 }

                

                 close(fnn1);    

   }

 elsif ($line =~ /^<\/measInfo/){

        $j=0;

   }

 

}

 

   #Get Tags Properties

sub GetProperties {

  my($content,$subsybol) = @_;

  $content = (split($subsybol,$content))[1];

  $content = (split("\"",$content))[1];

  $content = (split("\"",$content))[0];

  return $content;

}

 

#delete ^M charterect

sub DeleteEndNewLineCharacter{

  my ($content)=@_;

  $content=substr($content,0,length($content)-1);

  $content=strTrim($content);

  return $content;

}

 

#delete space

sub strTrim {

  my ($content)=@_;

  $content=~s/^[ ]+|[ ]+$//g;

  return $content;

}

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

@array = split(/ + /, $line);
$pattern = "[\\t ]+";
 @words = split(/$pattern/, $line);
注:split函数每次遇到分割模式,总是开始一个新单词,因此若$line以空格打头,则@array的第一个元素即为空元素。但其可以区分是否真有单词,如若$line中只有空格,则@array则为空数组。且上例中TAB字符被当作一个单词。注意修正。  

下面是在for循环中使用逗号操作符的例子:
  for ($line = , $count = 1; $count <= 3;   $line = , $count++) {
    print ($line);
  }
它等价于下列语句:
  $line = ;
  $count = 1;
  while ($count <= 3) { 
    print ($line);
    $line = ;
    $count++;
  }
###########
一、条件判断 
  if ( ) {
    
  }
  elsif ( ) {
    
  }
  ...
  else{
    
  }
二、循环: 
1、while循环 
  while ( ) {
    
  }
2、until循环 
  until ( ) {
    
  }
针对列表(数组)每个元素的循环:foreach,语法为:
  foreach localvar (listexpr) {
    statement_block;
  }
例:
  foreach $word (@words) {
    if ($word eq "the") {
      print ("found the word 'the'\n"); 
    }
  }
注:
(1)此处的循环变量localvar是个局部变量,如果在此之前它已有值,则循环后仍恢复该值。
(2)在循环中改变局部变量,相应的数组变量也会改变,如:
  @list = (1, 2, 3, 4, 5);
  foreach $temp (@list) {
    if ($temp == 2) {
      $temp = 20;
    }
  }
此时@list已变成了(1, 20, 3, 4, 5)。
6、循环控制 
  退出循环为last,与C中的break作用相同;执行下一个循环为next,与C中的continue作用相同;PERL特有的一个命令是redo,其含义是重复此次循环,即循环变量不变,回到循环起始点,但要注意,redo命令在do循环中不起作用。
7、传统的goto label;语句
三、单行条件 
  语法为statement keyword condexpr。其中keyword可为if、unless、while或until,如:
    print ("This is zero.\n") if ($var == 0);
    print ("This is zero.\n") unless ($var != 0);
    print ("Not zero yet.\n") while ($var-- > 0);
    print ("Not zero yet.\n") until ($var-- == 0);
  虽然条件判断写在后面,但却是先执行的。

上一篇:RAID 技术经典解析
下一篇:存储过程1