[vienna.pm] Anfaengerfrage

Roland Bauer roland.bauer at fff.at
Fri Sep 22 17:44:18 CDT 2000


* * * vienna-pm-list * * *


Hallo Rob

> Liebe Perl-Mongers in Venedig,

Knapp daneben: Wien :-)

> Ich arbeite übrigens in Linux.

Ist in Perl meistens egal.

> Ich stelle Euch die Probleme in einigen Schritten vor. Ich habe ein
> Datenbestand das etwa so aussieht:

[...]

> Ich suche jetzt ein Perl-script, das vor dem Hauptwort eine Referenznummer
> einschiebt, und zwar:
>
> Nummer  112
> Hauptwort       Fisch
> Uebersetzung    vis
> Beispeil                Fische leben im Meer
> UebersetzB.     vissen leven in de zee

Dieser Schritt ist eigentlich unnoetig, je nachdem, wie man's
macht.

> Fuer weitere Bearbeitungen (siehe Unten) wird es noetig sein diese Nummer
> hinter die andere Daten schieben zu können:

Je nachdem.

> A. Verzeichnis von Hauptwörtern:
> Blume 324
> Fisch 112
> Kasten 456

> B. Verzeichnis von Uebersetzungen:
> bloem Blume 324
> doos Kasten 456
> kist Kasten 456
> vis Fisch 112
>
> C. Verzeichnis von Wörtern in den Beispielen:
> ich (B) 22, 34, 98, 111, 675
> liebe (B) 98, 324
> Uhr (B) 23, 456
> Meer (B) 77, 112
> ...
>
> Eine weitere Komplikation - nichts ist einfach! - dabei ist das meine Datei
> nich in der lateinischen Schrift ist, sondern in einer angepassten
> Kyrillische Schrift, wo z.B. ä (=t) ü (=s) folgt. (Unser
> tuerkisch-arabisches Lexikon wird übrigens ins russische uebersetzt.) Um das
> Verzeichnis richtig zu ordnen, braeuchte ich also noch eine Sonderscript...

Diese Sortierfunktion ist nicht enthalten, meine Funktion
sortiert nur unabhaengig von groß/klein. Und es werden nicht alle Files
sortiert. Aber das meiste funktioniert ...

Hier ein erster Entwurf:

------------------------------- ENTWURF -----------------------------
#!/usr/bin/perl
# Erzeugt verschiedene Wortlisten

$VERSION = 0.1;

use strict;

open MITREF, ">mitref.txt" or die; # mit Referenznummer (unnoetig)
open HAUPTW, ">hauptw.txt" or die; # unsortiert
open UEBERS, ">uebers.txt" or die; # unsortiert
open BEISP,  ">beisp.txt"  or die;

my $i;                             # Referenznummer
my %beisp;
my $hw;                            # Hauptwort
while (<DATA>) {

 chomp;

 if (/^Hauptwort\s+(.*)/) {
  $hw = $1;
  $i++;
  print MITREF "Nummer $i\n";
  print HAUPTW "$hw $i\n";
 }

 print UEBERS "$1 $hw $i\n" if /^Uebersetzung\s+(.*)/;

 if (/^(Beispiel|Beispeil)\s+(.*)/) { # wegen Tippfehler
  my @words = split /\s+/, $2;
  for my $word (@words) {
   # Value von Hash ist eine Referenz auf einen Array (die Refnummern)
   push @{$beisp{$word}}, $i;
  }
 }

 print MITREF "$_\n";

}
for my $key (sort { lc $a cmp lc $b } keys %beisp) {
 print BEISP "$key (B) ";
 print BEISP join ", ", @{$beisp{$key}};
 print BEISP "\n";
}

__DATA__
Hauptwort       Fisch
Uebersetzung    vis
Beispeil                Fische leben im Meer VON MIR ANGEFUEGT
UebersetzB.     vissen leven in de zee

Hauptwort       Blume
Uebersetzung    bloem
Beispiel                ich liebe Blumen VON MIR ANGEFUEGT
UebersetzB.     ik houd van bloemen

Hauptwort       Kasten
Uebersetzung    doos
Synonym kist
Beispiel                er legte seine Uhr in den Kasten
UebersetzB.     hij legde zijn horloge in de doos
-----------------------------ENDE----------------------------------

Vielleicht interessiert Dich auch die Mailingliste perl-kurs at topica.com ?

Schoene Gruesse
Roland

###
You are subscribed to vienna-pm-list as Roland Bauer <roland.bauer at fff.at>
http://www.fff.at/fff/vienna.pm/



More information about the Vienna-pm mailing list