{"id":847,"date":"2009-03-13T12:24:02","date_gmt":"2009-03-13T11:24:02","guid":{"rendered":"http:\/\/www.schattenreigen.de\/schattenlog\/?p=847"},"modified":"2009-03-13T12:24:03","modified_gmt":"2009-03-13T11:24:03","slug":"automatische-textausgaben-in-perl-gendern","status":"publish","type":"post","link":"https:\/\/www.schattenreigen.de\/schattenlog\/archive\/847","title":{"rendered":"Automatische Textausgaben in Perl gendern"},"content":{"rendered":"\t<p>F&#252;r alle die an allen Arten von Simulatoren (auch an kleineren) rumbauen, ergibt sich das Problem, dass man Flie&#223;text, Prosa also, ausgeben muss. Dann will man in der Regel auf einen bestimmten Fall angepasste Inhalte ausgeben. Je nach Zahlenausgabe des Modells, m&#252;ssen dann Textbl&#246;cke konfiguriert und f&#252;r den User ausgegeben werden. W&#228;hrend man in allgemeinen Texten immer noch z.B. von der\/dem Sch&#252;lerIn sprechen kann (auch wenn&#8217;s nach wie vor bl&#246;d zu lesen ist und h&#228;&#223;lich aussieht), wirkt eine solche Beschreibung in fallspezifischen Texten richtig bl&#246;d. Die zun&#228;chst einfachere Methode w&#228;re, jeden Textblock doppelt und mit entsprechendem Geschlecht abzulegen. Sp&#228;testens wenn dann Ver&#228;nderungen anstehen, hat man so jedoch doppelt soviel Editieraufwand. Und Spa&#223; macht das gleich dreimal keinen.<\/p>\n\n\t<p>Hier kann ich mir mit <img src=\"\/pic\/link.gif\" alt=\"Link\" height=\"11\"> <a title=\"Regul&#228;re Ausdr&#252;cke\" href=\"http:\/\/de.wikipedia.org\/wiki\/Regul%C3%A4rer_Ausdruck\" target=\"_blank\">regul&#228;ren Ausdr&#252;cken<\/a> weiterhelfen, wobei ich daf&#252;r Sorgen muss, dass noch innerhalb eines solchen Ausdrucks wieder ein Funktionsaufruf stattfinden kann. Meine Beispiele habe ich in Perl angef&#252;gt. Sie lassen sich ziemlich sicher problemlos auch &#252;berall anderswohin &#252;bertragen, wo regul&#228;re Ausdr&#252;cke uneingeschr&#228;nkt m&#246;glich sind.<\/p>\n\n\t<p>Sagen wir mal, wir haben einen entsprechenden Flie&#223;textblock und haben die geschlechtsspezifischen Ausdr&#252;cke entsprechend geklammert. Zum Beispiel so (bitte jetzt nicht zu sehr auf die literarische Qualit&#228;t des Textes achten):<\/p>\n\n\t<p>$thetext=&#8221;{Das M&#228;dchen\/Der Junge} ging spazieren. {Sie\/Er} hatte gute Laune, weil {ihr\/ihm} in der Schule ein gro&#223;er Erfolg gelungen war.&#8221;;<\/p>\n\nUm Texte zu &#8220;gendern&#8221; kann man sich die folgenden beiden Funktionen vorstellen:\n<pre>sub gender_klammer($$) {\n my $klammer=shift;\n my $gender=shift;\n my $term;\n my @ab;\n    $klammer=~ s\/{\/\/; &lt;em&gt;#Er&amp;#246;ffnende Klammer rauswerfen&lt;\/em&gt;\n    $klammer=~ s\/}\/\/; &lt;em&gt;#Abschlie&amp;#223;ende Klammer rauswerfen&lt;\/em&gt;\n    @ab=split \/\/\/,$klammer; &lt;em&gt;#Beide Varianten auf eine Liste aufteilen.&lt;\/em&gt;\n    $term=$ab[$gender]; &lt;em&gt;#Den auszugebenden Term nach Gender auswaehlen&lt;\/em&gt;\n return $term;\n}\n\nsub gender($$) {\n my $t=shift;\n my $g=shift;\n my $sT;\n    &lt;em&gt;#Die Klammern finden und durch den Funktionsinhalt ersetzen:&lt;\/em&gt;\n    $t=~ s \/{.*?}\/&amp;gender_klammer($&amp;,$g)\/ge;\n return $t;\n}<\/pre>\nJetzt muss ich meiner Funktion nur noch den Textblock und das Geschlecht als Zahl &#252;bergeben (weiblich=0; m&#228;nnlich=1).\n<pre>print gender($thetext,0);<\/pre>\nergibt dann in der Ausgabe:\n\n\t<p>Das M&#228;dchen ging spazieren. Sie hatte gute Laune, weil ihr in der Schule ein gro&#223;er Erfolg gelungen war.<\/p>\n\nW&#228;hrend\n<pre>print gender($thetext,1);<\/pre>\nden folgenden Satz ergibt:\n\n\t<p>Der Junge ging spazieren. Er hatte gute Laune, weil ihm in der Schule ein gro&#223;er Erfolg gelungen war.<\/p>\n\n\t<p>Selbstverst&#228;ndlich l&#228;sst sich das auch in anderen Listenkontexten verwenden, da ich auch der oben beschriebenen Funktion beliebig lange Listen &#252;bergeben kann, z.B. {sehr gut\/gut\/befriedigend\/ausreichend\/mangelhaft\/ungen&#252;gend}. Im Beispiel muss ich die einzelnen Positionen dann durch Note-1 ansteuern (also mit 0-5).<\/p>\n ","protected":false},"excerpt":{"rendered":"\t<p>F&#252;r alle die an allen Arten von Simulatoren (auch an kleineren) rumbauen, ergibt sich das Problem, dass man Flie&#223;text, Prosa also, ausgeben muss. Dann will man in der Regel auf einen bestimmten Fall angepasste Inhalte ausgeben. Je nach Zahlenausgabe des Modells, m&#252;ssen dann Textbl&#246;cke konfiguriert und f&#252;r den User ausgegeben werden. W&#228;hrend man in allgemeinen [&hellip;]<\/p>\n ","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/www.schattenreigen.de\/schattenlog\/wp-json\/wp\/v2\/posts\/847"}],"collection":[{"href":"https:\/\/www.schattenreigen.de\/schattenlog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schattenreigen.de\/schattenlog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schattenreigen.de\/schattenlog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schattenreigen.de\/schattenlog\/wp-json\/wp\/v2\/comments?post=847"}],"version-history":[{"count":5,"href":"https:\/\/www.schattenreigen.de\/schattenlog\/wp-json\/wp\/v2\/posts\/847\/revisions"}],"predecessor-version":[{"id":852,"href":"https:\/\/www.schattenreigen.de\/schattenlog\/wp-json\/wp\/v2\/posts\/847\/revisions\/852"}],"wp:attachment":[{"href":"https:\/\/www.schattenreigen.de\/schattenlog\/wp-json\/wp\/v2\/media?parent=847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schattenreigen.de\/schattenlog\/wp-json\/wp\/v2\/categories?post=847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schattenreigen.de\/schattenlog\/wp-json\/wp\/v2\/tags?post=847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}