use strict; use Win32::OLE qw(in); use Win32::OLE::Const 'Microsoft Office'; my $Word = Win32::OLE->new('Word.Application', 'Quit'); my $PowerPoint = Win32::OLE->new('PowerPoint.Application', 'Quit'); my $Watermark = $Word->Documents->Open('C:\Users\sumit\Desktop\test\Doc1.doc'); my $ppt = $PowerPoint->Presentations->Open('C:\Users\sumit\Desktop\test\Presentation1.ppt'); my $Powerprop = $ppt->CustomDocumentProperties(); foreach my $Property (in $Watermark->CustomDocumentProperties) { my $Name = $Property->Name; local $Win32::OLE::Warn = 0; my $Value = $Property->Value; # $Property->{Value}='test'; $Value = '***Error***' if Win32::OLE->LastError; $Value = '' unless defined $Value; $Powerprop->Invoke('Add',{ Name => $Name, LinkToContent => 0, Type => 4, Value => $Value } ); printf "%s %s = %s\n", $Name, '.' x (40-length($Name)), $Property->Value; } $ppt->Save(); $ppt->Close(); $PowerPoint->Quit(); $Watermark->close(); $Word->Quit();