Here's a simple file-type reporter based on File::Type, and of course our wierd friend, File::Find:
use strict;
use warnings;
use File::Type;
use File::Find;
find(
sub {
-f && print "$_\t => ",
File::Type->new()->checktype_filename($_),
$/
for $File::Find::name;
},
scalar(@ARGV) ? @ARGV : './'
);
It's a little concise; I was trying to have some fun with it. One hint: The 'for' clause is used to alias $_ to $File::Find::name so that I wouldn't have to keep typing it all over the place. Also, since I only use $obj->checktype_filename() once, I chose to not store the object's ref in a variable, but rather, just dereference the return value of File::Type->new(). ...a couple of golf tricks that didn't seem to hurt readability too much.