<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[devshare.de - umdrehen und filtern innerhalb einer substitution]]></title>
		<link>http://devshare.de/topic/32888/umdrehen-und-filtern-innerhalb-einer-substitution/</link>
		<description><![CDATA[Die neusten Beiträge in umdrehen und filtern innerhalb einer substitution.]]></description>
		<lastBuildDate>Wed, 27 Feb 2002 23:09:00 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: umdrehen und filtern innerhalb einer substitution]]></title>
			<link>http://devshare.de/post/32893/#p32893</link>
			<description><![CDATA[<p>Ja, echt prima. Wirklich Klasse mir mit einem Posting alles das zu nehmen was ich mir dachte Ã¼ber arbeitsweise der $_ und regExps angeignet zu haben. :-/</p><p> Nein, schÃ¶nen Dank fÃ¼rs Post.&nbsp; &lt;img border=&quot;0&quot; title=&quot;&quot; alt=&quot;[Lächeln]&quot; src=&quot;images/icons/smile.gif&quot; /&gt; </p><p> Aber nen paar Sachen verhalten sich hier anders als ich gedacht hÃ¤tte. </p><p> ZunÃ¤chst die $_:</p><p> Wieso kommt kann ich auf die in der Routine zugreifen. Ich dachte in dem Moment, wo man in den Geltungsbereich der @_ kommt, verliert $_ die GÃ¼ltigkeit. Weiter versteh ich nicht wieso man anscheinend mit einer Referenz auf $_ und nicht mit einem Call bei Value arbeitet. Wenn ich das hÃ¤tte machen sollen, hÃ¤tt ich $_ brav als Parameter Ã¼bergeben und zum SchluÃ? brav returnt.</p><p> Zum regulÃ¤ren Ausdruck:</p><p> #$_[0]#</p><p> is klar.</p><p> mein Fehler war (unter anderem), das ich Ã¼ber eine Anweisung wie:</p><p> #$s#(.+?)(#|$)#/$instrumente{$s}$1$2/ig;</p><p> Das was ich merke nur bis zu der nÃ¤chsten Fundstelle eines # haben wollte. Das gab natÃ¼rlich probleme wenn ich die Musiker der NÃ¤chstes KÃ¼rzels finden wollte, der regulÃ¤re Ausdruck aber natÃ¼rlich alle schon Ã¼bersetzten SchlÃ¼ssel mitgesaugt hat.</p><p> Wenn ich das richtig verstehe, dann merkst du dir Ã¼ber </p><p> ([^#]+) den rest des Strings und setzt in hintendran wieder ein.</p><p> Neinnein, stimmt gar nicht, das ^ in der Zeichenklasse steht ja fÃ¼r alle Zeichen ausser den angegebenen. Und dann merkst du dir doch nicht den ganze String sondern genauso wie ich alles bis zum nÃ¤chsten #xxx#. Bei der Methode wird bloÃ? die Reihenfolge beibehalten und deshalb kommts bloÃ? nicht durcheinander.</p><p> Manman. Ich werds am WE mal probieren einzubauen.</p><p> erstmal danke,</p><p> sel,</p><p> btw:</p><p> Ich find den call ne bisschen umstÃ¤ndlich da es wie gesagt eine ganze Liste von KÃ¼rzel ist, aber man kÃ¶nnt deine Funktion ja auch gut so unterbringen:</p><p> open(KUERZEL, $kuerzeldatei) or die (&quot;Shit, $!&quot;);<br /> while($zeile = &lt;KUERZEL&gt;) {<br /> chomp($zeile);<br /> ES(split(/ +/, $zeile);<br /> }</p><p> die SchlÃ¼Ã?el - Wert Paare liegen alle in ner Datei durch Leerzeichen getrennt.</p><p> Naja, wird wohl klappen. Wenn nicht werd ich mich auf jeden Fall noch mal melden,</p><p> thx, sel.</p>]]></description>
			<author><![CDATA[dummy@example.com (ReAr)]]></author>
			<pubDate>Wed, 27 Feb 2002 23:09:00 +0000</pubDate>
			<guid>http://devshare.de/post/32893/#p32893</guid>
		</item>
		<item>
			<title><![CDATA[Re: umdrehen und filtern innerhalb einer substitution]]></title>
			<link>http://devshare.de/post/32892/#p32892</link>
			<description><![CDATA[<p>Danke für die Blümelein,</p><p> Mir ist noch was eingefallen,<br /> man kann das ja ein wenig komfortabler machen:</p><p> $_ = &#039;#IORG# Geffert, Johannes #OD# Scheerer, Ingeborg #OR# Johann Christian Bach-Akademie&#039;;</p><p> @I = <br /> (<br /> &#039;IORG&#039;, &#039;Orgel&#039;,<br /> &#039;OD&#039;,&nbsp; &nbsp;&#039;Dirigent / Band Leader&#039;,<br /> &#039;OR&#039;,&nbsp; &nbsp;&#039;Orchester (Instrumentalensemble / Sinfonieorchester)&#039;<br /> );</p><p> for($i=0;$i&lt;@I/2;$i++)<br /> {$_=~s/#@I[$i*2]#([^#]+)/&lt;nobr&gt;$1 &lt;tt&nbsp; style=&#039;color:red&#039;&gt;(@I[$i*2+1])&lt;/tt&gt;&lt;/nobr&gt;&lt;br&gt;/;};</p><p> print $_;</p><p> Dann hättest Du Deinen hash, bloß eben als array.</p><p> und nochen gruß</p><p> matho</p>]]></description>
			<author><![CDATA[dummy@example.com (matho)]]></author>
			<pubDate>Tue, 26 Feb 2002 23:03:00 +0000</pubDate>
			<guid>http://devshare.de/post/32892/#p32892</guid>
		</item>
		<item>
			<title><![CDATA[Re: umdrehen und filtern innerhalb einer substitution]]></title>
			<link>http://devshare.de/post/32891/#p32891</link>
			<description><![CDATA[<p>matho ist einfach genial!&nbsp; &lt;img border=&quot;0&quot; title=&quot;&quot; alt=&quot;[Winken]&quot; src=&quot;images/icons/wink.gif&quot; /&gt;</p>]]></description>
			<author><![CDATA[dummy@example.com (j|g)]]></author>
			<pubDate>Tue, 26 Feb 2002 21:45:00 +0000</pubDate>
			<guid>http://devshare.de/post/32891/#p32891</guid>
		</item>
		<item>
			<title><![CDATA[Re: umdrehen und filtern innerhalb einer substitution]]></title>
			<link>http://devshare.de/post/32890/#p32890</link>
			<description><![CDATA[<p>Tach Sel,</p><p> Wie wär&#039;s, wenn Du Dir statt des hashs ne subroutine schreibst, etwa so:</p><p> $_ = &#039;#IORG# Geffert, Johannes #OD# Scheerer, Ingeborg #OR# Johann Christian Bach-Akademie&#039;;</p><p> sub ES(){$_=~s/#$_[0]#([^#]+)/&lt;nobr&gt;$1 &lt;tt&nbsp; style=&#039;color:red&#039;&gt;($_[1])&lt;/tt&gt;&lt;/nobr&gt;&lt;br&gt;/;};</p><p> &amp;ES(&#039;IORG&#039;,&#039;Orgel&#039;);<br /> &amp;ES(&#039;OD&#039;,&#039;Dirigent / Band Leader&#039;);<br /> &amp;ES(&#039;OR&#039;,&#039;Orchester (Instrumentalensemble / Sinfonieorchester)&#039;);</p><p> print $_;</p><p> Das bringt Dir Reihenfolge nicht durcheinander.</p><p> gruß</p><p> matho</p>]]></description>
			<author><![CDATA[dummy@example.com (matho)]]></author>
			<pubDate>Tue, 26 Feb 2002 15:07:00 +0000</pubDate>
			<guid>http://devshare.de/post/32890/#p32890</guid>
		</item>
		<item>
			<title><![CDATA[Re: umdrehen und filtern innerhalb einer substitution]]></title>
			<link>http://devshare.de/post/32889/#p32889</link>
			<description><![CDATA[<p>hm, ich habs mir grad nochmal durchgelesen, vielleicht noch zur erklärung:&lt;p&gt;in $_ steht der string um den es geht. Ich hab ne txt Datei mit 1600 Zeilen die bearbeitet werden müssen. Ich lass mir das ganze Zeugs in nen Array auslesen und in $$_[7] steht dann z.B das was ich oben in $_ gesetzt habe, aber das ist auch für die Sache nicht so relevant. &lt;p&gt;dann hab in ne Datei mit den ganze Schlüsseln für #xyz# etc. Die lass ich auch einlesen und speicher alles in einem Hash %instrumente wobei #xyz# der Schlüssel und &#039;IxÜpsilonZet&#039; der Wert ist. Ich muss jetzt in jeden String der in $$_[7] steht die Schlüssel - Wert Paare tauschen und ausser dem den ausgetauschten Wert mit den folgenem String bis zum nächsten Schlüssel umdrehen...&lt;p&gt;btw: Ich bin trotz allem saufroh dass ich das nicht mit php proggen muss.&nbsp; [img]images/icons/smile.gif&quot; border=&quot;0[/img] &lt;p&gt;cu, sel.</p>]]></description>
			<author><![CDATA[dummy@example.com (ReAr)]]></author>
			<pubDate>Fri, 22 Feb 2002 23:24:00 +0000</pubDate>
			<guid>http://devshare.de/post/32889/#p32889</guid>
		</item>
		<item>
			<title><![CDATA[umdrehen und filtern innerhalb einer substitution]]></title>
			<link>http://devshare.de/post/32888/#p32888</link>
			<description><![CDATA[<p>nabend,&lt;p&gt;ich dreh echt noch am Rad. Ich probier seit drei Tagen ein Problem zu lösen und komm einfach nicht weiter. Vielleicht könnt ihr mir ja helfen. Ist echt ne Herausforderung, zumindest für micht.&lt;p&gt;also. Gegeben ist folgendes:&lt;p&gt;&lt;blockquote&gt;&lt;font size=&quot;1&quot; face=&quot;Verdana, Helvetica, sans-serif&quot;&gt;Code:&lt;/font&gt;&lt;hr&gt;&lt;pre&gt;<br /> $_ = &#039;#IORG# Geffert, Johannes #OD# Scheerer, Ingeborg #OR# Johann Christian Bach-Akademie&#039;;&lt;p&gt;%instrumente = ( &#039;#IORG#&#039; =&gt; &#039;Orgel&#039;,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#039;#OD#&#039;&nbsp; &nbsp;=&gt; &#039;Dirigent / Band Leader&#039;,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#039;#OR#&#039;&nbsp; &nbsp;=&gt; &#039;Orchester (Instrumentalensemble / Sinfonieorchester)&#039;);<br /> &lt;/pre&gt;&lt;hr&gt;&lt;/blockquote&gt;<br /> Dies sind auszüge aus einer sehr umfangreichen Liste die Kürzel für Instrumente beinhaltet und ein Auszug aus einer noch umfangreicheren Liste die für einen CD Titel (nicht mit aufgeführt) eine Liste von Artisten enthält.&lt;p&gt;Problemstellung:&lt;p&gt;es soll was in der Art:&lt;p&gt;Geffefert, Johannes (Orgel)&lt;br&gt;Scheer Ingeborg(Dirigent / Band)&lt;br&gt;Johann Christian Back Akademie(Orchester ...) &lt;p&gt;ausgegeben werden.<br /> ich hab bis jetzt echt alles probiert.&lt;p&gt;&lt;blockquote&gt;&lt;font size=&quot;1&quot; face=&quot;Verdana, Helvetica, sans-serif&quot;&gt;Code:&lt;/font&gt;&lt;hr&gt;&lt;pre&gt;<br /> foreach $s ( keys ( %instrumente) ) {<br />&nbsp; &nbsp; s/$s/$instumente{$s}/ig;<br /> }<br /> &lt;/pre&gt;&lt;hr&gt;&lt;/blockquote&gt;<br /> ersetzt mir zwar die Schlüssel der Instrumente aber die Reihenfolge stimmt nicht (Artist (Instrument)). Weiter werden auch durch die Zufälltige anordnug der Schlüssel im Hash %instrumente die Reihenfolge innerhalb des Eintrags durcheinadergewürfelt.&lt;p&gt;Weiter hatte ich echt total viele Ansätze die aber allesamt in die Hose gingen:&lt;p&gt;z.B<br /> &lt;blockquote&gt;&lt;font size=&quot;1&quot; face=&quot;Verdana, Helvetica, sans-serif&quot;&gt;Code:&lt;/font&gt;&lt;hr&gt;&lt;pre&gt;<br /> while(/(#.+?#)/g) {<br />&nbsp; &nbsp; s/($1)(.+?)#/$2$1#/;<br /> }<br /> &lt;/pre&gt;&lt;hr&gt;&lt;/blockquote&gt;<br /> wär für mich auch logisch. Solange er ne # bis alles bis zu dem nächsten # findet soller sich das merken und das was er gemerkt hat durch das was folgt vertauchen /$2$1/ den # muss man meines erachtens noch dranhängen weil er sonst die nächste Zeichenfolge #xxx# nicht findet. &lt;p&gt;... Klappt aber auch nicht.&lt;p&gt;besser wärs ja noch so gewesen:&lt;p&gt;&lt;blockquote&gt;&lt;font size=&quot;1&quot; face=&quot;Verdana, Helvetica, sans-serif&quot;&gt;Code:&lt;/font&gt;&lt;hr&gt;&lt;pre&gt;<br /> while(/(#.+?#)/g) {<br />&nbsp; &nbsp; foreach $s (keys (%instrumente) ) {<br />&nbsp; &nbsp; &nbsp; &nbsp;if($s eq $1) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; s/($1)(.+?)/$instrumente{$s}$1/;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; }<br /> }<br /> &lt;/pre&gt;&lt;hr&gt;&lt;/blockquote&gt;&lt;p&gt;aber irgenwie klappt das alles nicht. Ich hab auch schon probiert die ganze Sache nach # in splitten zu lassen und nach (% 2 == 0) in zwei Arrays zu speichern und hinterher wieder zusammenzusetzen aber nix funzt. Ich bin echt am verzweifeln. &lt;p&gt;Wenn einer ne Idee hat wär echt super.&lt;p&gt;danke, sel.</p>]]></description>
			<author><![CDATA[dummy@example.com (ReAr)]]></author>
			<pubDate>Fri, 22 Feb 2002 23:16:00 +0000</pubDate>
			<guid>http://devshare.de/post/32888/#p32888</guid>
		</item>
	</channel>
</rss>

