Chinaunix首页 | 论坛 | 博客
  • 博客访问: 615829
  • 博文数量: 90
  • 博客积分: 5111
  • 博客等级: 大校
  • 技术积分: 928
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-29 16:56
文章存档

2011年(15)

2010年(34)

2009年(19)

2008年(22)

我的朋友

分类:

2009-02-20 14:58:05

**脚本说明:
遍历$src_dir的路径,然后对每个文件的每一行进行判断,看是否包含全角字符。
全角字符判断采用如下判断:
/^[\x8\x9\xa\xd\x20-\x80]*$/
判断依据:
ASCII码数值 8、9、10 和 13 可以分别转换为退格符、制表符、换行符和回车符。
英文的可显示字符的ASCII码的范围是32而汉字是双字节编码,汉字编码的第一字节的ASCII是大于127的,
判断一个字符的ASCII 码如果大于127那它应该是汉字的第一字节。

#!/usr/bin/perl

#查看一个目录中的所有文件
#不判断所有注释
#输出含有双字节(非英文)的文件名、行
#
#用于自动化查看国际化是否完整

my $src_dir = "/opt/" ;

my $count_total = 0 ;
my $count_valid = 0 ;

my @filelist ;
 

&listdir("$src_dir") ;



foreach $filename ( @filelist ) {
   
#    print "\n\n"."==================================================================="."\n" ;
#    print "File name : $filename\n" ;
    if ( $filename !~ /\.cgi$/ &&
        $filename !~ /\.pl$/ ) {
            next ;
    }
    if ( $filename =~ /\/lang_Jpn.pl$/ ) {
        next ;
    }
    if ( $filename =~ /\/cmn_lang_Jpn.pl$/ ) {
        next ;
    }   

    open (IN , "$filename") or die "Can't open the file: $_";
    my $line_no = 0 ;
    while () {
        my $tmp = $_ ;
        $line_no ++ ;
        if ($tmp =~ /^\s*$/) {        #blank line
            next ;
        }
        elsif ($tmp =~ /^\s*#/ ) {    # line of comments
            next ;
        }
        elsif ($tmp =~ /^([^#]*)\s+#/ ) {    # comments at the end
            my $tmp_str = $1 ;
            if ($tmp_str !~ /^[\x8\x9\xa\xd\x20-\x80]*$/ ) {
                &markline($filename , $line_no , $tmp ) ;
            }
       
        }
        elsif ($tmp =~ /^([^#]*);\s*#/) {
            my $tmp_str = $1 ;
            if ($tmp_str !~ /^[\x8\x9\xa\xd\x20-\x80]*$/ ) {
                &markline($filename , $line_no , $tmp ) ;
            }
        }
        else {       
        #maybe include some comment at the end ,just like "if(){#comments" ,
        #judge it by your eyes.
       
            if ( $tmp !~ /^[\x8\x9\xa\xd\x20-\x80]*$/) {
                &markline($filename , $line_no , $tmp ) ;
            }
        }
    }


    close (IN) ;
   
}

#functions

sub listdir { 
 my @arr, $j = 0; 
 for($i=0;$i<=$#_;$i++) { 
  if(-d $_[$i]) { 
   if(opendir($handle, $_[$i])) { 
    while($dir = readdir($handle)) { 
     if(!($dir =~ m/^\.$/) and !($dir =~ m/^(\.\.)$/)) { 
      push ( @filelist ,  "$_[$i]".'/'."$dir" ) ; 
      if(-d $_[$i]."\/$dir") { 
       $arr[$j++] = $_[$i]."\/$dir"; 
#       print "\t[DIR]" 
      } 
#      print "\n"; 
     } 
    } 
    closedir($handle); 
   } 
  } 
 } 
 if($j>0) { 
  &listdir (@arr); 
 } 
}

sub markline {
    local ( $filename , $line , $str ) = @_ ;
   
    print "filename:$filename\tline:$line\tcontent:$str"."\n" ;


}


阅读(2236) | 评论(0) | 转发(0) |
0

上一篇:工具

下一篇:文档下载网站

给主人留下些什么吧!~~