今日のPerlプログラム(rename.pl)

指定ディレクトリ以下のファイルの拡張子を変換する。
"rename"ってコマンドで同じことができるらしい。
使い方がわからなかったのでPerlで書いてみた。

#!/usr/local/bin/perl

$root = $ARGV[0];
$before = "html";
$after =  "shtml";

&rename_file($root);

exit;

sub rename_file {
  my ($c_dir) = $_[0];
  my ($work_file);
  chdir($c_dir);
  opendir(DIR,".");
  my (@file_info) = readdir(DIR);
  closedir(DIR);

  print "CurrentDirInfo: @file_info\n";
  
  foreach $work_file (@file_info) {
      if($work_file eq '.' || $work_file eq '..') {
          next;
      }

      if(-d $work_file) {
          print "In  [$work_file] Directory\n";
          &rename_file($work_file);
          print "Out [$work_file] Directory\n";
      }
      
      if(-f $work_file && $work_file =~ /(.*)\.$before/) {
          rename("$work_file","$1.$after");
          print "before = $work_file >> after = $1.$after\n";
      }
  }
	  
  chdir('..');
}

自分で使ってみたところうまく動いたので公開してみた。
使ってみようって方は自己責任でお願いします。いないか・・・