動画ファイル名により振り分け

こんなかんじで振り分けた

#京
#!/bin/perl

use strict;
use warnings;
use File::Path;
use Cwd 'getcwd';
use Fcntl;
use File::Find;
use File::Copy;

my $dir = getcwd;
my %matchs = (
# match => dst floder
 'たまこまーけっと' =>  '',
 'AKB0048 next stage' => 'AKB0048 next stage' ,
 'AKB0048' => 'AKB0048 next stage' ,
 'ガールズ&パンツァー' =>  '',
 'ガールズ&パンツァー' => 'ガールズ&パンツァー' ,
 'ささみさん@がんばらない' =>  '',
 'ジョジョの奇妙な冒険' =>  '',
 'ひだまりスケッチ×ハニカム' =>  '',
 'まおゆう魔王勇者' =>  '',
 'みなみけ' => 'みなみけ ただいま' ,
 '琴浦さん' =>  '',
 '戦勇。' =>  '',
 'BLACK LAGOON' =>  '',
 'AMNESIA' =>  '',
 'GJ部' =>  '',
 '問題児たちが異世界から来るそうですよ?' =>  '',
 'さくら荘のペットな彼女' =>  '',
 'あいまいみー' =>  '',
 'ヤマノススメ' =>  '',
 'ToLOVEる-とらぶる-ダークネス' =>  '',
 'キューティクル探偵因幡' =>  '',
 '閃乱カグラ' =>  '',
 'リトルバスターズ!' =>  '',
 '戦国コレクション' =>  '',
 '絶園のテンペスト' =>  '',
 '戦勇。' =>  '',
 'はいたい七葉' =>  '',
 'ラブライブ!' =>  '',
 'アイカツ!' =>  '',
 'BLACK LAGOON' =>  '',
 'ビビッドレッド・オぺレーション' =>  '',
 '俺の彼女と幼なじみが修羅場すぎる' =>  '',
 '僕は友達が少ないNEXT' =>  '',
 'D.C.III〜ダ・カーポIII〜' =>  '',
 'D.C.Ⅲ〜ダ・カーダⅢ〜' =>  'D.C.III〜ダ・カーポIII〜',
 'D.C.III〜ダ・カーポIII〜' =>  'D.C.III〜ダ・カーポIII〜',
 'D.C.Ⅲ〜ダ・カーポⅢ〜' =>  'D.C.III〜ダ・カーポIII〜',
 'D.C.Ⅲ〜ダ・カーダⅢ〜' =>  'D.C.III〜ダ・カーポIII〜',
 'D.C.III〜ダ・カーダIII〜' =>  'D.C.III〜ダ・カーポIII〜',
 'D.C.Ⅲ〜ダ・カーダⅢ〜' =>  'D.C.III〜ダ・カーポIII〜',
);

find( {  wanted => \&d, nochdir => 1 }, '.' );

sub d{
	return if($_ eq '.');
	return if($_ eq '..');
	my $file = $_;
	my $tmp = $_;
	return unless(-f);
	
	$tmp =~ s/_\d\....$//;
	$tmp =~ s/\....$//;
	$tmp =~ s/\#\d+//;
	$tmp =~ s/\(\d+\)//;
	$tmp =~ s/\d+//;
	print "$file\n";
	my %pat = ();
	my @pat = ();
	push @pat , split( / /, $tmp);
	push @pat , split( / /, $tmp );
	push @pat , split( /\x81\x75/, $tmp );
	push @pat , split( /_/, $tmp );
	push @pat , split( /\(/, $tmp );
	grep { s/ $//; } @pat;
	grep { s/ +$//; } @pat;
	push @pat , split( / /, $tmp);
	push @pat , split( / /, $tmp );
	push @pat , split( /\x81\x75/, $tmp );
	push @pat , split( /_/, $tmp );
	push @pat , split( /\(/, $tmp );
	$pat{$_} = 1 foreach(@pat);
	delete $pat{''};
	print "    - 「$_\n" foreach(sort keys %pat);
	foreach my $match(keys %matchs)
	{
		foreach(keys %pat)
		{
			if( $_ eq $match)
			{
				$matchs{$match} = $match if( $matchs{$match} eq '' ) ;
				my $dst = $dir . '\\' . $matchs{$match};
				print "        > $dst\n";
				mkdir $dst;
				move  $file, $dst . '\\' . $file || print $!;
			}
		}
	}
}

print "\n";