Piet: Word-Dateien via binmode

Hallo zusammen!

Ich würde gerne den Inhalt von fiesen ;-) MS-Word-Dateien (Win98 SE, Office 97) auslesen und dachte, ich hätte zu solchem Zweck ein hübsch einfaches Script bei Ellie Quigley gefunden. Das operiert mit binmode, bei dem es auch eine "discipline" namens ‚:text' geben soll, wie sie schreibt.
Nun hab ich mal schlicht den Code abgetippt (allerdings nur fast: denn wie man mit den "disciplines" umgeht, führt sie leider nicht aus):

#!/usr/bin/perl

$quelle="test.doc";

open (DOC, "<$quelle");
open (TXT, ">test_out.txt");

binmode (DOC, ':text');
binmode (TXT);

while (read (DOC, $buffer, 1024))
{
 print TXT $buffer;
}

close (DOC);
close (TXT);

Nun gibt es Mecker wegen dieser Zeile:

binmode (DOC, ':text');

Dies sei eine "unknown discipline", andere Schreibweisen bringen einen syntax-error in dieser Zeile.
Kann mir zufällig jemand einen Tipp geben, was da zu tun ist?

Beste Grüße
Piet

  1. Hallo,

    Dies sei eine "unknown discipline", andere Schreibweisen bringen einen syntax-error in dieser Zeile.
    Kann mir zufällig jemand einen Tipp geben, was da zu tun ist?

    Ich würde einmal mit
    perldoc -f binmode
    beginnen;-)

    Ab gesehen davon, daß DISCIPLINE nur ':raw' und ':crlf' akzeptiert, noch etwas zu dem eigentlichen Programm:

    open (DOC, "<$quelle");
    open (TXT, ">test_out.txt");

    binmode (DOC, ':text');
    binmode (TXT);

    while (read (DOC, $buffer, 1024))
    {
     print TXT $buffer;
    }

    damit kopierst Du einfach den _gesamten_ Inhalt des Word-Dokuments in eine andere Datei. Der Unterschied ist dann nur der Dateiname, sonst gar nichts.
    Willst Du aber nur den reinen Text aus dem Word-Dokument auslesen, dann ist dies sicherlich der falsche Weg.
    Versuche es einmal Mit Win32::OLE bzw. OLE::Storage.

    Grüße
      Klaus

  2. Moin, moin!

    Hast Du mal einen Link zum Original-Skript?

    Ein kurzer Blick in die Doku zu binmode läßt mich überhaupt keine vorgesehenen Parameter wie ':text' erkennen.

    Wenn ich Dein Skript verwende, gibt es keine Fehlermeldung. Die Datei wird kopiert, allerdings nicht im Binär-Modus. Lasse ich den Zusatzparameter weg, verwende also binmode (DOC), klappt es natürlich. Aber damit ist natürlich noch keine Konvertierung in einen einfachen Text gemacht.

    Kann es sein, daß eigentlich ein "anderes" binmode verwendet werden soll, also ein Modul o. ä. eingebunden werden muß?

    Norbert