This is the full code:
use strict;
use Text::Wrap;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Word';
use Win32::OLE::Enum;
die "Usage: perl doc_print.pl test.doc" unless @ARGV == 1;
my $File = $ARGV[0];
$File = Win32::GetCwd() . "/$File" if $File !~ /^(\w:)?[\/\\]/;
die "File $ARGV[0] does not exist" unless -f $File;
my $Word = Win32::OLE->new('Word.Application', 'Quit')
or die "Couldn't run Word";
my $Doc = $Word->Documents->Open($File);
my (@words, $nwords, @chars, $nchars, $len, $object, $paragraph, $para
+graph_count, $enum, $allText, $para_temp);
my $lc=0;
my $pc=0;
my (@char, $char);
$enum = Win32::OLE::Enum->new($Doc->Paragraphs);
allText = '';
$para_temp = 0;
while(($object = $enum->Next)) {
$para_temp++;
$paragraph = $object->Range->{Text};
$allText .= $paragraph;
chop $paragraph;
unless ($paragraph eq '') {
$paragraph_count++;
}
chomp $paragraph;
@words = split /\s+/, $paragraph;
$nwords += @words;
@chars = split //, $paragraph;
$nchars += @chars;
}
$allText =~ tr/\t //d;
$len = length($allText) - $para_temp;
printf "Character (no spaces) %d\n", $nchars;
printf "Character (wout spaces) %d\n", $len;
printf "Character (words) %d\n", $nwords;
printf "Character (paragraphs) %d\n",$paragraph_count;
printf "Line Count %d\n", $lc;
printf "Page Count %d\n", $pc;
$Doc->Close;
Just let me know how can i count the $lc(line count) and $pc (page count)?
Thanks Nicholas
Edited by Chady -- added code tags.