LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 912|回复: 1

救命啊!!大家帮帮忙啊

[复制链接]
发表于 2006-8-10 18:44:47 | 显示全部楼层 |阅读模式
高手们,最近老板给了个任务,让我写个perl
要求可以列出一个目录下的所有*.java文件中的行数,要以表格的方式输出
像这样
--------------------------------------------------------------------------------------
      文件名        |  总行数      |     注释行数   |     空格行数
--------------------------------------------------------------------------------------

怎么写都写不出来,我也是刚学习perl,太难为人了,请高手赐教,

谢谢了,感激不尽!!!

周1就要交了,大家帮帮忙啊
发表于 2006-8-14 12:58:09 | 显示全部楼层
连夜替你炮制,还没有测试,个别地方可能有小问题,请自己测试修改。
$dirname = 'd:\java';
$counter=0;
$passcounter=0;

@Content="";
@Filename="";
@Linestotal=0;
@Blanklines=0;
@Commentlines=0;

opendir( DIR, $dirname) or die("Can't open");

foreach $filename (readdir(DIR))
{
         
        if ($passcounter > 1)
        {
                  $Linestotal[$counter]=0;
                $Blanklines[$counter]=0;
                $Commentlines[$counter]=0;
                #print $filename . "\n";                                                                                                                     
                               
                $Filename[$counter]=$filename;
                open ( FILE, $dirname . "\\" . $filename) || die ("Unable to open the file: $filename \n");
               
                @Content = <FILE>;
                $flag = 0;
               
                foreach $i (@Content)
                {

                        if ($i =~ m/\/\*/g)
                        {       
                                $flag=1;
                        }
                        if ($flag == 1)
                        {
                                $Commentlines[$counter]++;
                        }

                        if ($i =~ m/\*\//g)
                        {
                                $flag = 0;
                        }
       
                        if ($i =~ m/\/\//g)
                        {
                                $Commentlines[$counter]++;
                        }

                        if ($i =~ m/^$/)
                        {
                                $Blanklines[$counter]++;
                        }

                        $Linestotal[$counter]++;
                }

                close(FILE);
                $counter++;
        }
        $passcounter++;
}
$passcounter=0;
closedir(DIR);


#############result output#############

print "-------------------------------------------------------------------\n";
print " [File name]   [Lines total]  [Comments lines]  [Blank lines]      \n";
print "-------------------------------------------------------------------\n";
$counter=0;
foreach (@Filename)
{
                print " $Filename[$counter]\t $Linestotal[$counter]\t \t $Commentlines[$counter]\t \t\t$Blanklines[$counter] \n";
                $counter++;
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表