use strict; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Word'; use Win32::OLE::Enum; # Here you have to call the file with "Name.pl C:\dir\file.doc" # This will allow you to point the script anywere rather than # having to put the script into the dir with the file. die "Usage: perl doc_print.pl test.doc" unless @ARGV == 1; my $Word = Win32::OLE->new( 'Word.Application', 'Quit' ) || die "Couldn't run Word"; my $Doc = $Word->Documents->Open(@ARGV[0]) || die "File does not exist or can not be opened"; # Selection can be the entire doc or refined to a sub-set of text # It is easier to use the functions that exist in word to do the work. my $num_pages = $Doc->ComputeStatistics(wdStatisticPages); my $num_paragraphs = $Doc->ComputeStatistics(wdStatisticParagraphs); my $num_lines = $Doc->ComputeStatistics(wdStatisticLines); my $num_words = $Doc->ComputeStatistics(wdStatisticWords); my $num_chars = $Doc->ComputeStatistics(wdStatisticCharacters); my $num_charWs = $Doc->ComputeStatistics(wdStatisticCharactersWithSpaces); printf "Page Count %d\n", $num_pages; printf "Character (paragraphs) %d\n", $num_paragraphs; printf "Line Count %d\n", $num_lines; printf "Character (words) %d\n", $num_words; printf "Character (with spaces) %d\n", $num_charWs; printf "Character (wout spaces) %d\n", $num_chars; $Doc->Close;