ファイルの先頭のコメントを除去するスクリプト

30分プログラム、その659。ファイルの先頭にテキストを追加するスクリプト - みずぴー日記の逆で、ファイルの先頭のコメントを除去するスクリプトを書いてみました。

前回までのあらすじ

昔々、とあるソフトウェアをリリースするにあたり、そのソースコード全部の先頭にCopyrightを挿入する必要が発生しました。
ソースコードはとてもたくさんあるので、手作業でやっていては日が暮れてしまいます。

そこで、ファイルの先頭にテキストを追加するスクリプト - みずぴー日記というスクリプトを書いて、無事にその作業をおえました。

めでたし、めでたし。

そして月日が流れ...

先日、めだたく仕様変更が発生し、Copyrightを書き換えなければいけなくなりました。
書き換える必要があるのはCopyrightの一部だけなので、そこを置き換えるスクリプトを書くのも悪くないです。でも、それだと誤爆が発生しそうだったので、いったんCopyrightを除去したあと、再度Copyrightを挿入することにしました。
対応しているのは、/*で始まり*/で終わるC風のコメントだけです。C風なので当然、ネストもできません。

使い方

$ perl strip-comment.pl **/*.{h,c}

ソースコード

#! /usr/bin/perl
# -*- mode:perl; coding:utf-8 -*-
#
# strip_comment.pl -
#
# Copyright(C) 2009 by mzp
# Author: MIZUNO Hiroki / mzpppp at gmail dot com
# http://howdyworld.org
#
# Timestamp: 2009/09/14 10:47:49
#
# This program is free software; you can redistribute it and/or
# modify it under MIT Lincence.
#
use strict;
use warnings;
use Data::Dumper;

use strict;
use warnings;
use Data::Dumper;

sub strip_header($) {
    my ($path) = @_;
    open(my $in,'<',$path);
    my $src = join '',<$in>;
    $src =~ s!\A/\*.*?\*/!!sm;
    close $in;

    open(my $out,'>',$path);
    print $out $src;
    close $out;
}

foreach my $path (@ARGV){
    print $path,"\n";
    strip_header $path;
}