<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>antiblau blog &#187; Perl</title>
	<atom:link href="http://blog.antiblau.de/category/perl/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.antiblau.de</link>
	<description>Interessantes aus der Welt der Computer...</description>
	<lastBuildDate>Thu, 29 Jul 2010 20:38:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Understanding the Perl/UTF-8 Madness</title>
		<link>http://blog.antiblau.de/2009/12/11/understanding-the-perlutf-8-madness/</link>
		<comments>http://blog.antiblau.de/2009/12/11/understanding-the-perlutf-8-madness/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 08:35:12 +0000</pubDate>
		<dc:creator>LeSpocky</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://blog.antiblau.de/?p=499</guid>
		<description><![CDATA[
Ich habe gerade eine halbe Stunde damit verbracht, mal wieder diesem grandiosen xkcd-Comic gerecht zu werden. Los ging das mit einem Link, den ich bei qbi im Blog gefunden habe: Surviving the Perl/UTF-8 Madness. Der Name des Autors kam mir bekannt vor, ich glaube Tux hat ab und zu mal Links von dessen privatem Blog [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://xkcd.com/386/"><img src="http://imgs.xkcd.com/comics/duty_calls.png" /></a></p>
<p>Ich habe gerade eine halbe Stunde damit verbracht, mal wieder diesem grandiosen xkcd-Comic gerecht zu werden. Los ging das mit einem Link, den ich <a href="http://www.kubieziel.de/blog/archives/1239-links-for-2009-12-10.html">bei qbi im Blog</a> gefunden habe: <a href="http://www.cosmocode.de/en/blog/gohr/2009-12/10-surviving-the-perl-utf-8-madness#blogtng__comment_form">Surviving the Perl/UTF-8 Madness</a>. Der Name des Autors kam mir bekannt vor, ich glaube Tux hat ab und zu mal Links von dessen privatem Blog fallen lassen. Ich war also gespannt, was da kommt und wurde dann leider enttäuscht.</p>
<p>Worum geht&#8217;s? Es geht um Perl und wie Perl mit Encodings umgeht. Seit Perl 5.8 gibt es da ein sinnvolles Vorgehen, das sich aber anscheinend noch nicht rumgesprochen hat. Nachlesen kann man das sehr gut zusammengefasst im Tutorial <a href="http://perldoc.perl.org/perlunitut.html">perlunitut</a>. Ich fasse das hier nochmal auf deutsch zusammen, weil es da anscheinend immer noch Missverständnisse gibt.</p>
<p>Wichtig zu wissen: Perl unterscheidet text/character strings von byte/binary strings (und das wirkt sich auf bestimmte Befehle wie print, uc, length usw. aus). Es wird häufig behauptet, die text strings wären UTF-8. Das mag so sein, ist aber völlig irrelevant und geht am eigentlichen Problem vorbei. Wie Perl diese text strings intern darstellt, kann einem total egal sein. Wichtiger ist, wie man damit umgeht und das fasst auch perlunitut korrekt zusammen:</p>
<ol>
<li>Receive and decode</li>
<li>Process</li>
<li>Encode and output</li>
</ol>
<p>D.h. alles, was von außen kommt, egal ob von Nutzereingaben, aus Dateien oder Datenbanken, ist zunächst mal ein binary string. Wenn das Zeichenketten sind, mit denen ich Zeichenkettenoperationen durchführen will, muss ich die als erstes von byte strings in character strings umwandeln. Dazu kann ich <em>binmode</em> setzen, einen encoding Parameter bei <em>open</em> nutzen oder die <em>decode</em>-Funktionen aus dem Module <em>Encoding</em> bemühen, das ist faktisch alles das selbe, Tim Toady halt. </p>
<p>Der zweite Schritt ist klar: process, irgendwie auf den character strings rumackern. Beim dritten Schritt, dem output aus Perl raus dann der umgekehrte Weg: ich wandle meine character strings zurück in byte strings mit dem entsprechenden Encoding meiner Zielplattform, sei es nun STDOUT, ein file oder eine Netzwerkverbindung, egal und ebenfalls egal, ob das iso8859* oder UTF-8 oder sonstwas ist. Wenn man diese drei Schritte im Kopf behält und Worte wie <em>utf-8 flag</em> aus seinem Hirn streicht, kommt man mit Perl und Zeichensätzen klar. </p>
<p>Bisschen aufpassen muss man bei Fremdmodulen, da muss man im Zweifelsfall mal genauer hinsehen, wie die das handhaben. Was man vermeiden sollte: einfach davon ausgehen, dass Perl intern UTF-8 zur Repräsentation von character strings verwendet. Damit wird man über kurz oder lang auf die Nase fallen.</p>
<p>Neben perlunitut gibt es noch weitere gute Quellen zum Nachlesen:</p>
<ul>
<li>eine Einführung in die Problematik auf deutsch: <a href="http://perlgeek.de/de/artikel/charsets-unicode">Zeichenkodierungen oder „Warum funktionieren meine Umlaute nicht?”</a></li>
<li>die Perl-Unicode-FAQ: <a href="http://perldoc.perl.org/perlunifaq.html">perlunifaq</a></li>
</ul>
<p>Wenn man tiefer eintauchen will, kann man auch noch <a href="http://perldoc.perl.org/perlunicode.html">perlunicode</a> oder <a href="http://perldoc.perl.org/perluniintro.html">perluniintro</a> lesen, aber das ist dann schon harter Stoff. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.antiblau.de/2009/12/11/understanding-the-perlutf-8-madness/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Farbige Nicknames in irssi</title>
		<link>http://blog.antiblau.de/2009/01/26/farbige-nicknames-in-irssi/</link>
		<comments>http://blog.antiblau.de/2009/01/26/farbige-nicknames-in-irssi/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 22:45:11 +0000</pubDate>
		<dc:creator>LeSpocky</dc:creator>
				<category><![CDATA[CLI]]></category>
		<category><![CDATA[IRC]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://blog.antiblau.de/?p=213</guid>
		<description><![CDATA[Als Fan von Programmen für die Konsole benutze ich natürlich irssi als IRC-Client. Für viele Funktionen, die im Standard-Umfang nicht vorhanden sind, gibt es Scripte, Tux hatte da ja auch selbst mal eins geschrieben und hier im Blog vorgestellt. Um den Chatverlauf einfacher verfolgen zu können, existiert beispielsweise das Skript nickcolor.pl, das die Nicknames der [...]]]></description>
			<content:encoded><![CDATA[<p>Als Fan von Programmen für die Konsole benutze ich natürlich <a href="http://www.irssi.org/">irssi</a> als IRC-Client. Für viele Funktionen, die im Standard-Umfang nicht vorhanden sind, gibt es Scripte, Tux hatte da ja auch selbst mal eins geschrieben und <a href="http://blog.antiblau.de/2008/07/10/irssi-hilight-mit-jabber/">hier im Blog</a> vorgestellt. Um den Chatverlauf einfacher verfolgen zu können, existiert beispielsweise das Skript <a href="http://scripts.irssi.org/html/nickcolor.pl.html">nickcolor.pl</a>, das die Nicknames der Nutzer einfärbt. Die Beschreibung in der Übersicht der Skripte ist kurz und knapp:</p>
<blockquote><p>
assign a different color for each nick
</p></blockquote>
<p>Das Skript bildet per Default einen simplen Hashwert über den Nickname, wählt anhand dessen eine Farbe aus und behält diese dann bei. Bei gleichen Nicks ist das dann immer die gleiche Farbe, was ja auch ganz sinnvoll ist. </p>
<p>Das Skript kann darüber hinaus noch mehr, um das rauszufinden, muss man aber einen Blick in den Quelltext werfen, entscheidend ist folgende Subroutine:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">sub</span> cmd_color <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$data</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$server</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$witem</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">@_</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$op</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$nick</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$color</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span> <span style="color: #ff0000;">&quot; &quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$data</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #0000ff;">$op</span> <span style="color: #339933;">=</span> <span style="color: #000066;">lc</span> <span style="color: #0000ff;">$op</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$op</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Irssi<span style="color: #339933;">::</span><span style="color: #000066;">print</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;No operation given&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$op</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">&quot;save&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    save_colors<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$op</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">&quot;set&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$nick</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      Irssi<span style="color: #339933;">::</span><span style="color: #000066;">print</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Nick not given&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$color</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      Irssi<span style="color: #339933;">::</span><span style="color: #000066;">print</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Color not given&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$color</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">2</span> <span style="color: #339933;">||</span> <span style="color: #0000ff;">$color</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">14</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      Irssi<span style="color: #339933;">::</span><span style="color: #000066;">print</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Color must be between 2 and 14 inclusive&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #0000ff;">$saved_colors</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$nick</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$color</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$op</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">&quot;clear&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$nick</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      Irssi<span style="color: #339933;">::</span><span style="color: #000066;">print</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Nick not given&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066;">delete</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$saved_colors</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$nick</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$op</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">&quot;list&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Irssi<span style="color: #339933;">::</span><span style="color: #000066;">print</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Saved Colors:&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$nick</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">keys</span> <span style="color: #0000ff;">%saved_colors</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      Irssi<span style="color: #339933;">::</span><span style="color: #000066;">print</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">chr</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">&quot;$saved_colors{$nick}$nick&quot;</span> <span style="color: #339933;">.</span>
		    <span style="color: #000066;">chr</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">&quot;1 ($saved_colors{$nick})&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$op</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">&quot;preview&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Irssi<span style="color: #339933;">::</span><span style="color: #000066;">print</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Available colors:&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$i</span> <span style="color: #009900;">&#40;</span>2<span style="color: #339933;">..</span>14<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      Irssi<span style="color: #339933;">::</span><span style="color: #000066;">print</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">chr</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">&quot;$i&quot;</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">&quot;Color #$i&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Hier wird für irssi ein Befehl <code>/color</code> definiert, den man mit folgendem ersten Argumenten bzw. weiteren Befehlen aufrufen kann:</p>
<ul>
<li>save</li>
<li>set</li>
<li>clear</li>
<li>list</li>
<li>preview</li>
</ul>
<p>Was kann man nun mit den einzelnen Befehlen anstellen? Ich gebe mal jeweils ein Beispiel mit der dazugehörigen Ausgabe, allerdings ohne Farben.</p>
<p><code style="background-color: #000000; color: #AAAAAA;">/color save</code> gibt nichts weiter aus, speichert aber die mit <em>set</em> festgelegten Farben in der Datei <code>~/.irssi/saved_colors</code>. Diese gespeicherten Farbzuordnungen werden beim Neustart von irssi bzw. Neuladen des Skripts wieder eingelesen.</p>
<p><code style="background-color: #000000; color: #AAAAAA;">/color set foo 7</code> gibt ebenfalls nichts aus, legt aber eine Zuordnung der Farbe 7 zum Nickname <em>foo</em> fest. 7 ist in dem Fall das, was in PuTTY gelb und auf der Konsole braun, in anderen Terminals eher orange aussieht. (Mehr zu diesem verwirrenden Thema <a href="http://en.wikipedia.org/wiki/Color_Graphics_Adapter">in der englischen Wikipedia</a>.)</p>
<p><code style="background-color: #000000; color: #AAAAAA;">/color clear foo</code> löscht die gesetzte Farbe für <em>foo</em> wieder, gibt aber ebenfalls keine Statusausgabe zurück. Interessant werden dann die letzten beiden Funktionen.</p>
<p><code style="background-color: #000000; color: #AAAAAA;">/color list</code> zeigt die aktuell gesetzten Zuordnungen in einer Liste an, bei mir sieht das derzeit so aus, die Namen sind in den Farben, wie sie auch im Chat auftauchen, die Zahlen dahinter sind erst bei dem Kopieren aus der Konsole zum Vorschein gekommen, geben aber die Farben wieder:</p>
<pre style="background-color: #000000; color: #AAAAAA;">
Mo|23:06:25 -!- Irssi: Saved Colors:
Mo|23:06:25 -!- Irssi: <span style="color: #55FF55;">An-Tet</span> (9)
Mo|23:06:25 -!- Irssi: <span style="color: #AA5500;">Fabian</span> (7)
Mo|23:06:25 -!- Irssi: <span style="color: #5555FF;">Ge0rG</span> (12)
Mo|23:06:25 -!- Irssi: <span style="color: #FF55FF;">IseeU</span> (13)
Mo|23:06:25 -!- Irssi: <span style="color: #00AA00;">Mupfy</span> (3)
Mo|23:06:25 -!- Irssi: <span style="color: #00AA00;">priority</span> (3)
Mo|23:06:25 -!- Irssi: <span style="color: #FF5555;">schlotze</span> (4)
Mo|23:06:25 -!- Irssi: <span style="color: #5555FF;">StarWarsFan</span> (12)
Mo|23:06:25 -!- Irssi: <span style="color: #00AA00;">StefanG</span> (3)
Mo|23:06:25 -!- Irssi: <span style="color: #FF55FF;">SvenG</span> (13)
Mo|23:06:25 -!- Irssi: <span style="color: #5555FF;">thndr</span> (12)
Mo|23:06:25 -!- Irssi: <span style="color: #5555FF;">thunder</span> (12)
Mo|23:06:25 -!- Irssi: <span style="color: #AA00AA;">zozi</span> (6)
Mo|23:06:25 -!- Irssi: <span style="color: #AA5500;">_MrTux_</span> (7)
Mo|23:06:25 -!- Irssi: <span style="color: #AA5500;">_Tux_</span> (7)
</pre>
<p>Last not least kann man sich mit <code style="background-color: #000000; color: #AAAAAA;">/color preview</code> auch noch eine Liste der verfügbaren Farben ausgeben lassen:</p>
<pre style="background-color: #000000; color: #AAAAAA;">
Mo|23:19:39 -!- Irssi: Available colors:
Mo|23:19:39 -!- Irssi: <span style="color: #0000AA;">Color #2</span>
Mo|23:19:39 -!- Irssi: <span style="color: #00AA00;">Color #3</span>
Mo|23:19:39 -!- Irssi: <span style="color: #FF5555;">Color #4</span>
Mo|23:19:39 -!- Irssi: <span style="color: #AA0000;">Color #5</span>
Mo|23:19:39 -!- Irssi: <span style="color: #AA00AA;">Color #6</span>
Mo|23:19:39 -!- Irssi: <span style="color: #AA5500;">Color #7</span>
Mo|23:19:39 -!- Irssi: <span style="color: #FFFF55;">Color #8</span>
Mo|23:19:39 -!- Irssi: <span style="color: #55FF55;">Color #9</span>
Mo|23:19:39 -!- Irssi: <span style="color: #00AAAA;">Color #10</span>
Mo|23:19:39 -!- Irssi: <span style="color: #55FFFF;">Color #11</span>
Mo|23:19:39 -!- Irssi: <span style="color: #5555FF;">Color #12</span>
Mo|23:19:39 -!- Irssi: <span style="color: #FF55FF;">Color #13</span>
Mo|23:19:39 -!- Irssi: <span style="color: #555555;">Color #14</span>
</pre>
<p>Alles in allem eine sehr praktische Erweiterung für irssi, wenn man weiß, wie man sie bedienen muss. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.antiblau.de/2009/01/26/farbige-nicknames-in-irssi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Keys für Upgrade auf WordPress 2.6</title>
		<link>http://blog.antiblau.de/2008/07/16/keys-fuer-upgrade-auf-wordpress-26/</link>
		<comments>http://blog.antiblau.de/2008/07/16/keys-fuer-upgrade-auf-wordpress-26/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 16:52:27 +0000</pubDate>
		<dc:creator>LeSpocky</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.antiblau.de/?p=108</guid>
		<description><![CDATA[Gestern kam mal wieder ein neues Update für WordPress. Wir setzen hier die DE-Edition ein und da gibt es auch eine detaillierte Anleitung zum Upgrade. Dort wird einem verraten, dass es für WordPress 2.6 neue Variablen in der Datei wp-config.php gibt. Der entsprechende Abschnitt in der wp-config-sample.php sieht so aus:

// Ändere jeden SECRET_KEY in eine [...]]]></description>
			<content:encoded><![CDATA[<p>Gestern kam mal wieder ein neues Update für WordPress. Wir setzen hier die <a href="http://blog.wordpress-deutschland.org/2008/07/15/wordpress-26-de-edition.html">DE-Edition</a> ein und da gibt es auch eine detaillierte <a href="http://doku.wordpress-deutschland.org/Upgrade">Anleitung zum Upgrade</a>. Dort wird einem verraten, dass es für WordPress 2.6 neue Variablen in der Datei <code>wp-config.php</code> gibt. Der entsprechende Abschnitt in der <code>wp-config-sample.php</code> sieht so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Ändere jeden SECRET_KEY in eine beliebiege, möglichst einzigartige Phrase. Du brauchst dich später</span>
<span style="color: #666666; font-style: italic;">// nicht mehr daran erinnern, also mache sie am besten möglichst lang und kompliziert.</span>
<span style="color: #666666; font-style: italic;">// Auf der Seite https://www.grc.com/passwords.htm kannst du dir einen Ausdruck generieren lassen.</span>
<span style="color: #666666; font-style: italic;">// Bitte trage für jeden SECRET_KEY eine eigene Phrase ein.</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'AUTH_KEY'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'put your unique phrase here'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Trage hier eine beliebige, möglichst zufällige Phrase ein.</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SECURE_AUTH_KEY'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'put your unique phrase here'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Trage hier eine beliebige, möglichst zufällige Phrase ein.</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'LOGGED_IN_KEY'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'put your unique phrase here'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Trage hier eine beliebige, möglichst zufällige Phrase ein.</span></pre></div></div>

<p>Jetzt ist da eine Seite angegeben, auf der man sich diese Keys erzeugen lassen kann. Das ist für den DAU ganz nett, aber schrieb nicht <a href="http://blog.fefe.de/?ts=b68858c8">fefe</a> gerade die Tage:</p>
<blockquote><p>Man sollte denken, niemand könnte je so unglaublich dämlich sein, sich einen Krypto-Schlüssel von jemand anderem generieren zu lassen</p></blockquote>
<p>Glücklicherweise gibt es ja noch mehr Möglichkeiten zufällige Zeichenketten zu erzeugen. Eine davon habe ich vor einigen Monaten im Beitrag <a href="http://blog.antiblau.de/2008/02/06/kleiner-passwortgenerator-in-perl/">Kleiner Passwortgenerator in Perl</a> vorgestellt. Was der Beitrag verschweigt: Ich hatte wenige Tage später noch eine kleine Anpassung an dem Skript vorgenommen, die es erlaubt, beim Aufruf die Anzahl der zurückzugebenden Zeichen als Parameter zu übergeben. So war es ein leichtes die nötigen Keys für die Konfigurationsdatei von WordPress zu generieren:</p>
<p><code>perl genpasswd.pl 64</code></p>
<p>Das veränderte Skript ist jetzt übrigens auch über <a href="http://tools.penguineering.com/trac/browser/trunk/genpasswd/genpasswd.pl">Penguineering Tools</a> abrufbar.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.antiblau.de/2008/07/16/keys-fuer-upgrade-auf-wordpress-26/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>irssi-Hilight mit Jabber</title>
		<link>http://blog.antiblau.de/2008/07/10/irssi-hilight-mit-jabber/</link>
		<comments>http://blog.antiblau.de/2008/07/10/irssi-hilight-mit-jabber/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 21:08:11 +0000</pubDate>
		<dc:creator>Tux</dc:creator>
				<category><![CDATA[CLI]]></category>
		<category><![CDATA[IRC]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Kommunikation]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.antiblau.de/?p=103</guid>
		<description><![CDATA[Seit einigen Jahren läuft in meiner Screen-Session neben ICQ und anderen Tools auch ein irssi, um mich mit der Welt des IRC zu verbinden. In den meisten Channels bin ich einfach nur anwesend, gelegentlich spricht mich dann aber doch jemand an. Dank hilight im irssi wird man darüber ja eigentlich informiert. Nur leider schaue ich [...]]]></description>
			<content:encoded><![CDATA[<p>Seit einigen Jahren läuft in meiner Screen-Session neben ICQ und anderen Tools auch ein <a href="http://irssi.org" target="_blank">irssi</a>, um mich mit der Welt des IRC zu verbinden. In den meisten Channels bin ich einfach nur anwesend, gelegentlich spricht mich dann aber doch jemand an. Dank hilight im irssi wird man darüber ja eigentlich informiert. Nur leider schaue ich viel zu selten in das irssi-Fenster, um das dann letztendlich auch zu sehen. (Ja, screen informiert ueber Pings in anderen Fenstern, aber da guck ich doch erst Recht nicht hin &#8230;)</p>
<p>Da irssi eine schicke <a href="http://irssi.org/documentation/perl" target="_blank">Perl-API</a> hat, liegt es doch nahe, ein Perl-Script zu schreiben, mit dessen Hilfe ich mich anderweitig informieren lassen kann. Sehr nahe liegt da der Instant Messenger, der sowieso immer läuft, wenn ich am Rechner sitze &#8211; konkret Jabber.</p>
<p>Mit dem Perl-Modul <a href="http://search.cpan.org/~reatmon/Net-Jabber-2.0/lib/Net/Jabber.pm" target="_self">Net::Jabber</a> ist das alles kein Problem (abgesehen von den lückenhaften Dokumentationen, insbesondere in der irssi API) und so gibt es nun das Script <a href="http://tools.penguineering.com/trac/browser/trunk/irssi/irssi2jabber.pl">irssi2jabber.pl</a>, das als irssi-Script geladen werden kann und mir nun bei jedem Hilight oder jeder privaten Nachricht, die auftreten, während ich /away bin, eine Nachricht an meinen Jabber-Account schicken.</p>
<p>Das Script ist etwas kommentiert, die notwendigen Einstellungen stehen ganz am Anfang und müssen in die irssi-Config. Unter der <a href="http://www.gnu.org/licenses/gpl-3.0.html">GPLv3</a> darf es jeder weiterverwenden, natürlich nehme ich auch Patches an, die, wenn sie nützlich sind, eingepflegt werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.antiblau.de/2008/07/10/irssi-hilight-mit-jabber/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Kleiner Passwortgenerator in Perl</title>
		<link>http://blog.antiblau.de/2008/02/06/kleiner-passwortgenerator-in-perl/</link>
		<comments>http://blog.antiblau.de/2008/02/06/kleiner-passwortgenerator-in-perl/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 14:28:49 +0000</pubDate>
		<dc:creator>LeSpocky</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Sicherheit]]></category>

		<guid isPermaLink="false">http://blog.antiblau.de/2008/02/06/kleiner-passwortgenerator-in-perl/</guid>
		<description><![CDATA[Aus der Reihe »Schnelles Kamel-Gehacktes« heute der Beitrag, wie man quick&#8217;n'dirty einen Passwortgenerator in Perl schreibt. Anforderungen vorher: 8 Zeichen, weil viele Linuxe sowieso dahinter abhacken; nur Zeichen, die in den ersten 7 Bit der ASCII-Tabelle stehen und dann auch nur welche, die man direkt oder mit Umschalttaste (Shift) eingeben kann, nichts wozu man AltGr [...]]]></description>
			<content:encoded><![CDATA[<p>Aus der Reihe »Schnelles Kamel-Gehacktes« heute der Beitrag, wie man quick&#8217;n'dirty einen Passwortgenerator in Perl schreibt. Anforderungen vorher: 8 Zeichen, weil viele Linuxe sowieso dahinter abhacken; nur Zeichen, die in den ersten 7 Bit der ASCII-Tabelle stehen und dann auch nur welche, die man direkt oder mit Umschalttaste (Shift) eingeben kann, nichts wozu man <em>AltGr</em> oder ähnliches bräuchte. Dazu braucht man eine <a href="http://de.wikipedia.org/wiki/Ascii#Zusammensetzung">ASCII-Tabelle</a> und dann geht&#8217;s los:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl -w</span>
<span style="color: #666666; font-style: italic;"># $Id: gen_passwd.pl 111 2008-02-06 13:45:24Z alex $</span>
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@allowed_chars</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># ASCII von 0x21 bis 0x3f</span>
<span style="color: #666666; font-style: italic;"># das sind die meisten Sonderzeichen und die Ziffern</span>
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">=</span>0x21<span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">&lt;=</span>0x3f<span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">push</span> <span style="color: #0000ff;">@allowed_chars</span><span style="color: #339933;">,</span> <span style="color: #000066;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># ASCII von A bis Z</span>
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">=</span>0x41<span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">&lt;=</span>0x5a<span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">push</span> <span style="color: #0000ff;">@allowed_chars</span><span style="color: #339933;">,</span> <span style="color: #000066;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># ASCII von a bis z</span>
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">=</span>0x61<span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">&lt;=</span>0x7a<span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">push</span> <span style="color: #0000ff;">@allowed_chars</span><span style="color: #339933;">,</span> <span style="color: #000066;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066;">push</span> <span style="color: #0000ff;">@allowed_chars</span><span style="color: #339933;">,</span> <span style="color: #000066;">chr</span><span style="color: #009900;">&#40;</span>0x5f<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># '_'</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$char_count</span> <span style="color: #339933;">=</span> <span style="color: #000066;">scalar</span> <span style="color: #0000ff;">@allowed_chars</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">print</span> <span style="color: #0000ff;">$allowed_chars</span><span style="color: #009900;">&#91;</span><span style="color: #000066;">int</span> <span style="color: #000066;">rand</span> <span style="color: #0000ff;">$char_count</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Diese Passwörter eignen sich gut als initiale Passwörter für neue Nutzer. Die Nutzer sollten sodann aufgefordert werden, sich mit <em>passwd</em> ein neues zu setzen. Da so ein zufälliges Passwort mit Zahlen und Sonderzeichen sehr schwer zu merken ist, werden sie dieser Aufforderung sicher nachkommen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.antiblau.de/2008/02/06/kleiner-passwortgenerator-in-perl/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Binary H(e)art</title>
		<link>http://blog.antiblau.de/2007/11/28/binary-heart/</link>
		<comments>http://blog.antiblau.de/2007/11/28/binary-heart/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 00:48:08 +0000</pubDate>
		<dc:creator>LeSpocky</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Lustiges]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://blog.antiblau.de/2007/11/28/binary-heart/</guid>
		<description><![CDATA[ Heute schrieb die ettercat einen Link auf nebenstehenden Comic von xkcd.com ins IRC. Die Seite hat mich schon des öfteren mit wirklich lustigen Comics begeistert, zumal einige nur mit entsprechendem Geek-Hintergrundwissen wirklich lustig sind. Nummer 99 – »binary heart« – trifft vom Untertitel der Seite (»A webcomic of romance,
sarcasm, math, and language.«) klar den [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://xkcd.com/99/' title='binary heart'><img class="left" src='http://blog.antiblau.de/wp-content/uploads/binary_heart.thumbnail.jpg' alt='binary heart' /></a> Heute schrieb die ettercat einen Link auf nebenstehenden Comic von <a href="http://xkcd.com/">xkcd.com</a> ins IRC. Die Seite hat mich schon des öfteren mit wirklich lustigen Comics begeistert, zumal einige nur mit entsprechendem Geek-Hintergrundwissen wirklich lustig sind. Nummer 99 – »binary heart« – trifft vom Untertitel der Seite (»A webcomic of romance,<br />
sarcasm, math, and language.«) klar den romantischen Teil. Aber ganz ehrlich, seid Ihr nicht auch total neugierig, ob sich hinter den Nullen und Einsen im Bild nicht noch eine zusätzliche Botschaft verbirgt? Ich war es jedenfalls und da nur selbst dekodieren schlau macht, hab ich frei nach dem Perl-Motto »Es gibt mehr als einen Weg, etwas zu tun« die Zeichen einzeln abgetippt und <a href='http://blog.antiblau.de/wp-content/uploads/binary.pl' title='ein kleines Skript'>ein kleines Skript</a> geschrieben.</p>
<p>Hart (siehe Titel ;-)) war da dran einerseits das Abtippen vom Comic – man verrutscht schon sehr leicht in Zeile und Spalte – und andererseits um Mitternacht die eingerosteten Perl-Kenntnisse zu reaktivieren. Wer sich gern selbst an einem Progrämmchen in beliebiger Sprache probieren will, kann sich die <a href='http://blog.antiblau.de/wp-content/uploads/xkcd99_bin.txt' title='xkcd99 binär codierte Nachricht'>binär codierte Nachricht</a> runterladen, die Textdatei, wo ich mal die Einsen und Nullen abgetippt habe.</p>
<p>Ach und für die ganz Neugierigen oder zur Kontrolle des eigenen Programms hier noch die Auflösung:</p>
<blockquote><p>iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv</p></blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.antiblau.de/2007/11/28/binary-heart/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Fangen und Werfen</title>
		<link>http://blog.antiblau.de/2007/10/11/fangen-und-werfen/</link>
		<comments>http://blog.antiblau.de/2007/10/11/fangen-und-werfen/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 15:13:58 +0000</pubDate>
		<dc:creator>LeSpocky</dc:creator>
				<category><![CDATA[IMPULS]]></category>
		<category><![CDATA[Lustiges]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://blog.antiblau.de/2007/10/11/fangen-und-werfen/</guid>
		<description><![CDATA[Als heute im Büro zwischenzeitlich der Subversion-Server nicht erreichbar war, so dass ich meinen Commit nicht machen konnte, unternahm ich einen Spaziergang im Haus zum verantwortlichen Admin. Der war zwar nicht da, aber im gleichen Büro unterhielt ich mich dann mit einem großen Fan von Python. Ich habe dann mal bei Wikipedia nachgelesen und bin [...]]]></description>
			<content:encoded><![CDATA[<p>Als heute im Büro zwischenzeitlich der Subversion-Server nicht erreichbar war, so dass ich meinen Commit nicht machen konnte, unternahm ich einen Spaziergang im Haus zum verantwortlichen Admin. Der war zwar nicht da, aber im gleichen Büro unterhielt ich mich dann mit einem großen Fan von Python. Ich habe dann mal bei <a href="http://de.wikipedia.org/wiki/Python_(Programmiersprache)">Wikipedia</a> nachgelesen und bin über folgenden Satz gestolpert:</p>
<blockquote><p>
Python unterstützt (und nutzt ausgiebig) die <a href="http://de.wikipedia.org/wiki/Ausnahmebehandlung">Ausnahmebehandlung</a> (<a href="http://de.wikipedia.org/wiki/Englische_Sprache">engl.</a> <em>exception handling</em>) als ein Mittel, um Fehlerbedingungen zu testen. Dies ist so weit in Python integriert, dass es sogar möglich ist, <a href="http://de.wikipedia.org/wiki/Syntaxfehler">Syntaxfehler</a> abzufangen und zur Laufzeit zu behandeln.
</p></blockquote>
<p>Das fand ich schon ziemlich krass. Das Programm kann also stellenweise syntaktisch fehlerhaft geschrieben sein, der Compiler meckert nicht und ich kann das selbst abfangen – coole Sache. Weil ich das ganze sowieso noch für die Arbeit mit .NET und C# brauche und mich das auch für den Perl-Parser für <a href="http://impuls.sourceforge.net">IMPULS</a> interessiert, habe ich mich dann mal ganz allgemein mit Exceptions beschäftigt. Richtig schmunzeln musste ich als alter Handballer über die verwendeten Begriffe. Die Exception wird geworfen und irgendwo sitzt ein Catch-Block, der die irgendwann auffängt. Bildlich vorgestellt kann ich da beim Schreiben dieses Satzes gerade immernoch lachen.<br />
<img src='http://blog.antiblau.de/wp-content/happy.gif' alt='Smiley »Happy«' /></p>
<p>Meine Glaskoogle hat mir dann für Exceptionhandling mit Perl die Seite <a href="http://www.perl.com/pub/a/2002/11/14/exception.html">Object Oriented Exception Handling in Perl</a> ausgespuckt, wo das alles schön erklärt ist. Jetzt ratet doch mal, was bei der Ausführung des folgenden leicht abgewandelten Beispiels von jener Seite passiert:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#/usr/bin/perl -w</span>
<span style="color: #000000; font-weight: bold;">use</span> Error <span style="color: #000066;">qw</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">:</span>try<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
try <span style="color: #009900;">&#123;</span>
	some code<span style="color: #339933;">;</span>
	code that might throw an exception<span style="color: #339933;">;</span>
	more code<span style="color: #339933;">;</span>
	<span style="color: #000066;">return</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
catch Error with <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ex</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;"># Get hold of the exception object</span>
	<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;handle the exception<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
finally <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;do some more cleanup<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;"># &lt; -- Remember the semicolon</span></pre></div></div>

<p><img src='http://blog.antiblau.de/wp-content/lol2.gif' alt='Smiley »LOL«' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.antiblau.de/2007/10/11/fangen-und-werfen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
