http://www.perlmonks.org?node_id=958062


in reply to How to recognize Word and XLS files

A better, and more complete way than the OLE version above, is using Image::ExifTool's ImageInfo. This also identifies the new Office file formats with or without extensions:

#!/usr/bin/perl use strict; use warnings; use Image::ExifTool 'ImageInfo'; my @files = ( 'test.xls', 'test.xlsx', 'test.doc', 'test.docx', 'test.ppt', 'test.pptx', ); for my $filename ( @files ) { my $info = ImageInfo( $filename ); printf( "%-20s = %s\n", $filename, $info->{FileType} ); } __END__ Output: $ perl exif_check.pl test.xls = XLS test.xlsx = XLSX test.doc = DOC test.docx = DOCX test.ppt = PPT test.pptx = PPTX

It might seem a little odd using Image::ExifTool for this but it has a large number of recognised formats.

--
John.