ファイルの先頭にテキストを追加するスクリプト

30分プログラム、その543。ファイルの先頭にテキストを追加するスクリプト
ファイルの末尾にテキストを追加したいときは、

$ echo hogehoge >> some_file.txt

でいいけど、先頭に追加するのは大変だよね。作っておけば、全ソースコードの先頭にライセンス条項を追加するのも簡単だしね。
と、思っていたんだけど、

$ cat header.txt some_file.txt > other_file.txt

でいいんじゃね?というのに途中で気がついた。というか、どんどん単純化していったら、catの再発明になりかけたので、慌てて方針を変えた。あぶない、あぶない。

使い方

$ cat test
foo
bar
baz

# 先頭にコメントを追加する
$ echo "# this is sample file" | perl append-header.pl test

$ cat test
# this is sample file
foo
bar
baz

ソースコード

#! /usr/bin/perl
# -*- mode:perl; coding:utf-8 -*-
#
# append-header.pl -
#
# Copyright(C) 2009 by mzp
# Author: MIZUNO Hiroki / mzpppp at gmail dot com
# http://howdyworld.org
#
# Timestamp: 2009/03/10 21:20:38
#
# This program is free software; you can redistribute it and/or
# modify it under MIT Lincence.
#

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

sub appendHeader($$) {
    my ($header,$path) = @_;
    open(my $fh,'+<',$path);
    my @orig = <$fh>;

    seek  $fh,0,0;
    print $fh $header;
    print $fh @orig;
    close $fh;
}

my $header = join("",<STDIN>);

foreach my $path (@ARGV){
    appendHeader $header,$path;
}