#!/usr/bin/perl use strict; use warnings; use MP3::Tag; use File::Copy::Recursive qw(fmove); foreach my $file (<*.mp3>) { my $mp3 = MP3::Tag->new($file); my ($artist, $album) = $mp3->autoinfo()[2,3]; $mp3->close(); s/[\\\/:*?"<>|]//g for $artist, $album; fmove($file, "$artist/$album/$file") or die $!; }