Hallo,
my $RefOf = $Object;
my $ValOf = valof $Object;
$Object->{Value} = $NewValue;
Hmm, ich weiß gar nicht wo Du das jetzt gerade her hast, aber das war sicher nicht, daß was ich gemeint habe.
Bei Start von der Kommandozeile gibts auch keine Fehlermeldung (allerdings auch keinen Datei-Inhalt).
Vermutlich weil Du kein, oder zu wenig Fehlerbandlungsanweisungen eingebaut hast. Gerade bei Themen, wo man sich grade neu heranwagt, solte man zu erst einmal Testcode schreiben, der Dir jeden Schritt genauestens ausgibt, und im Fehlerfalle eben auch die Fehler.
Tja: Wenn man wenigstens mal wüsste, was das nun für ein Hash ist, der da referenziert wird, könnte man sich ja vielleicht mal die keys ausgeben lassen, aber so...
Ich kann Dir aus leidvoller Erfahrung sagen, daß ein OLE-Objekt besser nicht mit Data::Dumper ausgegeben werden sollte, außer Du willst, daß Dein Rechner sich die nächste Zeit intensiv selbst beschätigt und Deine Auslagerungsdatei bis auf ANschlag verghrößert (Außer Du würgst das Script ab *g*)
BTW: In der HTML-Doku von Activestate ist auch der Win32::OLE::Browser ungebracht, der leider nur mit dem IE und installiertem PerlScript funktioniert. Damit kann man auch trefflich die OLE-Objekte nach Methoden und Eigenschaften durchsuchen. Eventuell kannst Du den Code dieses Browsers auch analysieren, um festzustellen, wie Du Dich durch ein OLE-Objekt durchhangeln kannst, um zu den gewünschten Informationen zu kommen.
Hast Du (oder sonst ein Wissender natürlich ;-) eine Ahnung, was man nun noch machen könnte?
Ja, Sieh Dir das Beispiel 'word2pod.pl' an. Darin wird ein Word-Dokument in eine Perl-Poddatei umgewandelt. Das sollte Dir eigentlich wirklich weiterhelfen.
Übrigens, folgendes Script schreibt den reinen Text eines Word-Dokuemts in eine gegebene Textdatei:
#!perl -w
use strict;
use Win32::OLE qw(in);
exit print "usage: $0 infile.doc outfile.txt" unless (scalar @ARGV == 2);
my($infile,$outfile) = @ARGV;
$infile = Win32::GetCwd() . "/$infile" if $infile !~ /^(\w:)?[/\]/;
$outfile = Win32::GetCwd() . "/$outfile" if $outfile !~ /^(\w:)?[/\]/;
my $Word = Win32::OLE->new('Word.Application', 'Quit')
or die "Couldn't run Word";
my $Doc = $Word->Documents->Open($infile) or die Win32::OLE->LastError();
open(OUT,">$outfile");
print OUT $Doc->{Content}->{Text};
close OUT;
exit;
Grüße
Klaus