设为首页 收藏本站
查看: 1132|回复: 0

[经验分享] 用perl实现的文件头注释工具

[复制链接]

尚未签到

发表于 2015-12-26 07:24:38 | 显示全部楼层 |阅读模式
  最近想开源一套软件,对于一些代码都要在文件头上加上固定格式的版本信息。自己用perl写了一个小工具,拿出来分享。
  下载地址:http://files.cnblogs.com/xjon/comments.zip
  



  1 #!/usr/bin/perl -W
  2 #
  3 # Copyright (c) 2014 Nijie. All rights reserved.
  4 # License: GPL-2
  5 #
  6 # File: comments.pl  用于增加c/c++文件注释
  7 # Create by Nijie 2014.07.23
  8 #
  9
10 use strict;
11 use warnings;
12 use File::Copy;
13
14 my $author='Nijie';            # 作者 - 需修改
15 my $createyear='2014';        # 版权时间 - 需修改
16 my $date="2014.07.23";        # 文件创建时间 - 需修改
17
18 # 以下版权信息 - 需修改
19 my $comments="// Created by $author on $date.
20 // Copyright (c) $createyear $author. All rights reserved.
21 // Use of this source code is governed by a GPL-2 license that can be found in the LICENSE file.
22 //
23 ";
24
25 my @filterDir = ("./lib3rd/");    # 需要过滤的文件,比如不属于你开发的目录等 - 需修改
26
27 my %filterList = ();
28 foreach (@filterDir)
29 {
30     $filterList{$_} = 1;
31 }
32
33 my ($dircnt, $filecnt) = (0, 0);
34
35 sub lsr_s($) {
36     my $cwd = shift;
37     my @dirs = ($cwd.'/');
38
39     my ($dir, $file);
40     while ($dir = pop(@dirs)) {
41         if (exists($filterList{$dir}))
42         {
43             print "skip dir : $dir\n";
44             next;
45         }
46         local *DH;
47         print "open $dir\n";
48         if (!opendir(DH, $dir)) {
49             warn "Cannot opendir $dir: $! $^E";
50             next;
51         }
52         foreach (readdir(DH)) {
53             if ($_ eq '.' || $_ eq '..') {
54                 next;
55             }
56             $file = $dir.$_;         
57             if (!-l $file && -d _) {
58                 $file .= '/';
59                 push(@dirs, $file);
60             }
61             process($file, $dir);
62         }
63         closedir(DH);
64     }
65 }
66
67 sub process($) {
68     my $file = shift;
69     print "process $file";
70     if (substr($file, length($file)-1, 1) eq '/') {
71         $dircnt++;
72     }
73     else {
74         $filecnt++;
75         if ($file =~ /\.(h$|c$|cpp$|hpp$|cc$)/)
76         {
77             addComments($file);
78         }
79     }
80     print "\n";
81 }
82
83 sub addComments($)
84 {
85     my $line = 0;
86     my $file = shift;
87     open FILE, $file or die 'die ($!)';
88     open OUTFILE, ">$file~~~" or die "Open the file $file~~~ failed!\n";
89
90     print OUTFILE $comments;
91     while (<FILE>)
92     {
93         print OUTFILE $_;
94     }
95     close FILE;
96     close OUTFILE;
97     move("$file~~~", $file);
98 }
99
100 lsr_s('.');
101 print "$filecnt files, $dircnt directory.\n";
102 `pause`;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-156368-1-1.html 上篇帖子: Windows下编译perl程序 下篇帖子: perl bless
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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