[Perl] Comp. Ling. Prog. - > Ausgabe verbessern

Benutzer-2472

abgemeldet
1 Mai 2006
32.694
1.621
PHP:
#Aufsplitten eines Textes in Wort und Tag, getrennt durch 2x \t
#
#28.04.06 02:51
# Anmerkung: \t\t bringt trotz Aufgabenstellung nicht den gewünschten Erfolg!

#Paradigma
use strict;
use warnings;

#Textkörper
my $text =             q{Mögen/VMFIN Puristen/NN aller/PIDAT Musikbereiche/NN auch/ADV die/ART Nase/NN }
                  . q{rümpfen/VVINF ,/$, die/ART Zukunft/NN der/ART Musik/NN liegt/VVFIN für/APPR }
                  . q{viele/PIDAT junge/ADJA Komponisten/NN im/APPRART Crossover-Stil/NN ./$. }
                  . q{Sie/PPER gehen/VVFIN gewagte/ADJA Verbindungen/NN und/KON Risiken/NN ein/PTKVZ }
                  . q{,/$, versuchen/VVFIN ihre/PPOSAT Möglichkeiten/NN auszureizen/VVIZU ./$. Folklore/NN }
                  . q{,/$, Rock/NN ,/$, Klassik/NN und/KON Jazz/NN zu/PTKZU vermischen/VVINF reicht/VVFIN }
                  . q{ihnen/PPER nicht/PTKNEG ,/$, sie/PPER nutzen/VVFIN die/ART Elektronik/NN und/KON }
                  . q{sind/VAFIN sogar/ADV dazu/PROAV übergegangen/VVPP ,/$, Instrumente/NN selbst/ADV }
                  . q{zu/PTKZU bauen/VVINF ./$. Es/PPER spielt/VVFIN eben/ADV keine/PIAT Rolle/NN ,/$, }
                  . q{ob/KOUS die/ART Musik/NN gefällig/ADJD ist/VAFIN -/$( nur/ADV etwas/PIAT "/$( Neues/NN }
                  . q{"/$( muß/VMFIN sie/PPER sein/VAINF und/KON eine/ART eigene/ADJA Handschrift/NN }
                  . q{aufweisen/VVINF ./$. Schade/ADJD jedoch/ADV ,/$, daß/KOUS kaum/ADV jemand/PIS daran/PROAV }
                  . q{teilhaben/VVINF kann/VMFIN ./$. Das/ART einzige/ADJA Forum/NN für/APPR diese/PDAT Musik/NN }
                  . q{ist/VAFIN das/ART interessierte/ADJA Publikum/NN bei/APPR Konzerten/NN und/KON Festivals/NN }
                  . q{./$. Selten/ADJD nehmen/VVFIN die/ART großen/ADJA Plattenfirmen/NN das/ART finanzielle/ADJA }
                  . q{Risiko/NN auf/APPR sich/PRF ,/$, den/ART Arbeiten/NN zu/APPR einer/ART Veröffentlichung/NN }
                  . q{zu/PTKZU verhelfen/VVINF ./$. Schließlich/ADV ,/$, nachdem/KOUS die/ART einzelnen/ADJA }
                  . q{Künstler/NN Tonband/NN nach/APPR Tonband/NN an/APPR die/ART verschiedenen/ADJA Companys/NN }
                  . q{gesandt/VVPP haben/VAFIN ,/$, wenden/VVFIN sie/PPER sich/PRF an/APPR berühmte/ADJA }
                  . q{Kollegen/NN und/KON bitten/VVFIN um/APPR Rat/NN und/KON Unterstützung/NN ./$. Auch/ADV }
                  . q{Philip/NE Glass/NE wurde/VAFIN auf/APPR seinen/PPOSAT weltweiten/ADJA Tourneen/NN mit/APPR }
                  . q{Kassetten/NN und/KON Tonbändern/NN überschüttet/VVPP ./$. Glass/NE ,/$, für/APPR neue/ADJA }
                  . q{Talente/NN der/ART verschiedenen/ADJA Kontinente/NN ohnehin/ADV sehr/ADV aufgeschlossen/ADJD }
                  . q{,/$, wäre/VAFIN ohne/APPR die/ART Einflüsse/NN der/ART indischen/ADJA Musik/NN nicht/PTKNEG }
                  . q{zu/APPR seinem/PPOSAT eigenen/ADJA Stil/NN gekommen/VVPP ./$. Kein/PIAT Wunder/NN also/ADV }
                  . q{,/$, daß/KOUS vor/APPR rund/ADV acht/CARD Jahren/NN die/ART Idee/NN entstand/VVFIN ,/$, }
                  . q{ein/ART Label/NN zu/PTKZU gründen/VVINF ,/$, das/PRELS klassische/ADJA Musik/NN im/APPRART }
                  . q{weitesten/ADJA Sinne/NN produziert/VVFIN ./$. Zusammen/ADV mit/APPR Kurt/NE Munkacsi/NE }
                  . q{und/KON Rory/NE Johnston/NE gründete/VVFIN Glass/NE Euphorbia/NE ,/$, die/PRELS in/APPR }
                  . q{Zusammenarbeit/NN mit/APPR Philips/NE Classics/NE das/ART Label/NN "/$( Point/NE Music/NE }
                  . q{"/$( ins/APPRART Leben/NN gerufen/VVPP haben/VAFIN ./$.};

#globale Var:
my @Datensatz;
my @Wort;

#Aufsplitten der Paare (Wort/Tag) in jeweils einen [x] des Array Datensatz
@Datensatz  = split (" ", $text); 

#äußere schleife, ruft jede [x] pos im Array auf
foreach my $Datum(@Datensatz){
    #splittet dort jedes Zeichen aus Datum in Array Zeichen
    my @Zeichen  = split ("", $Datum);        
      #bei jedem Durchlauf wird die Var erst geleert
      my $aktuellesZeichen="";
          #innere Schleife ruft jedes Zeichen im Zeichenarray auf
          foreach  $aktuellesZeichen (@Zeichen){
            #prüfe ob aktuellesZeichen Trennungszeichen ist
            if ($aktuellesZeichen eq "/"){
                #falls aktuellesZeichen Trennungszeichen ist ersetze durch Tabulatoren
                $aktuellesZeichen = "\t \t";}
          #gibt jedes veränderte oder unveränderte Zeichen aus.
          print $aktuellesZeichen;
        }#innere Schleife ende
#Nach jedem Wortpaar ein Zeilenumbruch
print"\n";
}#äußere Schleife ende

#Programm Ende.
(Bitte nicht von den kleinen Fehlern irritieren lassen, das liegt am [.PHP], aber ansonsten ist die Formatierung und alles weg. )

Das wäre das Programm, es spuckt aber leider eine unregelmäßige Tabelle aus. Schaut es Euch einfach mal an, wenn es läuft, hier frisst der ja die leerzeichen und co :think:
Kann man das irgendwie in eine Tabelle richten?
 
PHP:
# Für Übersichtlichkeit nur die foreach-Schleife...

foreach my $Datum(@Datensatz){ 

#      my @Zeichen  = split ("", $Datum);         # <-- ganz pfui! 
#      my $aktuellesZeichen=""; 
#          foreach  $aktuellesZeichen (@Zeichen){ 
#            if ($aktuellesZeichen eq "/"){ 
#                $aktuellesZeichen = "\t \t";} 
#                print $aktuellesZeichen; 
#          }
#        print"\n"; 

	# Trenner ist eine Leerzeichenkette von 0 bis (30 - position des Trennstriches)
	my $trenner = substr(" " x 30, 0, (30 - index($Datum, "\/")));
	
	# RegEx zum ersetzen des Trennstriches durch den $trenner
	$Datum =~ s/\//$trenner/i;  

	# und die Ausgabe des Selbigen
	print $Datum . "\n";
}

drecks php code, der macht meinen backslash weg... x_x
Hier der richtige Code


Viel Spaß damit...

Refizul
 
Zuletzt bearbeitet:
Öhm, danke, aber meine Lösung gab 100%, von deinen Befehlen verstehe ich nix, aber auch gar nix auf Anhieb.
 
oh ...
na dann
wars ja überflüssig
devil-smiley-076.gif


trotzdem ist das doof das der php code hier mein backslash frisst *g*

Test:
PHP:
$blah =~ s/\/\/\\\\\//;  # <-- da steht "s/\/\/\\\\\//;" :D
 
Überflüssig war es nicht, ich werde es mir morgen mal genauer ansehen :/, derzeit plage ich mich mit der nächsten Aufgabe herum :(