use Win32::OLE qw(in); $Win32::OLE::Warn = 3; my $pkorr = 'E:/temp/'; my $file_in = $pkorr.'test2.doc'; $file_out = $pkorr.'reqs.txt'; my $rw = open(SCHREIBEN,"> ".$file_out); my $Word = Win32::OLE->new('Word.Application', 'Quit') or die "Word problem: ",Win32::OLE->LastError(); my $Doc = $Word->Documents->Open($file_in) or die "Word problem: ",Win32::OLE->LastError(); print "There are ".$Doc->Paragraphs()->Count()." paragraphs.\n"; foreach my $Paragraph ( in( $Doc->Paragraphs() ) ) { $ParaCount++; print "(Paragraph $ParaCount) " . $Paragraph->Range()->Characters()->Count() . " characters\n"; $style = $Paragraph->Style()->NameLocal(); print "+$style\n"; if ($style =~ /Überschrift/) { $ueberschrift = $Paragraph->Range()->Text(); } $in = $Paragraph->Range()->Text(); print $in."\n"; if ($in =~ /(RAS-ID [0-9]{0,5}) (.*) \[(.*)\](.*)\[(.*)\]/) { $Paragraph->Range()->Select(); my $Selection = $Word->Selection(); $page = $Selection->Information(wdActiveEndPageNumber); # $page = $Paragraph->Range()->Information(wdActiveEndPageNumber); print SCHREIBEN "****** Requirement found\n"; print SCHREIBEN "ID: $1\n"; print SCHREIBEN "Text: $2\n"; print SCHREIBEN "Referenzen: $3\n"; print SCHREIBEN "Internal ID: $5\n"; print SCHREIBEN "Kapitel: $ueberschrift\n\n"; print SCHREIBEN "Seite: ".$page; print "****** Requirement found\n"; print "ID: $1\n"; print "Text: $2\n"; print "Referenzen: $3\n"; print "Internal ID: $5\n"; print "Kapitel: $ueberschrift\n\n"; print "Seite: ".$page; } } close(SCHREIBEN);