指定した拡張子のファイルを移動させるプログラム

図書館からPerlクックブックを借り、レシピを参考にして前々から欲しかった機能を実装してみました。


どんな機能かというと、
「あるディレクトリが持つサブディレクトリのファイルに対して、
指定した拡張子を持つものを移動先ディレクトリに移す」
という機能です。


以下がコードです。

#! /usr/local/bin/perl

use strict;
use warnings;

use File::Copy;
use File::Find;

#移動先ディレクトリの設定

my $to_dir = '';    #シングルクォート内に移動先ディレクトリのパスを書く


#移動元フォルダを包括するフォルダのパスを設定

my $from_dir = '';  #シングルクォート内に処理したいサブディレクトリを含むディレクトリのパスを書く


@ARGV = $from_dir;


#ディレクトリ内に処理したいファイルがあるかチェックし、あればファイルを移動先ディレクトリに移動させるサブルーチン
sub check_and_move {
    if ($File::Find::name =~ /(C:.+)/) {  #プラス記号の後に処理したいファイルの拡張子を書く
	print "$File::Find::name\n";
	move( "$File::Find::name", "$to_dir" )
	    or die "move failed: $!";
    }
}

#メイン処理。File::Findモジュールの持つfind関数を用いて、ディレクトリを再帰的に処理する
find( \&check_and_move , @ARGV );

使いづらかったり、正規表現にバグが潜んでいそうだったりするのですが、とりあえず公開してみます。
少しずつリファクタリングを進めないと。


欲しい機能を実装したという意味で、これがはじめての自作プログラムになります。記念記念。


Web上の資源を利用してどんな機能が作れるのか?
プログラミングによって実装したシステムを用いて、今の生活をより良いものにできないのか?
プログラミングの楽しみ方が、少しだけ広がりんぐな予感がしてます。