<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10germanfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title>Perl HowTo</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/" />
    
    <id>tag:perl-howto.de,2008-04-29://1</id>
    <updated>2013-04-02T06:46:55Z</updated>
    <subtitle>Getting Things Done with Perl. Tipps, Tricks und Anleitungen. </subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.38</generator>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/PerlHowto" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="perlhowto" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/content?lg=de&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://us.i1.yimg.com/us.yimg.com/i/de/my/addtomyyahoo4.gif">Subscribe with Mein Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/PerlHowto" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FPerlHowto" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><entry>
    <title>Linksammlung: wxPerl</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2013/04/linksammlung-wxperl.html" />
    <id>tag:perl-howto.de,2013://1.239</id>

    <published>2013-04-02T06:45:00Z</published>
    <updated>2013-04-02T06:46:55Z</updated>

    <summary><![CDATA[ "Kann man mit Perl plattformunabh&auml;ngig GUIs schreiben, die gut aussehen?" ist eine typische Frage, die immer wieder am Perlstand auf den verschiedenen Open-Source Treffen, z.B. Chemnitzer Linuxtage, gestellt wird. Hier noch ein Mal zum Nachlesen (und als SEO), was...]]></summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="101" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gui" label="GUI" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ide" label="ide" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
"Kann man mit Perl plattformunabh&amp;auml;ngig GUIs schreiben, die gut aussehen?" ist eine typische Frage, die immer wieder am Perlstand auf den verschiedenen Open-Source Treffen, z.B. &lt;a href="http://chemnitzer.linux-tage.de/2013/live/113"&gt;Chemnitzer Linuxtage&lt;/a&gt;, gestellt wird.
&lt;/p&gt;
&lt;p&gt;
Hier noch ein Mal zum Nachlesen (und als &lt;a href="http://de.wikipedia.org/wiki/Suchmaschinenoptimierung"&gt;SEO&lt;/a&gt;), was den Besuchern als Antwort pr&amp;auml;sentiert wird.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;wxWidgets f&amp;uuml;r Perl: wxPerl&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://www.wxperl.it/"&gt;wxPerl&lt;/a&gt; nutzt die &lt;a href="http://www.wxwidgets.org/"&gt;wxWidgets&lt;/a&gt; zur Erzeugung &lt;b&gt;betriebsystemunabh&amp;auml;ngiger&lt;/b&gt; &lt;a href="http://de.wikipedia.org/wiki/Grafische_Benutzeroberfl%C3%A4che"&gt;graphischer Benutzer-Oberfl&amp;auml;chen&lt;/a&gt; (GUI).
&lt;/p&gt;
&lt;p&gt;
Die &lt;a href="http://www.wxwidgets.org/"&gt;wxWidgets&lt;/a&gt; bieten einen sehr grossen Funktionsumfang und &lt;b&gt;natives Look and Feel&lt;/b&gt; auf jeder Plattform, d.h. unter Windows sieht das Programm wie ein richtiges Windows-Programm aus und unter Linux wie ein richtiges Linux-Programm.
&lt;/p&gt;
&lt;p&gt;
Das kann man sich z.B. bei den Editoren &lt;a href="http://padre.perlide.org/screenshots.html"&gt;Padre, the Perl IDE&lt;/a&gt; oder &lt;a href="http://kephra.sourceforge.net/site/en/screencapture.shtml"&gt;Kephra&lt;/a&gt;, die &lt;a href="http://www.wxperl.it/"&gt;wxPerl&lt;/a&gt; nutzen, genauer ansehen.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Linksammlung wxPerl&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.wxperl.it/"&gt;wxPerl Homepage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.wxwidgets.org/"&gt;wxWidgets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wiki.perl-community.de/Wissensbasis/WxPerl"&gt;Perl Community: WxPerl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wiki.perl-community.de/Wissensbasis/WxPerlTutorial"&gt;Perl Community: WxPerl Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wiki.perl-community.de/Wissensbasis/WxPerlTafel"&gt;Perl Community: WxPerlTafel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lichtkind.de/vortrag/"&gt;Vortr&amp;auml;ge von Herbert "lichtkind" Breunung zu wxPerl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://learnperl.scratchcomputing.com/tutorials/wxperl/"&gt;Learn Perl - About wxPerl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jmlynesjr/wxPerl-wxBook-Examples"&gt;wxPerl-wxBook-Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/WxPerl"&gt;WxPerl - Wikipedia, the free encyclopedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=pZ4eOrhq9mw"&gt;Phoenix PerlMongers: Writing GUI Applications with wxPerl and XRC - Part 1 of 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=ELUwVoOaNEk"&gt;Phoenix PerlMongers: Writing GUI Applications with wxPerl and XRC - Part 2 of 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=JF50RuchZY0"&gt;Phoenix PerlMongers: Writing GUI Applications with wxPerl and XRC - Part 3 of 4 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=AMKdVbdnz6k"&gt;Phoenix PerlMongers: Writing GUI Applications with wxPerl and XRC - Part 4 of 4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Weitere interessante Links bitte einfach als Kommentar hinzuf&amp;uuml;gen. Danke.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Siehe auch:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://perldoc.perl.org/5.12.3/perlfaq3.html#How-can-I-write-a-GUI-%28X,-Tk,-Gtk,-etc.%29-in-Perl?"&gt;perlfaq3 - How can I write a GUI (X, Tk, Gtk, etc.) in Perl?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://padre.perlide.org/"&gt;Padre, the Perl IDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kephra.sourceforge.net/site/en/home_news.shtml"&gt;Kephra Editor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/0dEWywvmbwQ" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>FLOSS-Weekly Episode 246: Interview mit Jeffrey Thalhammer - Pinto</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2013/03/floss-weekly-episode-246-interview-mit-jeffrey-thalhammer---pinto.html" />
    <id>tag:perl-howto.de,2013://1.238</id>

    <published>2013-03-30T09:55:01Z</published>
    <updated>2013-03-30T09:55:40Z</updated>

    <summary> Pinto ist, vereinfacht gesagt, eine Software, mit der man sein eigenes CPAN Archiv mit definierten Versionen und Versionskontrolle erstellen und verwalten kann. Twit.tv hat ein Interview mit Jeffrey Thalhammer, dem Erfinder von Pinto (und Perl::Critic) veröffentlicht. Das Interview führt...</summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="Talks" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cpan" label="cpan" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="dependencies" label="dependencies" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="deployment" label="deployment" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
&lt;a href="http://search.cpan.org/perldoc?Pinto"&gt;Pinto&lt;/a&gt; ist, vereinfacht gesagt, eine Software,  mit der man sein eigenes &lt;a href="http://www.cpan.org/"&gt;CPAN &lt;/a&gt; Archiv mit definierten Versionen und Versionskontrolle erstellen und verwalten kann.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twit.tv/"&gt;Twit.tv&lt;/a&gt; hat ein &lt;a href="http://twit.tv/show/floss-weekly/246"&gt;Interview&lt;/a&gt; mit Jeffrey Thalhammer, dem Erfinder von &lt;a href="http://search.cpan.org/perldoc?Pinto"&gt;Pinto&lt;/a&gt;  (und  &lt;a href="http://search.cpan.org/perldoc?Perl::Critic"&gt;Perl::Critic&lt;/a&gt;) veröffentlicht.
&lt;/p&gt;
&lt;p&gt;
Das Interview führt &lt;a href="http://www.stonehenge.com/merlyn/"&gt;Randal Schwartz&lt;/a&gt; zusammen mit &lt;a href="http://thesourceshow.org/"&gt;Aaron Newcomb&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;


&lt;h2&gt;Enjoy!&lt;/h2&gt;
&lt;iframe src="http://twit.tv/embed/12727" width="640" height="320" scrolling="no" marginwidth="0" marginheight="0" hspace="0" align="middle" frameborder="0"&gt;&lt;/iframe&gt;


&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Siehe auch:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?Pinto"&gt;Pinto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.perl.org/users/jeff_thalhammer1/2012/09/your-personal-cpan-in-the-sky.html"&gt;Your Personal CPAN In The Sky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.perladvent.org/2012/2012-12-17.html"&gt;Perl Advent Calendar 2012 - Santa Has Dependencies Too&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="Dependency Management With Pinto"&gt;Dependency Management With Pinto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perl-magazin.de/index.cgi?action=issue;sub=show;issue=26;"&gt; Perl-Magazin $foo - Frühjahr 2012&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stratopan.com/"&gt;Perl Module Hosting In The Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perl-howto.de/2011/11/flossweekly-episode-189-interview-mit-jeffrey-thalhammer-perlcritic.html"&gt;FLOSS-Weekly Episode 189: Interview mit Jeffrey Thalhammer - Perl::Critic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Via:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://perlweekly.com/archive/87.html"&gt;Perl Weekly #87&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perl-nachrichten.de/index.cgi/details/1154"&gt;Perl Nachrichten: FLOSS.tv: Interview zum Thema Pinto&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;



        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/V-ZbeIi3lCo" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>String::Dump - Was genau ist in einem String enthalten</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2013/02/stringdump---was-genau-ist-in-einem-string-enthalten.html" />
    <id>tag:perl-howto.de,2013://1.237</id>

    <published>2013-02-28T10:45:00Z</published>
    <updated>2013-03-31T07:37:03Z</updated>

    <summary> Manchmal steckt in einem String nicht das drin, was man erwartet, z.B. nicht druckbare oder UTF Zeichen. String::Dump - Dump strings of characters (or bytes) for printing and debugging von Nick Patch vereinfacht das Debuggen solcher Probleme erheblich. Bei...</summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="101" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="debugging" label="debugging" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
Manchmal steckt in einem String nicht das drin, was man erwartet, z.B. nicht druckbare oder UTF Zeichen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://search.cpan.org/perldoc?String%3A%3ADump"&gt;String::Dump - Dump strings of characters (or bytes) for printing and debugging&lt;/a&gt; von &lt;a href="http://search.cpan.org/~patch/"&gt;Nick Patch&lt;/a&gt; vereinfacht das Debuggen solcher Probleme erheblich.
&lt;/p&gt;
&lt;p&gt;
Bei Byte-Strings wird jedes Byte, bei  &lt;a href="http://perldoc.perl.org/perlunicode.html"&gt;Unicode-Strings&lt;/a&gt; wird jeder &lt;a href="http://de.wikipedia.org/wiki/Unicode#Codepunkte_und_Zeichen"&gt;Codepoint&lt;/a&gt; ausgegeben.  
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://search.cpan.org/perldoc?String%3A%3ADump"&gt;String::Dump&lt;/a&gt; stellt &lt;b&gt;sechs&lt;/b&gt; unterschiedliche Ausgabeformate &amp;uuml;ber folgende Funktionen zur Verf&amp;uuml;gung.
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;dump_hex($string): Hexadecimal (base 16) mode&lt;/li&gt;
 &lt;li&gt;dump_dec($string): Decimal (base 10) mode&lt;/li&gt;
 &lt;li&gt;dump_oct($string): Octal (base 8) mode&lt;/li&gt;
 &lt;li&gt;dump_bin($string): Binary (base 2) mode&lt;/li&gt;
 &lt;li&gt;dump_names($string): Unicode character name mode&lt;/li&gt;
 &lt;li&gt;dump_codes($string): Unicode code point mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Freunde der Kommandozeile sollten einen Blick auf mitgelieferte Tool &lt;a href="http://search.cpan.org/perldoc?dumpstr"&gt;dumpstr&lt;/a&gt; werfen.
&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;Beispiel&lt;/h2&gt;
&lt;p&gt;
Statt vieler Worte ein einfaches Beispiel:
&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;utf8&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;String::Dump&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;qw( :all )&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$string&lt;/span&gt; = &lt;span style="color: #CD5555;"&gt;&amp;#39;F&amp;#248;&amp;#248; B&amp;#257;r&amp;#39;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #00688B;"&gt;dump_hex&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$string&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #00688B;"&gt;dump_dec&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$string&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #00688B;"&gt;dump_oct&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$string&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #00688B;"&gt;dump_bin&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$string&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #00688B;"&gt;dump_names&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$string&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #00688B;"&gt;dump_codes&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$string&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
Das Programm erzeugt folgende Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
46 F8 F8 20 42 101 72

70 248 248 32 66 257 114

106 370 370 40 102 401 162

1000110 11111000 11111000 100000 1000010 100000001 1110010

LATIN CAPITAL LETTER F, LATIN SMALL LETTER O WITH STROKE, LATIN SMALL LETTER O WITH STROKE, SPACE, LATIN CAPITAL LETTER B, LATIN SMALL LETTER A WITH MACRON, LATIN SMALL LETTER R

U+0046 U+00F8 U+00F8 U+0020 U+0042 U+0101 U+0072
&lt;/pre&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;Siehe auch:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?String%3A%3ADump"&gt;String::Dump&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?dumpstr"&gt;dumpstr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?String%3A%3ADump%3A%3ADebugging"&gt;String::Dump::Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?Template%3A%3APlugin%3A%3AStringDump"&gt;Template::Plugin::StringDump&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perldoc.perl.org/perlunicode.html"&gt;perlunicode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?Data%3A%3AHexDump"&gt;Data::HexDump&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?Data%3A%3AHexdumper"&gt;Data::Hexdumper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/ju_POIRk7xA" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>CSS::Compressor - Schnelle und effiziente CSS Komprimierung</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2012/12/csscompressor---schnelle-und-effiziente-css-komprimierung.html" />
    <id>tag:perl-howto.de,2012://1.236</id>

    <published>2012-12-27T10:51:14Z</published>
    <updated>2012-12-27T10:52:00Z</updated>

    <summary><![CDATA[ CSS::Compressor - Perl extension for CSS minification, ein Perl-Port des bekannten Yahoo YUICompressor, bietet eine effiziente Kompression von CSS-Dateien und startet sehr viel schneller als sein Vorbild. Das Modul CSS::Compressor wurde eigentlich f&uuml;r den internen Gebrauch von Booking.com entwickelt...]]></summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="CGI" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="webdev" label="webdev" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
&lt;a href="https://metacpan.org/module/CSS%3A%3ACompressor"&gt;CSS::Compressor - Perl extension for CSS minification&lt;/a&gt;, ein Perl-Port des bekannten &lt;a href="http://developer.yahoo.com/yui/compressor/"&gt;Yahoo YUICompressor&lt;/a&gt;, bietet eine effiziente Kompression von CSS-Dateien und startet sehr viel schneller als sein Vorbild.
&lt;/p&gt;
&lt;p&gt;
Das Modul &lt;a href="https://metacpan.org/module/CSS%3A%3ACompressor"&gt;CSS::Compressor&lt;/a&gt; wurde eigentlich f&amp;uuml;r den internen Gebrauch von &lt;a href="http://www.booking.com/"&gt;Booking.com&lt;/a&gt; &lt;a href="http://blog.booking.com/efficient-css-compression-in-perl.html"&gt;entwickelt&lt;/a&gt; und nun als Open Source Software ver&amp;ouml;ffentlicht.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Beispiel&lt;/h2&gt;

&lt;p&gt;
Das folgende Beispielprogramm nimmt Dateinamen auf der Kommandozeile &lt;a href="http://perldoc.perl.org/perlvar.html"&gt;entgegen&lt;/a&gt;, liest den Inhalt der CSS-Datei mit  &lt;a href="http://search.cpan.org/perldoc?File%3A%3ASlurp"&gt;File::Slurp&lt;/a&gt; in eine skalare Variable ein, komprimiert das CSS mit &lt;i&gt;css_compress()&lt;/i&gt; und schreibt das Ergebnis in eine neue Datei.
&lt;/p&gt;

&lt;pre&gt;
#!/usr/bin/perl 
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;CSS::Compressor&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;qw( css_compress )&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;File::Slurp&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;@css_files&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;@ARGV&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$css_file&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;@css_files&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$big&lt;/span&gt;      = &lt;span style="color: #00688B;"&gt;read_file&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$css_file&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$small&lt;/span&gt;    = &lt;span style="color: #000000;"&gt;css_compress&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$big&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$out_file&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;$css_file&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #00688B;"&gt;$out_file&lt;/span&gt;    =~ &lt;span style="color: #CD5555;"&gt;s#css$#min-css#is&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #00688B;"&gt;write_file&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$out_file&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$small&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
Aufruf/Verwendung:
&lt;/p&gt;
&lt;pre&gt;
$ chmod 755 css.pl
$ ./css.pl ./css_tests/*.css
&lt;/pre&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Geschwindigkeitsvergleich&lt;/h2&gt;
&lt;p&gt;
Die &lt;a href="http://blog.booking.com/efficient-css-compression-in-perl.html"&gt;angepriesene deutliche Geschwindigkeitsverbesserung&lt;/a&gt; kann unter Linux einfach mit &lt;a href="http://linux.die.net/man/1/time"&gt;Bordmitteln&lt;/a&gt; nachgepr&amp;uuml;ft werden:
&lt;/p&gt;
&lt;pre&gt;
$ time ./css.pl ./css_tests/*.css
$ time yui-compressor -o '.css$:-min.css' ./css_tests/*.css
&lt;/pre&gt;
&lt;p&gt;
Auf meinen Testservern (Ubuntu 12.04) l&amp;auml;uft &lt;a href="https://metacpan.org/module/CSS%3A%3ACompressor"&gt;CSS::Compressor&lt;/a&gt; 30 bis 40% schneller als &lt;a href="http://packages.ubuntu.com/de/precise/yui-compressor"&gt;YUICompressor&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Siehe auch:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://metacpan.org/module/CSS%3A%3ACompressor"&gt;CSS::Compressor - Perl extension for CSS minification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.booking.com/efficient-css-compression-in-perl.html"&gt;Efficient CSS Compression in Perl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metacpan.org/module/CSS::Packer"&gt;CSS::Packer - Another CSS minifier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://developer.yahoo.com/yui/compressor/"&gt;YUIcompressor project homepage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yui/yuicompressor"&gt;YUIcompressor source repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perl-howto.de/2009/05/ladezeit-von-websites-mit-javascriptminifier-verbessern.html"&gt;Ladezeit von Websites mit JavaScript::Minifier verbessern&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/EnZEa8Cvde0" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>Perl Advent(ures) 2012</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2012/12/perl-adventures-2012.html" />
    <id>tag:perl-howto.de,2012://1.234</id>

    <published>2012-12-02T20:15:00Z</published>
    <updated>2012-12-03T18:37:06Z</updated>

    <summary> Es ist wieder so weit - Perl Adventskalender 2012 sind online: Perl Advent Kalender Perl 6 Kalender PerlDancer Adventkalender Dann gibt auch noch sysadvent, ein Adventskalender für Sysadmins, der auch den ein oder anderen Beitrag mit Bezug auf Perl...</summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="101" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dancer" label="dancer" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="perl6" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
Es ist wieder so weit - Perl Adventskalender 2012 sind online:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.perladvent.org/2012/"&gt; Perl Advent Kalender&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perl6advent.wordpress.com/2012/12/01/perl-6-advent-calendar-2012-table-of-contents/"&gt;Perl 6 Kalender&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://advent.perldancer.org/2012"&gt; PerlDancer Adventkalender&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Dann gibt auch noch &lt;a href="http://sysadvent.blogspot.de/"&gt;sysadvent&lt;/a&gt;, ein Adventskalender für Sysadmins, der auch den ein oder anderen Beitrag mit Bezug auf Perl bietet. 
&lt;/p&gt;
&lt;h2&gt;Siehe auch:&lt;/h2&gt;
&lt;p&gt;
Perl-News: &lt;a href="http://perl-nachrichten.de/index.cgi/details/1130"&gt;Advent 2012 - viel Lesestoff&lt;/a&gt;
&lt;/p&gt;


        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/bUyi7zpcGzg" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>Algorithm::CheckDigits - Überprüfung von Nummerncodes</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2012/11/algorithmcheckdigits---uberprufung-von-nummerncodes.html" />
    <id>tag:perl-howto.de,2012://1.233</id>

    <published>2012-11-14T21:15:00Z</published>
    <updated>2012-11-14T21:16:43Z</updated>

    <summary><![CDATA[ Algorithm::CheckDigits - Perl extension to generate and test check digits von Mathias Weidner vereinfacht die &Uuml;berpr&uuml;fung von Nummerncodes, wie Umsatzsteuer-Identifikationsnummern, ISBNs, Betriebsnummern, Blutbeutel Eurocodes und zahlreichen mehr. Dabei bietet Algorithm::CheckDigits eine konsistente Schnittstelle zu allen Berechnungsmethoden an. Mit CheckDigits()...]]></summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="101" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
&lt;a href="http://search.cpan.org/perldoc?Algorithm%3A%3ACheckDigits"&gt;Algorithm::CheckDigits - Perl extension to generate and test check digits&lt;/a&gt; von 
&lt;a href="http://search.cpan.org/~mamawe/"&gt;Mathias Weidner&lt;/a&gt; vereinfacht die &amp;Uuml;berpr&amp;uuml;fung von Nummerncodes, wie &lt;a href="http://de.wikipedia.org/wiki/Umsatzsteuer-Identifikationsnummer"&gt;Umsatzsteuer-Identifikationsnummern&lt;/a&gt;, &lt;a href="http://de.wikipedia.org/wiki/Internationale_Standardbuchnummer"&gt;ISBNs&lt;/a&gt;, &lt;a href="http://de.wikipedia.org/wiki/Betriebsnummer"&gt;Betriebsnummern&lt;/a&gt;, &lt;a href="http://www.pruefziffernberechnung.de/B/Blutbeutel.shtml"&gt;Blutbeutel Eurocodes&lt;/a&gt; und zahlreichen mehr.   
&lt;/p&gt;
&lt;p&gt;
Dabei bietet Algorithm::CheckDigits eine konsistente Schnittstelle zu allen Berechnungsmethoden an.
&lt;/p&gt;
&lt;p&gt;
Mit &lt;i&gt;CheckDigits()&lt;/i&gt; wird das gew&amp;uuml;nschte Berechnungsverfahren gew&amp;auml;hlt und man erh&amp;auml;lt das passende Objekt zur&amp;uuml;ck.  Die Methode &lt;i&gt;is_valid()&lt;/i&gt; pr&amp;uuml;ft den Nummerncode, &lt;i&gt;basenumber()&lt;/i&gt; liefert die Basiszahl und &lt;i&gt;checkdigit()&lt;/i&gt; liefert die  Pr&amp;uuml;fziffer f&amp;uuml;r die Basiszahl zur&amp;uuml;ck.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Alle verf&amp;uuml;gbaren Berechnungsmethoden auflisten&lt;/h2&gt;
&lt;p&gt;
Eine &amp;Uuml;bersicht aller verf&amp;uuml;gbaren Berechnungsmethoden liefert &lt;i&gt;method_list&lt;/i&gt;.
&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;Algorithm::CheckDigits&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;@ml&lt;/span&gt; = &lt;span style="color: #000000;"&gt;Algorithm::CheckDigits&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;method_list&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$method&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #00688B;"&gt;@ml&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
	&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;$method\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;
Das Programm liefert folgende (deutlich gek&amp;uuml;rzte) Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
2aus5
ahv_ch
amex
bahncard
betriebsnummer
blutbeutel
...
ustid_at
ustid_be
ustid_de
...
verhoeff
visa
wagonnr_br
&lt;/pre&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Beispiel: Umsatzsteuer-Identifikationsnummer Deutschland&lt;/h2&gt;
&lt;p&gt;
Das folgende Beispiel testet eine deutsche Umsatzsteuer-Identifikationsnummer. 
&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;Algorithm::CheckDigits&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$ustid_de&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;CheckDigits&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #CD5555;"&gt;&amp;#39;ustid_de&amp;#39;&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #228B22;"&gt;#Umsatzsteuernummer: DE175903868&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$ustid&lt;/span&gt; = &lt;span style="color: #CD5555;"&gt;&amp;#39;175903868&amp;#39;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;if&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$ustid_de&lt;/span&gt;&lt;span style="color: #00688B;"&gt;-&amp;gt;is_valid&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$ustid&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;UmsatzsteuerID: $ustid ist okay.\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$cd&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;$ustid_de&lt;/span&gt;&lt;span style="color: #00688B;"&gt;-&amp;gt;checkdigit&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$ustid&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$bn&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;$ustid_de&lt;/span&gt;&lt;span style="color: #00688B;"&gt;-&amp;gt;basenumber&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$ustid&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;Checkdigit: $cd\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;Basiszahl: $bn\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;else&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;UmsatzsteuerID: $ustid ist NICHT okay.\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;
Das Programm liefert folgende Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
UmsatzsteuerID: 175903868 ist okay.
Checkdigit: 8
Basiszahl: 17590386
&lt;/pre&gt;
&lt;p&gt;
Umsatzsteuer-Identifikationsnummern aus &amp;Ouml;sterreich lassen sich mit der Methode &lt;i&gt;ustid_at&lt;/i&gt; checken. Ebenso lassen sich Umsatzsteuer-Identifikationsnummern aus den Niederlanden mittels &lt;i&gt;ustid_nl&lt;/i&gt; testen.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Beispiel: ISBN-10&lt;/h2&gt;
&lt;p&gt;
Das folgende Beispiel testet eine 10-stellige ISBN. 13-stellige ISBN lassen sich mit &lt;i&gt;isbn13&lt;/i&gt; pr&amp;uuml;fen.
&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;Algorithm::CheckDigits&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$isbn10_cd&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;CheckDigits&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #CD5555;"&gt;&amp;#39;isbn&amp;#39;&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$isbn&lt;/span&gt; = &lt;span style="color: #CD5555;"&gt;&amp;#39;386899145X&amp;#39;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;if&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$isbn10_cd&lt;/span&gt;&lt;span style="color: #00688B;"&gt;-&amp;gt;is_valid&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$isbn&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;ISBN-10: $isbn ist okay.\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$cd&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;$isbn10_cd&lt;/span&gt;&lt;span style="color: #00688B;"&gt;-&amp;gt;checkdigit&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$isbn&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$bn&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;$isbn10_cd&lt;/span&gt;&lt;span style="color: #00688B;"&gt;-&amp;gt;basenumber&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$isbn&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;Checkdigit: $cd\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;Basiszahl: $bn\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;else&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;ISBN-10: $isbn ist NICHT okay.\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;
Das Programm liefert folgende Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
ISBN-10: 386899145X ist okay.
Checkdigit: X
Basiszahl: 386899145
&lt;/pre&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Siehe auch&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?Algorithm%3A%3ACheckDigits"&gt;Algorithm::CheckDigits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.pruefziffernberechnung.de/"&gt;www.pruefziffernberechnung.de&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?Business%3A%3AISBN"&gt;Business::ISBN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?Test%3A%3AISBN"&gt;Test::ISBN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?Business%3A%3ACardInfo"&gt;Business::CardInfo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/LT1G0cpyLdE" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>Sys::Hostname oder Net::Domain - Hostname ermitteln</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2012/10/syshostname-oder-netdomain---hostname-ermitteln.html" />
    <id>tag:perl-howto.de,2012://1.232</id>

    <published>2012-10-01T10:00:31Z</published>
    <updated>2012-10-04T09:31:30Z</updated>

    <summary> Der Hostname ist die eindeutige Bezeichnung eines Rechners in einem Netzwerk. Meist wird ein Fully Qualified Domain Name (FQDN) als Hostname verwendet. Bei Rechnern in einem LAN wird allerdings manchmal auch der Domain-Teil (hostdomain) weggelassen und nur der lokale...</summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="101" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="core" label="core" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sysadmin" label="sysadmin" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
Der &lt;a href="http://de.wikipedia.org/wiki/Hostname"&gt;Hostname&lt;/a&gt; ist die eindeutige Bezeichnung eines Rechners in einem Netzwerk.
Meist wird ein &lt;a href="http://de.wikipedia.org/wiki/Domain"&gt;Fully Qualified Domain Name (FQDN)&lt;/a&gt; als Hostname verwendet.
Bei Rechnern in einem LAN wird allerdings manchmal auch der Domain-Teil (hostdomain) weggelassen und nur der lokale Part (hostname) verwendet. 
&lt;/p&gt;
&lt;p&gt;
Die Ermittlung des Hostnamens ist nicht immer einfach, daher verwenden die beiden nachfolgend vorgestellen Module intern zahlreiche Methoden, um den Hostnamen herauszufinden.  
&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;Sys::Hostname&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://perldoc.perl.org/Sys/Hostname.html"&gt;Sys::Hostname&lt;/a&gt; von David Sundstrom, seit Perl 5.6 Bestandteil der Standard-Distribution, stellt eine Funktion bereit: &lt;i&gt;hostname()&lt;/i&gt;. 
&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;Sys::Hostname&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #00688B;"&gt;hostname&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
Das Programm liefert z.B. folgende Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
server.example.net
&lt;/pre&gt;
&lt;p&gt;
oder auch einfach
&lt;/p&gt;
&lt;pre&gt;
server
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;Net::Domain&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://perldoc.perl.org/Net/Domain.html"&gt;Net::Domain&lt;/a&gt;, seit Perl 5.73 Bestandteil der Standard-Distribution, von Graham Barr verwendet intern deutlich mehr Methoden als Sys::Hostname, um den FQDN des aktuellen Hosts zu ermittlen.  Weiterhin werden auch Funktionen bereitgestellt, um den lokalen bzw. Domain-Teil zu ermitteln.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;hostfqdn ()&lt;/i&gt;: liefert den FQDN des aktuellen Hosts&lt;/li&gt;
&lt;li&gt;&lt;i&gt;domainname ()&lt;/i&gt;: Ein Alias f&amp;uuml;r hostfqdn&lt;/li&gt;
&lt;li&gt;&lt;i&gt;hostname ()&lt;/i&gt;: liefert den lokalen Teil des FQDN&lt;/li&gt;
&lt;li&gt;&lt;i&gt;hostdomain ()&lt;/i&gt;: liefert den Domain-Teil des FQDN&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;Net::Domain&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;qw(hostname hostfqdn hostdomain)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;Host FQDN:  &amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #000000;"&gt;hostfqdn&lt;/span&gt; &lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;Hostname:   &amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #000000;"&gt;hostname&lt;/span&gt; &lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;Hostdomain: &amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #000000;"&gt;hostdomain&lt;/span&gt; &lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
Das Programm liefert z.B. folgende Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
Host FQDN:  server.example.net
Hostname:   server
Hostdomain: example.net
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;h2&gt;Siehe auch&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Perldoc: &lt;a href="http://perldoc.perl.org/perlfaq9.html"&gt;perlfaq9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Perldoc: &lt;a href="http://perldoc.perl.org/Sys/Hostname.html"&gt;Sys::Hostname&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The 2004 Perl Advent Calendar: &lt;a href="http://www.perladvent.org/2004/21st/"&gt;Sys::Hostname&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Perldoc: &lt;a href="http://perldoc.perl.org/Net/Domain.html"&gt;Net::Domain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CPAN: &lt;a href="http://search.cpan.org/perldoc?Sys%3A%3AHostname%3A%3ALong"&gt;Sys::Hostname::Long&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wikipedia: &lt;a href="http://de.wikipedia.org/wiki/Hostname"&gt;Hostname&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wikipedia: &lt;a href="http://de.wikipedia.org/wiki/Domain"&gt;Domain&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/syxv9mvqwpE" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>Module::CoreList - welche Module werden eigentlich mit Perl ausgeliefert?</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2012/07/modulecorelist---welche-module-werden-eigentlich-mit-perl-ausgeliefert.html" />
    <id>tag:perl-howto.de,2012://1.231</id>

    <published>2012-07-16T19:45:08Z</published>
    <updated>2012-07-16T19:49:07Z</updated>

    <summary> Perl wird mit einer ansehnlichen Anzahl an Standardmodulen ausgeliefert. Module::CoreList und das mitgelieferte Kommandozeilentool corelist - a commandline frontend to Module::CoreList bieten eine einfache, aber effektive Schnittstelle, um diesen Fundus zu durchsuchen. Kommandozeile vs. Webinterface In diesem Beitrag gehe...</summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="101" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="core" label="core" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
&lt;a href="http://www.perl.org"&gt;Perl&lt;/a&gt; wird mit einer ansehnlichen Anzahl an &lt;a href="http://perldoc.perl.org/index-modules-A.html"&gt;Standardmodulen&lt;/a&gt; ausgeliefert. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://search.cpan.org/perldoc?Module::CoreList"&gt;Module::CoreList&lt;/a&gt; und das mitgelieferte Kommandozeilentool
&lt;a href="http://search.cpan.org/perldoc?corelist"&gt;corelist - a commandline frontend to Module::CoreList&lt;/a&gt; bieten eine einfache, aber effektive Schnittstelle, um diesen Fundus zu durchsuchen.    
&lt;/p&gt;

&lt;h2&gt;Kommandozeile vs. Webinterface&lt;/h2&gt;
&lt;p&gt;
In diesem Beitrag gehe ich kurz auf das Kommandozeilentool &lt;i&gt;corelist&lt;/i&gt; ein. 
&lt;/p&gt;
&lt;p&gt;
Wer ein webbasiertes Interface bevorzugt, wird bei &lt;a href="http://perlpunks.de/corelist"&gt;Webinterface: corelist - Find core modules in perl versions&lt;/a&gt; von Tina M&amp;uuml;ller (&lt;a href="http://search.cpan.org/~tinita/"&gt;tinita&lt;/a&gt;) f&amp;uuml;ndig. 
&lt;/p&gt;

&lt;h2&gt;Welche Perlversionen kennt die installierte Version von Module::Corelist?&lt;/h2&gt;
&lt;p&gt;
Der Parameter &lt;i&gt;-v&lt;/i&gt; zeigt ohne Angabe einer Perlversionsnummer eine Liste aller bekannten Perlversionen an.
&lt;/p&gt;
&lt;pre&gt;
$ corelist -v
&lt;/pre&gt;
&lt;p&gt;
Das liefert z.B. folgende (gek&amp;uuml;rzte) Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
Module::CoreList has info on the following perl versions:
5
5.000
5.001
5.002
5.00307
5.004
5.00405
5.005
5.00503
5.00504
.........
v5.15.2
v5.15.3
v5.15.4
v5.15.5
v5.15.6
v5.15.7
v5.15.8
v5.15.9
v5.16.0
v5.17.0
&lt;/pre&gt;


&lt;h2&gt;Alle Coremodule einer bestimmten Perl-Version&lt;/h2&gt;
&lt;p&gt;
Wird dem Parameter &lt;i&gt;-v&lt;/i&gt; eine Perlversionsnummer angegeben, so wird eine Liste der mitgelieferten Core-Module und deren Versionsnummer angezeigt:
&lt;/p&gt;
&lt;pre&gt;
$ corelist -v 5.014002 
&lt;/pre&gt;
&lt;p&gt;
oder
&lt;/p&gt;
&lt;pre&gt;
$ corelist -v 5.14.2
&lt;/pre&gt;
&lt;p&gt;
Das liefert z.B. folgende (gek&amp;uuml;rzte) Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
The following modules were in perl 5.014002 CORE
AnyDBM_File                                      1.00
App::Cpan                                        1.5701
App::Prove                                       3.23
App::Prove::State                                3.23
App::Prove::State::Result                        3.23
App::Prove::State::Result::Test                  3.23
.........
utf8                                             1.09
vars                                             1.02
version                                          0.88
vmsish                                           1.02
warnings                                         1.12
warnings::register                               1.02
&lt;/pre&gt;

&lt;h2&gt;Wann wurde ein Modul erstmals in den Core aufgenommen?&lt;/h2&gt;
&lt;p&gt;
Dazu &amp;uuml;bergibt man &lt;i&gt;corelist&lt;/i&gt; einfach den Namen des gesuchten Moduls:  
&lt;/p&gt;
&lt;pre&gt;
$ corelist parent
&lt;/pre&gt;
&lt;p&gt;
Das liefert folgende Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
parent was first released with perl v5.10.1
&lt;/pre&gt;
&lt;h2&gt;In welchen Versionen liegt ein Core-Modul vor?&lt;/h2&gt;
&lt;p&gt;
Der Parameter &lt;i&gt;-a Name-des-Moduls&lt;/i&gt; liefert eine Liste der Perlversionen und der jeweils ausgelieferten Version des Coremodules 
&lt;/p&gt;
&lt;pre&gt;
$ corelist -a parent
&lt;/pre&gt;
&lt;p&gt;
Das liefert z.B. folgende (gek&amp;uuml;rzte) Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
parent was first released with perl v5.10.1
  v5.10.1    0.221     
  v5.11.0    0.223     
  v5.11.1    0.223 
  .........
  v5.15.9    0.225     
  v5.16.0    0.225     
  v5.17.0    0.225   
&lt;/pre&gt;


&lt;h2&gt;Siehe auch:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MetaCPAN: &lt;a href="https://metacpan.org/module/Module::CoreList"&gt;Module::CoreList&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CPAN: &lt;a href="http://search.cpan.org/perldoc?Module::CoreList"&gt;Module::CoreList&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CPAN: &lt;a href="http://search.cpan.org/perldoc?corelist"&gt;corelist - a commandline frontend to Module::CoreList&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tina M&amp;uuml;ller (tinita): &lt;a href="http://perlpunks.de/corelist"&gt;Webinterface: corelist - Find core modules in perl versions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tina M&amp;uuml;ller (tinita) [blogs.perl.org] &lt;a href="http://blogs.perl.org/users/tinita/2011/09/corelist-web-interface.html"&gt;corelist web interface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PerlGeek: &lt;a href="http://perlgeek.de/blog-en/perl-tips/small-helpers.writeback"&gt;Small Perl Helpers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PerlMonks: &lt;a href="http://www.perlmonks.org/?node_id=670914"&gt;Which core modules did Perl 5.x have?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PsyberMonkey: &lt;a href="http://scratching.psybermonkey.net/2011/02/perl-how-to-find-out-what-core-modules.html"&gt;Perl - How to find out what Core Modules installed &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tyler Slijboom: &lt;a href="http://blogs.perl.org/users/tyler_slijboom/2011/10/corelist-and-perlbrew---2-perl-command-line-tools-for-remote-perl-work.html"&gt;Corelist and Perlbrew - 2 Perl command line tools for remote Perl work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CPAN: &lt;a href="http://search.cpan.org/dist/Module-Metadata-CoreList/"&gt;Module-Metadata-CoreList&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/-vZpbZC2fa8" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>Veranstaltung::Tipp - Europäische Perl-Konferenz 20.-22.08.2012 in Frankfurt/Main</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2012/06/veranstaltungtipp---europaische-perl-konferenz-20-22082012-in-frankfurtmain.html" />
    <id>tag:perl-howto.de,2012://1.230</id>

    <published>2012-06-26T19:17:35Z</published>
    <updated>2012-06-26T19:48:41Z</updated>

    <summary> Die 13. Europäische Perl-Konferenz "YAPC::Europe" findet vom 20.-22. August 2012 an der Goethe-Universität Frankfurt/Main statt. Die Europäische Perl-Konferenz "YAPC::Europe" ist die größte jährliche Konferenz für Anwender und Entwickler der dynamischen Open-Source-Programmiersprache Perl in Europa. In diesem Jahr wird sie...</summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="Talks" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="training" label="training" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapc" label="yapc" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
Die 13. Europäische Perl-Konferenz "&lt;a href="http://act.yapc.eu/ye2012/"&gt;YAPC::Europe&lt;/a&gt;" findet vom &lt;strong&gt;20.-22. August 2012&lt;/strong&gt; an der Goethe-Universität Frankfurt/Main statt.
&lt;/p&gt;

&lt;p&gt;
Die Europäische Perl-Konferenz "YAPC::Europe" ist die größte jährliche
Konferenz für Anwender und Entwickler der dynamischen
Open-Source-Programmiersprache &lt;a href="http://www.perl.org/"&gt;Perl&lt;/a&gt; in Europa. In diesem Jahr wird sie von den &lt;a href="http://frankfurt.pm/"&gt; Frankfurt Perlmongers e.V.&lt;/a&gt; ausgerichtet.
&lt;/p&gt;
&lt;h2&gt;Modern Perl&lt;/h2&gt;
&lt;p&gt;
Ein Schwerpunkt der Konferenz ist "Modern Perl". Dabei spielen Module wie &lt;a href="http://moose.perl.org"&gt;Moose&lt;/a&gt;, eine neuartige Objektorientierung für Perl, und &lt;a href="http://search.cpan.org/perldoc?DBIx%3A%3AClass"&gt;DBIx::Class&lt;/a&gt; als Schicht zwischen Anwendung und Datenbanken eine genauso wichtige Rolle wie die Web-Frameworks &lt;a href="http://www.catalystframework.org/"&gt;Catalyst&lt;/a&gt;, &lt;a href="http://perldancer.org/"&gt;Dancer&lt;/a&gt; und &lt;a href="http://mojolicio.us/"&gt;Mojolicious&lt;/a&gt;.
&lt;/p&gt;
&lt;h2&gt;Call for Papers&lt;/h2&gt;
&lt;p&gt;
Die Konferenz steht und fällt mit den Vorträgen, die 5, 20 oder 40
Minuten lang sein können.
&lt;/p&gt;
&lt;p&gt;
Alle Themen, die mit Perl oder dem Perl-Umfeld zu tun haben, können als
Vorträge für die Konferenz interessant sein. Vorschläge müssen bis
spätestens &lt;strong&gt;Sonntag, den 15. Juli 2012&lt;/strong&gt; als Abstract &lt;a href="http://act.yapc.eu/ye2012/newtalk"&gt;eingereicht&lt;/a&gt; werden.  Der Abstract sollte in rund 2.000 Zeichen das Thema beschreiben.
&lt;/p&gt;
&lt;h2&gt;Sponsoren&lt;/h2&gt;
&lt;p&gt;
Die Konferenz bedeutet neben enormem zeitlichen auch hohen finanziellen
Aufwand. Deshalb benötigen wir Unterstützung von &lt;a href="http://act.yapc.eu/ye2012/sponsors.html"&gt;Sponsoren&lt;/a&gt;, z.B. bei der
Ausrichtung der Abendveranstaltung. Für mehr Informationen darüber, wie
Sponsoren den Workshop unterstützen können, steht Renée Bäcker
(sponsoring@yapc2012.de) zur Verfügung.
&lt;/p&gt;

&lt;h2&gt;Preise&lt;/h2&gt;
&lt;p&gt;
Wie in den Jahren zuvor sind die Preise für die Teilnahme niedrig: Für
Studenten liegt der Beitrag bei 50 €, für Privatpersonen bei 110 € und
für Firmenteilnehmer bei 450 € für die gesamte Konferenz. Bis zum 8.
Juli gibt es für Privatpersonen einen &lt;strong&gt;Frühbucherrabatt&lt;/strong&gt;, so dass das
Ticket nur 80 € kostet
&lt;/p&gt;

&lt;h2&gt;Siehe auch&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.perl.org/users/yapceurope_2012"&gt;Blog on blogs.perl.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/#!/yapceu"&gt;yapceu@twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.facebook.com/pages/YAPCEurope-Yet-Another-Perl-Conference-Europe/236097029766587"&gt;yapceu on Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://plus.google.com/b/105385084841267530672/"&gt;yapceu on Google+&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.xing.com/events/yapc-europe-1108909"&gt;yapceu on Xing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/V-S-iDosGg8" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>Lese::Tipp - PerlyBook - CPAN Modul Dokumentation als E-Book</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2012/05/lesetipp---perlybook---cpan-modul-dokumentation-als-e-book.html" />
    <id>tag:perl-howto.de,2012://1.229</id>

    <published>2012-05-30T20:00:00Z</published>
    <updated>2012-05-31T16:19:13Z</updated>

    <summary> Renée Bäcker hat vor einigen Wochen den Dienst PerlyBook in Leben gerufen, der die POD-Dokumentation von CPAN-Modulen in die E-Book Formate EPUB und MOBI umwandeln kann. Ich habe PerlyBook auf mehreren androiden Tablets mit verschiedenen E-Book-Readern ausprobiert und bin...</summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="Blogs" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cpan" label="cpan" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        
&lt;p&gt;
&lt;a href="http://reneeb-perlblog.blogspot.de/2012/04/modul-dokumentation-als-e-book.html"&gt;Renée Bäcker&lt;/a&gt; hat vor &lt;a href="http://perl-nachrichten.de/index.cgi/details/1052"&gt;einigen Wochen&lt;/a&gt; den Dienst &lt;a href="http://perlybook.org/"&gt;PerlyBook&lt;/a&gt; in Leben gerufen, der die &lt;a href="http://perldoc.perl.org/perlpod.html"&gt;POD&lt;/a&gt;-Dokumentation von &lt;a href="http://www.cpan.org/"&gt;CPAN&lt;/a&gt;-&lt;a href="http://search.cpan.org/"&gt;Modulen&lt;/a&gt; in die&lt;a href="http://de.wikipedia.org/wiki/E-Book"&gt; E-Book&lt;/a&gt; Formate &lt;a href="http://de.wikipedia.org/wiki/EPUB"&gt;EPUB&lt;/a&gt; und &lt;a href="http://wiki.mobileread.com/wiki/MOBI"&gt;MOBI&lt;/a&gt; umwandeln kann. 
&lt;/p&gt;
&lt;p&gt;
Ich habe &lt;a href="http://perlybook.org/"&gt;PerlyBook&lt;/a&gt; auf mehreren &lt;a href="http://www.android.com/"&gt;androiden&lt;/a&gt; Tablets mit verschiedenen E-Book-Readern ausprobiert und bin begeistert. Funktioniert einwandfrei. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;


&lt;h2&gt;Screenshots&lt;/h2&gt;

&lt;p&gt;
Statt vieler Worte ein paar Screenshots - so sieht es aus:
&lt;/p&gt;

&lt;b&gt;Seitenansicht (Hochformat):&lt;/b&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;a href="http://perl-howto.de/assets/images/Screenshot_2012-05-30-21-11-43.png"&gt;&lt;img alt="Screenshot_2012-05-30-21-11-43.png" src="http://perl-howto.de/assets_c/2012/05/Screenshot_2012-05-30-21-11-43-thumb-400x640-104.png" width="400" height="640" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/a&gt;


&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;b&gt;Inhaltsverzeichnis:&lt;/b&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;a href="http://perl-howto.de/assets/images/Screenshot_2012-05-30-21-11-19.png"&gt;&lt;img alt="Screenshot_2012-05-30-21-11-19.png" src="http://perl-howto.de/assets_c/2012/05/Screenshot_2012-05-30-21-11-19-thumb-400x640-103.png" width="400" height="640" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/a&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;


&lt;h2&gt;Siehe auch:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;PerlNews: &lt;a href="http://perl-nachrichten.de/index.cgi/details/1052"&gt;Modul-Dokumentation als E-Book &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Perl-Blog: &lt;a href="http://reneeb-perlblog.blogspot.de/2012/04/modul-dokumentation-als-e-book.html"&gt;Modul-Dokumentation als E-Book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perlybook.org/"&gt;PerlyBook&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/rO1jr8FjAGY" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>Serverumzug Perl-Howto.de abgeschlossen</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2012/05/serverumzug-perl-howtode-abgeschlossen.html" />
    <id>tag:perl-howto.de,2012://1.228</id>

    <published>2012-05-30T18:30:00Z</published>
    <updated>2012-05-30T18:38:22Z</updated>

    <summary><![CDATA[ Der Umzug von Perl-Howto.de auf einen eigenen schnelleren Server ist geschafft. Ich werde ab jetzt auch wieder mehr Beitr&auml;ge in diesem Blog ver&ouml;ffentlichen Neue Features Captchas f&uuml;r Kommentare ohne Anmeldung - das Spamaufkommen ist bereits jetzt drastisch gesunken Kommentarautoren...]]></summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="Intern" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
Der Umzug von &lt;a href="http://perl-howto.de"&gt;Perl-Howto.de&lt;/a&gt; auf einen eigenen schnelleren Server ist geschafft.
&lt;/p&gt;
&lt;p&gt;
Ich werde ab jetzt auch wieder mehr Beitr&amp;auml;ge in diesem Blog ver&amp;ouml;ffentlichen
&lt;/p&gt;

&lt;h2&gt;Neue Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://de.wikipedia.org/wiki/CAPTCHA"&gt;Captchas&lt;/a&gt; f&amp;uuml;r Kommentare ohne Anmeldung - das Spamaufkommen ist bereits jetzt drastisch gesunken&lt;/li&gt;
&lt;li&gt;Kommentarautoren k&amp;ouml;nnen sich jetzt auch mit &lt;a href="http://de.wikipedia.org/wiki/OpenID"&gt;OpenID&lt;/a&gt; und &lt;a href="https://accounts.google.com/Login?hl=de"&gt;Google Accounts&lt;/a&gt; anmelden - eine oft gew&amp;uuml;nschte Funktionalit&amp;auml;t&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Falls jemandem (m/w) ein Fehler auff&amp;uuml;llt, dann bitte einfach als Kommentar melden. Danke.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;


        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/7YEWxJxu1KY" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>Net::NTP - Antwortpakete eines NTP-Servers einfach dekodieren</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2012/03/netntp-antwortpakete-eines-ntpservers-einfach-dekodieren.html" />
    <id>tag:perl-howto.de,2012://1.227</id>

    <published>2012-03-22T19:15:00Z</published>
    <updated>2012-03-28T20:14:54Z</updated>

    <summary><![CDATA[ "Das Network Time Protocol (NTP) ist ein Standard zur Synchronisierung von Uhren in Computersystemen &uuml;ber paketbasierte Kommunikationsnetze. NTP verwendet das verbindungslose Transportprotokoll UDP. NTP wurde speziell entwickelt, um eine zuverl&auml;ssige Zeitgabe &uuml;ber Netzwerke mit variabler Paketlaufzeit zu erm&ouml;glichen." Quelle:...]]></summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="Net" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sysadmin" label="sysadmin" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
"Das &lt;a href="http://de.wikipedia.org/wiki/Network_Time_Protocol"&gt;Network Time Protocol&lt;/a&gt; (NTP) ist ein Standard zur Synchronisierung von Uhren in Computersystemen &amp;uuml;ber paketbasierte Kommunikationsnetze. NTP verwendet das verbindungslose Transportprotokoll &lt;a href="http://de.wikipedia.org/wiki/User_Datagram_Protocol"&gt;UDP&lt;/a&gt;. NTP wurde speziell entwickelt, um eine zuverl&amp;auml;ssige Zeitgabe &amp;uuml;ber Netzwerke mit variabler Paketlaufzeit zu erm&amp;ouml;glichen." &lt;small&gt;Quelle: &lt;a href="http://de.wikipedia.org/wiki/Network_Time_Protocol"&gt;Wikipedia: Network Time Protocol&lt;/a&gt;&lt;/small&gt;.
&lt;/p&gt;
&lt;p&gt;
NTP-Server versenden Antworten im &lt;a href="http://www.faqs.org/rfcs/rfc2030.html"&gt;NTP Message Format&lt;/a&gt;, die sich mit
&lt;a href="http://search.cpan.org/perldoc?Net::NTP"&gt;Net::NTP - Perl extension for decoding NTP server responses&lt;/a&gt; von &lt;a href="http://search.cpan.org/~abh/"&gt;Ask Bj&amp;oslash;rn Hansen&lt;/a&gt; einfach dekodieren lassen.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;


&lt;h2&gt;Beispiel:&lt;/h2&gt;
&lt;p&gt;
Net::NTP exportiert eine einzige Funktion, &lt;i&gt;get_ntp_response()&lt;/i&gt;, die als optionalen Parameter auch die Adresse eines NTP-Server annimmt und liefert einen Hash zur&amp;uuml;ck, dessen Schl&amp;uuml;ssel die einzelnen Abschnitte des NTP Antwort Pakets enth&amp;auml;lt.
&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;Net::NTP&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;qw(get_ntp_response)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$ntp_server&lt;/span&gt; = &lt;span style="color: #8B008B; font-weight:bold;"&gt;shift&lt;/span&gt; ||  &lt;span style="color: #CD5555;"&gt;&amp;#39;ptbtime1.ptb.de&amp;#39;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;%response&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;get_ntp_response&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$ntp_server&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;@response_keys&lt;/span&gt; = &lt;span style="color: #8B008B; font-weight:bold;"&gt;sort&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;keys&lt;/span&gt; &lt;span style="color: #00688B;"&gt;%response&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$response_key&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #00688B;"&gt;@response_keys&lt;/span&gt;&lt;span style="color: #000000;"&gt; )&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
	&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;$response_key: $response{ $response_key }\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
Das Programm liefert folgende Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
Leap Indicator: 0
Mode: 4
Originate Timestamp: 1332443226.50195
Poll Interval: 0.0000
Precision: -21
Receive Timestamp: 1332443226.90883
Reference Clock Identifier: PTB
Reference Timestamp: 1332443217.35515
Root Delay: 0
Root Dispersion: 0.0000
Stratum: 1
Transmit Timestamp: 1332443226.90883
Version Number: 3
&lt;/pre&gt;
&lt;p&gt;
Die Schl&amp;uuml;ssel des &lt;span style="color: #00688B;"&gt;%response&lt;/span&gt; ensprechen den einzelnen Feldern des NTP Antwortpakets:
&lt;/p&gt;
&lt;pre&gt;
                           1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |LI | VN  |Mode |    Stratum    |     Poll      |   Precision   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          Root Delay                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Root Dispersion                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     Reference Identifier                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                   Reference Timestamp (64)                    |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                   Originate Timestamp (64)                    |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                    Receive Timestamp (64)                     |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                    Transmit Timestamp (64)                    |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                 Key Identifier (optional) (32)                |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                                                               |
      |                 Message Digest (optional) (128)               |
      |                                                               |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&lt;/pre&gt;
&lt;p&gt;
&lt;small&gt;Quelle:&lt;a href="http://www.faqs.org/rfcs/rfc2030.html"&gt; RFC 2030&lt;/a&gt;&lt;/small&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;


&lt;h2&gt;Siehe auch&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;CPAN: &lt;a href="http://search.cpan.org/perldoc?Net::NTP"&gt;Net::NTP - Perl extension for decoding NTP server responses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CPAN: &lt;a href="http://search.cpan.org/perldoc?POE::Component::Client::NTP"&gt;POE::Component::Client::NTP - A POE Component to query NTP servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ntp.org/"&gt;NTP: The Network Time Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ptb.de/de/org/q/q4/q42/_ntp_main.htm"&gt;PTB: Zeitsynchronisation von Rechnern mit Hilfe des "Network Time Protocol" (NTP)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.pool.ntp.org/zone/de"&gt;Germany - de.pool.ntp.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.faqs.org/rfcs/rfc1305.html"&gt;RFC 1305&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.faqs.org/rfcs/rfc2030.html"&gt;RFC 2030&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wikipedia: &lt;a href="http://de.wikipedia.org/wiki/Zeitserver"&gt;Zeitserver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wikipedia: &lt;a href="http://de.wikipedia.org/wiki/Network_Time_Protocol"&gt;Network Time Protocol&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/p9UyorvNfS4" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>Perl Advent(ures) 2011</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2011/12/perl-adventures-2011.html" />
    <id>tag:perl-howto.de,2011://1.226</id>

    <published>2011-12-01T17:15:00Z</published>
    <updated>2011-12-01T19:40:37Z</updated>

    <summary> Es ist wieder so weit - Perl Adventskalender 2011 sind online: Dancer Advent Calendar - the Dancer web framework's calendar Perl Advent Calendar (perladvent.org) Catalyst Advent Calendar - the Catalyst web framework's calendar Perl6 Advent Calendar Via: PreshBlog: Perl...</summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="101" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="catalyst" label="catalyst" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="dancer" label="dancer" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="perl6" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
Es ist wieder so weit - Perl Adventskalender 2011 sind online: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://advent.perldancer.org/"&gt;Dancer Advent Calendar - the Dancer web framework's calendar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perladvent.org/2011/"&gt;Perl Advent Calendar (perladvent.org)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.catalystframework.org/calendar"&gt;Catalyst Advent Calendar - the Catalyst web framework's calendar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perl6advent.wordpress.com/"&gt;Perl6 Advent Calendar&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Via:&lt;/h2&gt;

&lt;p&gt;
PreshBlog:  &lt;a href="http://www.preshweb.co.uk/2011/12/perl-advent-calendars-for-2011/"&gt;Perl Advent Calendars for 2011&lt;/a&gt;
&lt;/p&gt;
        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/EbwlwKuFNiQ" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>Perl in the Cloud - OpenShift Express by Red Hat - Installation, Initialisierung und Konfiguration</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2011/11/perl-in-the-cloud-openshift-express-by-red-hat-installation-initialisierung-und-konfiguration.html" />
    <id>tag:perl-howto.de,2011://1.225</id>

    <published>2011-11-24T11:22:45Z</published>
    <updated>2011-11-26T18:56:08Z</updated>

    <summary><![CDATA[ OpenShift by Red Hat soll die Entwicklung von Open-Source-Anwendungen f&uuml;r die Cloud vereinfachen. Dieser Plattform-as-a-Service stellt eine Infrastruktur f&uuml;r verschiedene Programmiersprachen und Web-Frameworks zur Verf&uuml;gung. Red Hat unterscheidet zwischen den Produktvarianten Express, Flex und Power. Die kostenlose Express Variante...]]></summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="Cloud" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
&lt;a href="https://openshift.redhat.com/app/"&gt;OpenShift by Red Hat&lt;/a&gt; soll die Entwicklung von Open-Source-Anwendungen f&amp;uuml;r die Cloud vereinfachen.
 Dieser &lt;a href="http://de.wikipedia.org/wiki/Platform_as_a_Service"&gt;Plattform-as-a-Service&lt;/a&gt; stellt eine Infrastruktur f&amp;uuml;r verschiedene Programmiersprachen und Web-Frameworks zur Verf&amp;uuml;gung. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.de.redhat.com/"&gt;Red Hat&lt;/a&gt; unterscheidet zwischen den Produktvarianten &lt;a href="https://openshift.redhat.com/app/express"&gt;Express&lt;/a&gt;, &lt;a href="https://openshift.redhat.com/app/flex"&gt;Flex&lt;/a&gt; und &lt;a href="https://openshift.redhat.com/app/power"&gt;Power&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Die kostenlose Express Variante (&lt;a href="https://openshift.redhat.com/app/login"&gt;Registrierung erforderlich&lt;/a&gt;) erlaubt u.a. die Verwendung der dynamischen Programmiersprache &lt;a href="http://www.perl.org"&gt;Perl&lt;/a&gt; in Version 5.10.1, der Datenbanken &lt;a href="http://dev.mysql.com/"&gt;MySQL&lt;/a&gt; in Version 5.1 oder &lt;a href="http://www.sqlite.org/"&gt;SQLite&lt;/a&gt; in Version 3 und (ganz wichtig) die Installation von &lt;a href="http://www.cpan.org/"&gt;CPAN&lt;/a&gt;-&lt;a href="http://search.cpan.org/"&gt;Modulen&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Die bekannten und beliebten Perl Web-Frameworks &lt;a href="http://perldancer.org/"&gt;Dancer&lt;/a&gt;, &lt;a href="http://mojolicio.us/"&gt;Mojolicious&lt;/a&gt; und &lt;a href="http://www.catalystframework.org/"&gt;Catalyst&lt;/a&gt; k&amp;ouml;nnen verwendet werden.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Schritt f&amp;uuml;r Schritt&lt;/h2&gt;
&lt;p&gt;
Dieser Beitrag geht zuerst Schritt f&amp;uuml;r Schritt durch die Installation, Initialisierung und Konfiguration von OpenShift Express. Danach wird ein betont einfaches, aber n&amp;uuml;tzliches Perl-Programm erstellt und gezeigt, wie dieses in die Cloud ausgeliefert (deployed) wird. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Registrierung&lt;/h2&gt;
&lt;p&gt;
Zur Verwendung von OpenShift Express ist eine &lt;a href="https://openshift.redhat.com/app/login"&gt;Registrierung&lt;/a&gt; mit einer g&amp;uuml;ltigen E-Mail-Adresse erfoderlich. Alternativ kann auch ein bestehender &lt;a href="http://rhn.redhat.com/"&gt;RHN-Account&lt;/a&gt; verwendet werden.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Installation der Client-Tools&lt;/h2&gt;
&lt;p&gt;
OpenShift funktioniert unter &lt;a href="https://www.redhat.com/openshift/kb/kb-e1000/installing-openshift-express-client-tools-on-non-rpm-based-systems"&gt;Mac OSX, Linux und Windows&lt;/a&gt; - f&amp;uuml;r diesen Beitrag verwende ich &lt;a href="http://www.centos.org/"&gt;CentOS 6&lt;/a&gt; (64-Bit in einer eigenen virtuellen Maschine).
&lt;/p&gt;
&lt;p&gt;
F&amp;uuml;r die Client-Tools bietet RedHat eine eigenes YUM-Repository an, das &lt;a href="https://openshift.redhat.com/app/express#quickstart"&gt;wie folgt installiert&lt;/a&gt; wird.
&lt;/p&gt;
&lt;pre&gt;
# wget https://openshift.redhat.com/app/repo/openshift.repo
# mv openshift.repo /etc/yum.repos.d
&lt;/pre&gt;
&lt;p&gt;
Damit alle Paket-Abh&amp;auml;nigkeiten aufgel&amp;ouml;st werden, musste ich auch die &lt;a href="http://fedoraproject.org/wiki/EPEL"&gt;EPEL&lt;/a&gt;- und &lt;a href="http://wiki.centos.org/AdditionalResources/Repositories/RPMForge"&gt;RPMForge&lt;/a&gt;-Repositories &lt;a href="http://wiki.centos.org/AdditionalResources/Repositories"&gt;hinzuf&amp;uuml;gen&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Nun k&amp;ouml;nnen die Client-Tools installiert werden:
&lt;/p&gt;
&lt;pre&gt;
# yum install rhc
&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Initialisierung&lt;/h2&gt;
&lt;p&gt;
Alle Apps eines Users werden in einen eigenen Namensraum (Domain) installiert. Apps sind dann nach dem Schema &lt;i&gt;http://$app-$domain.rhcloud.com&lt;/i&gt; &amp;ouml;ffentlich erreichbar. Dazu gleich mehr.
&lt;/p&gt;
&lt;p&gt;
Das Kommando &lt;i&gt;rhc-create-domain&lt;/i&gt; erzeugt einen neuen Namensraum, die Konfigurationsdatei &lt;i&gt;express.conf&lt;/i&gt; und &lt;a href="http://de.wikipedia.org/wiki/Secure_Shell"&gt;SSH-Schl&amp;uuml;ssel&lt;/a&gt; (&lt;i&gt;libra_id_rsa&lt;/i&gt;) zur &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;-Authentifizierung.
&lt;/p&gt;
&lt;pre&gt;
$ rhc-create-domain -n yourdomain -l user@example.com
Password: &amp;lt;user password&gt;

Generating Openshift Express ssh key to /home/UserName/.ssh/libra_id_rsa
Generating public/private RSA key pair.
Created directory '/home/UserName/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/UserName/.ssh/libra_id_rsa.
Your public key has been saved in /home/UserName/.ssh/libra_id_rsa.pub.
.
.
Contacting https://openshift.redhat.com
Adding rhlogin to /home/UserName/.openshift/express.conf
Creation successful

You may now create an application.  Please make note of your local config file
in /home/UserName/.openshift/express.conf which has been created and populated for
you.
&lt;/pre&gt;
&lt;p&gt;
Jetzt noch Git (minimal) konfigurieren
&lt;/p&gt;
&lt;pre&gt;
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
&lt;/pre&gt;
&lt;p&gt;
und dann kann endlich die erste App erstellt werden.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Appger&amp;uuml;st erzeugen&lt;/h2&gt;
&lt;p&gt;
Das Kommando &lt;i&gt;rhc-create-app &lt;/i&gt; erzeugt das Ger&amp;uuml;st der neuen App.  &amp;Uuml;ber die  Option &lt;i&gt;-a&lt;/i&gt; wird der Name der Applikation angegeben. Die Option &lt;i&gt;-t&lt;/i&gt; legt den Typ der Applikation, hier perl-5.10, fest. Typen werden in der &lt;a href="https://docs.redhat.com/docs/en-US/OpenShift_Express/1.0/html/User_Guide/index.html"&gt;Dokumentation&lt;/a&gt; auch gerne als &lt;i&gt;cartridge&lt;/i&gt; bezeichnet. 
&lt;/p&gt;
&lt;pre&gt;
$ rhc-create-app -a X1 -t perl-5.10 
Password: 

Attempting to create remote application space: X1
Now your new domain name is being propagated worldwide (this might take a minute)...
Pulling new repo down
Warning: Permanently added 'x1-thomasfahle.rhcloud.com,184.73.107.7' (RSA) to the list of known hosts.
Confirming application 'X1' is available
  Attempt # 1

Success!  Your application 'X1' is now published here:

      http://X1-thomasfahle.rhcloud.com/

The remote repository is located here:

    ssh://ce3eb6cc3b1942a2a61a76db6ff63274@X1-thomasfahle.rhcloud.com/~/git/X1.git/

To make changes to 'X1', commit to X1/.

Successfully created application: X1
&lt;/pre&gt;
&lt;p&gt;
Die neu erstellte Applikation mit dem Namen &lt;i&gt;X1&lt;/i&gt; innerhalb des Namensraumes &lt;i&gt;thomasfahle&lt;/i&gt; ist sofort unter der URL&lt;i&gt; http://x1-thomasfahle.rhcloud.com/&lt;/i&gt; erreichbar.
&lt;/p&gt;
&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="Welcome-to-OpenShift-klein.png" src="http://perl-howto.de/assets/images/openshift/Welcome-to-OpenShift-klein.png" width="411" height="354" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;
&lt;p&gt;
Wer lieber seine eigene Domain verwenden m&amp;ouml;chte und &amp;uuml;ber einen eigenen Nameserver verf&amp;uuml;gt, kann einen &lt;a href="https://www.redhat.com/openshift/faq/i-have-deployed-my-app-but-i-don%E2%80%99t-like-telling-people-to-visit-myapp-myusernamerhcloudcom-how-c"&gt;DNS Alias einrichten&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Orientierung im Gel&amp;auml;nde&lt;/h2&gt;

&lt;p&gt;
Die neu erstellte Applikation befindet sich im Verzeichnis &lt;i&gt;$app&lt;/i&gt;, hier X1.
&lt;/p&gt;

&lt;pre&gt;
$ tree X1
X1
|-- deplist.txt
|-- libs
|-- misc
|-- perl
|   |-- health_check.pl
|   `-- index.pl
`-- README
&lt;/pre&gt;
&lt;p&gt;
Das Verzeichnis &lt;i&gt;perl&lt;/i&gt; ist die DocumentRoot der Webapp. Alle hier abgelegten Dateien sind &amp;ouml;ffentlich. Die Datei &lt;i&gt;index.pl&lt;/i&gt; dient als DirectoryIndex. 
&lt;/p&gt;
&lt;p&gt;
Die Datei &lt;i&gt;deplist.txt&lt;/i&gt; nimmt eine Liste der zu installierenden CPAN-Module auf, pro Zeile ein Modul ohne Versionsnummer.&lt;br /&gt;
&lt;a href="https://github.com/openshift/dancer-example/blob/master/deplist.txt"&gt;Beispiel&lt;/a&gt;: 
&lt;/p&gt;
&lt;pre&gt;
Test::Base
YAML
Dancer
Plack::Handler::Apache2
&lt;/pre&gt;
&lt;p&gt;
Das Verzeichnis &lt;i&gt;misc&lt;/i&gt; ist nicht &amp;ouml;ffentlich und kann f&amp;uuml;r eigene Zwecke genutzt werden.
&lt;/p&gt;
&lt;p&gt;
Das Verzeichnis &lt;i&gt;libs&lt;/i&gt; ist ebenfalls nicht &amp;ouml;ffentlich und dient als Speicherort f&amp;uuml;r eigene Module.
&lt;/p&gt;
&lt;p&gt;
Sinn und Zweck der Datei &lt;i&gt;health_check.pl&lt;/i&gt; ist mir nicht ganz klar geworden.  
&lt;/p&gt;
&lt;p&gt;
Weiterhin gibt es noch ein verstecktes Verzeichnis &lt;i&gt;.openshift&lt;/i&gt; zur Steuerung des Build-Prozesses. Dazu sp&amp;auml;ter mehr.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Das erste Programm: Umgebungsvariablen&lt;/h2&gt;
&lt;p&gt;
Einige Konfigurationseinstellungen, z.B. f&amp;uuml;r Datenbanken, sind als Umgebungsvariablen abgelegt.
&lt;/p&gt;
&lt;p&gt; Daher erstellen wir als erstes einfaches Beispiel keine Hallo-Welt-App, sondern eine n&amp;uuml;tzliche App, welche die Umgebungsvariablen anzeigt.
&lt;/p&gt;
&lt;p&gt;
Das Programm wird unter dem Namen &lt;i&gt;printenv.pl&lt;/i&gt; im Ordner &lt;i&gt;perl&lt;/i&gt; abgelegt.
&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #228B22;"&gt;#  printenv -- demo CGI program which just prints its environment&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;Content-type: text/plain\n\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$key&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;sort&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;keys&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;%ENV&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$val&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;$ENV&lt;/span&gt;{&lt;span style="color: #00688B;"&gt;$key&lt;/span&gt;}&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #00688B;"&gt;$val&lt;/span&gt; =~ &lt;span style="color: #CD5555;"&gt;s|\n|\\n|g&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #00688B;"&gt;$val&lt;/span&gt; =~ &lt;span style="color: #CD5555;"&gt;s|&amp;quot;|\\&amp;quot;|g&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;qq~$key = $val\n~&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;exit&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
Zur Ver&amp;ouml;ffentlichung (Deployment) der App verwendet OpenShift &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;. Sobald die Datei hinzugef&amp;uuml;gt und commited wurde, kann diese per git push in die Cloud ausgeliefert werden.
&lt;/p&gt;
&lt;pre&gt;
$ git add printenv.pl
$ git commit -m 'Umgebungsvariablen App'
$ git push

Counting objects: 6, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 594 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
remote: Stopping application...
remote: Waiting for stop to finish
remote: Done
remote: Running .openshift/action_hooks/pre_build
remote: strict is up to date. (1.04)
remote: skipping F/FL/FLORA/perl-5.15.4.tar.gz
remote: Running .openshift/action_hooks/build
remote: Running .openshift/action_hooks/deploy
remote: Starting application...
remote: Done
remote: Running .openshift/action_hooks/post_deploy
To ssh://ce3eb6cc3b1942a2a61a76db6ff63274@X1-thomasfahle.rhcloud.com/~/git/X1.git/
   ee74341..e31f2ec  master -&gt; master
&lt;/pre&gt;
&lt;p&gt;
Das Programm ist nun unter der URL &lt;i&gt;http://x1-thomasfahle.rhcloud.com/printenv.pl&lt;/i&gt; erreichbar.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Hinweis:&lt;/b&gt; Alle Daten innerhalb des Git-Repositories werden dabei auf dem OpenShift Express Server zun&amp;auml;chst gel&amp;ouml;scht und dann neu eingespielt.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Hinweis:&lt;/b&gt; Da Umgebungsvariablen auch Benutzernamen und Passw&amp;ouml;rter enthalten k&amp;ouml;nnen, sollte dieses Programm &lt;b&gt;nicht&lt;/b&gt; auf dem Cloud-Server verbleiben.
&lt;/p&gt;
&lt;p&gt;
Zum Bau und zur Auslieferung der Applikation werden die Programme im Ordner &lt;i&gt;.openschift/action_hooks/&lt;/i&gt; ausgef&amp;uuml;hrt. Um sich die Umgebungsvariablen anzeigen zu lassen, gen&amp;uuml;gt es in die Datei &lt;i&gt;build&lt;/i&gt; die Anweisung &lt;i&gt;export&lt;/i&gt; einzuf&amp;uuml;gen. Dann werden die Umgebungsvariablen bei jedem push angezeigt. 
&lt;/p&gt;
&lt;pre&gt;
$ cat .openshift/action_hooks/build 
#!/bin/bash
# This is a simple build script and will be executed on your CI system if 
# available.  Otherwise it will execute while your application is stopped
# before the deploy step.  This script gets executed directly, so it
# could be python, php, ruby, etc.
export
&lt;/pre&gt;
&lt;p&gt;
Eigene Umgebungsvariablen k&amp;ouml;nnen derzeit nicht gesetzt werden.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Logfiles&lt;/h2&gt;
&lt;p&gt;
Das Kommando &lt;i&gt;rhc-tail-files&lt;/i&gt; erm&amp;ouml;glicht den Zugriff auf die Logdateien auf dem Cloud-Server. 
&lt;/p&gt;
&lt;pre&gt;
$ rhc-tail-files -a X1 
Password: 

Attempting to tail files: X1/logs/*
Use ctl + c to stop

==&gt; X1/logs/error_log-20111122-000000-EST &lt;==
[Tue Nov 22 16:43:18 2011] [notice] Apache/2.2.15 (Unix) mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations

==&gt; X1/logs/access_log-20111122-000000-EST &lt;==
xx.xxx.xxx.IP - - [22/Nov/2011:16:47:04 -0500] "GET /printenv.pl HTTP/1.0" 200 2323 "-" "Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.24) Gecko/20111107 Ubuntu/10.04 (lucid) Firefox/3.6.24"
&lt;/pre&gt;
&lt;p&gt;
Der Zugriff auf die &lt;i&gt;error_log&lt;/i&gt; Dateien erleichert das Debuggen erheblich.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Snapshots&lt;/h2&gt;
&lt;p&gt;
Das Kommando &lt;i&gt;rhc-snapshot&lt;/i&gt; erstellt einen Snapshot der Applikation und liefert diesen als gezippte tar Datei zur&amp;uuml;: 
&lt;/p&gt;
&lt;pre&gt;
$ rhc-snapshot  -a X1 
Password: 

Pulling down a snapshot to X1.tar.gz

Stopping application...
Waiting for stop to finish
Done
Creating and sending tar.gz
Starting application...
Done
&lt;/pre&gt;
&lt;p&gt;
Wenn man die Datei X1.tar.gz auspackt, sieht man alle Verzeichnisse und Dateien der Applikation.
&lt;/p&gt;
&lt;pre&gt;
$ tar -xzvf X1.tar.gz
$ cd app-verzeichnis

$ tree
.
|-- git
|   `-- X1.git
|       |-- branches
|       |-- config
|       |-- description
|       |-- HEAD
|       |-- hooks
|       |   |-- applypatch-msg.sample
|       |   |-- commit-msg.sample
|       |   |-- post-commit.sample
|       |   |-- post-receive
|       |   |-- post-receive.sample
|       |   |-- post-update.sample
|       |   |-- pre-applypatch.sample
|       |   |-- pre-commit.sample
|       |   |-- prepare-commit-msg.sample
|       |   |-- pre-rebase.sample
|       |   |-- pre-receive
|       |   `-- update.sample
|       |-- info
|       |   |-- exclude
|       |   `-- refs
|       |-- objects
|       |   |-- 0a
|       |   |   `-- bed1546ab3d6aee5b42c68f57100f52949b4bf
|       |   |-- 10
|       |   |   `-- cd54466b8f66bb40d6c50ab5519bf7727e51dd
|       |   |-- 1d
|       |   |   `-- b60ffa4e6b41be6ed92a6a2b3343c70b301fb6
|       |   |-- 2f
|       |   |   `-- a0243ca6abb34233618e9ea809871be855a225
|       |   |-- 40
|       |   |   |-- 0b36608e5e4405636bf7394c546ec18de53252
|       |   |   `-- c24d558d8a1196d4170f56182b8f69fbe6741f
|       |   |-- 5e
|       |   |   `-- 1c48b299eb8c1fd204b69e520236d3a2a3217e
|       |   |-- 6a
|       |   |   `-- e37b40a1cd342e2661bdf06b65fc4731e1af1e
|       |   |-- 9b
|       |   |   `-- 594ba566f5036940fd00dfeca9cd38e51579a8
|       |   |-- a5
|       |   |   `-- 7d1f5806d714a998130b9517a4240de0c39fe3
|       |   |-- b5
|       |   |   `-- 3bde9fe6346b3d54d39b9d970308cc25080cbe
|       |   |-- c0
|       |   |   `-- df17bb0b3dbdb4da6c06ad6fe4e070e3061485
|       |   |-- c1
|       |   |   `-- d6344439cdc822df02c54bb39aabb5ccd4a7de
|       |   |-- d5
|       |   |   `-- 64d0bc3dd917926892c55e3706cc116d5b165e
|       |   |-- df
|       |   |   `-- 8d841a9e8c1afd175e0061bb7b762d708b0c58
|       |   |-- e3
|       |   |   `-- 1f2ec741b91b2d4ddc9500991cc660a8cf037d
|       |   |-- e6
|       |   |   `-- 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
|       |   |-- ed
|       |   |   `-- 5eb993715da4af89ce517eedb2c3879994e10e
|       |   |-- ee
|       |   |   `-- 74341ac408153e9bfe02fe55669533ccdfdbba
|       |   |-- f1
|       |   |   `-- 25e7fa5f3603669e173695b284d170ddd7b62f
|       |   |-- info
|       |   |   `-- packs
|       |   `-- pack
|       |       |-- pack-e8aca9b5d216bb7c5a7ac884d5cdcb6c0a9faabe.idx
|       |       `-- pack-e8aca9b5d216bb7c5a7ac884d5cdcb6c0a9faabe.pack
|       |-- packed-refs
|       `-- refs
|           |-- heads
|           |   `-- master
|           `-- tags
`-- X1
    |-- ci
    |-- conf
    |   `-- magic -&gt; /etc/httpd/conf/magic
    |-- conf.d
    |-- &lt;b&gt;data&lt;/b&gt;
    |-- logs
    |   |-- access_log-20111122-000000-EST
    |   |-- access_log-20111123-000000-EST
    |   |-- error_log-20111122-000000-EST
    |   `-- error_log-20111123-000000-EST
    |-- modules -&gt; /usr/lib64/httpd/modules
    |-- perl5lib
    |-- repo -&gt; runtime/repo
    |-- run
    |-- runtime
    |   `-- repo
    |       |-- deplist.txt
    |       |-- libs
    |       |-- misc
    |       |-- perl
    |       |   |-- health_check.pl
    |       |   |-- index.pl
    |       |   `-- printenv.pl
    |       `-- README
    `-- tmp

45 directories, 53 files
&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Persistent Storage&lt;/h2&gt;
&lt;p&gt;
Wie oben bereits erw&amp;auml;hnt, werden bei der Auslieferung (git push) alle Dateien, die sich innerhalb des Git-Repositories befinden, auf dem Cloud-Server gel&amp;ouml;scht und neu eingespielt. 
&lt;/p&gt;
&lt;p&gt;
Persistente Daten, z.B. SQLite Dateien, m&amp;uuml;ssen daher ausserhalb des Git-Repositories auf dem Server aufbewahrt werden. Dazu stellt OpenShift Express den Ordner &lt;i&gt;data&lt;/i&gt; zur Verf&amp;uuml;gung. 
&lt;/p&gt;
&lt;p&gt;
Der Pfad zum Ordner &lt;i&gt;data&lt;/i&gt; kann aus der Umgebungsvariablen &lt;i&gt;OPENSHIFT_DATA_DIR&lt;/i&gt; &lt;a href="https://www.redhat.com/openshift/blogs/whats-new-in-openshift-express-august-2011"&gt;ermittelt&lt;/a&gt; werden.
&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;Content-type: text/plain\n\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$data_dir&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;$ENV&lt;/span&gt;{&lt;span style="color: #000000;"&gt;OPENSHIFT_DATA_DIR&lt;/span&gt;}&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$file&lt;/span&gt; = &lt;span style="color: #CD5555;"&gt;&amp;#39;test.txt&amp;#39;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;open&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #000000;"&gt;OUT&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;$data_dir/$file&amp;quot;&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;or&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;die&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$!&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;for&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #B452CD;"&gt;1&lt;/span&gt; .. &lt;span style="color: #B452CD;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
        &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #00688B;"&gt;OUT&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;$_\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;close&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #000000;"&gt;OUT&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;or&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;die&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$!&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;exit&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
Die im Ordner &lt;i&gt;data&lt;/i&gt; gespeicherten Daten lassen sich per &lt;i&gt;rhc-snapshot&lt;/i&gt; vom Cloud-Server holen. 
&lt;/p&gt;
&lt;pre&gt;
$ tree
.
|-- ci
|-- conf
|   `-- magic -&gt; /etc/httpd/conf/magic
|-- conf.d
|-- &lt;b&gt;data&lt;/b&gt;
|   `&lt;b&gt;-- test.txt&lt;/b&gt;
|-- logs
|   |-- access_log-20111122-000000-EST
|   |-- access_log-20111123-000000-EST
|   |-- error_log-20111122-000000-EST
|   `-- error_log-20111123-000000-EST
|-- modules -&gt; /usr/lib64/httpd/modules
|-- perl5lib
|-- repo -&gt; runtime/repo
|-- run
|-- runtime
|   `-- repo
|       |-- deplist.txt
|       |-- libs
|       |-- misc
|       |-- perl
|       |   |-- health_check.pl
|       |   |-- index.pl
|       |   |-- printenv.pl
|       |   |-- read.pl
|       |   `-- write.pl
|       `-- README
`-- tmp
&lt;/pre&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Siehe auch&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://openshift.redhat.com/app/"&gt;OpenShift by Red Hat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openshift.redhat.com/app/express"&gt;OpenShift Express&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.redhat.com/docs/en-US/OpenShift_Express/1.0/html/User_Guide/index.html"&gt;User Guide - Using OpenShift Express to manage your applications in the cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/openshift/faq/"&gt;Frequently Asked Questions &gt; OpenShift FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/openshift/kb/kb-e1013-how-to-onboard-a-perl-application"&gt;OpenShift Knowledge Base - How to onboard a Perl application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/openshift"&gt;OpenShift Beispiele auf GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/openshift/kb/kb-e1014-how-to-deploy-the-perl-dancer-framework-on-openshift-express"&gt;OpenShift Knowledge Base - How to deploy the Perl Dancer framework on OpenShift Express&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/openshift/dancer-example"&gt;openshift / dancer-example&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/openshift/kb/kb-e1000/installing-openshift-express-client-tools-on-non-rpm-based-systems"&gt;OpenShift Knowledge Base - Installing OpenShift Express client tools on Mac OSX, Linux, and Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;man 5 express.conf - configuration file for OpenShift Express&lt;/li&gt;
&lt;li&gt;man 1 rhc-create-domain - creates a new OpenShift Express domain namespace with a user&lt;/li&gt;
&lt;li&gt;man 1 rhc-create-app - creates a new hosted application at rhcloud.com&lt;/li&gt;
&lt;li&gt;man 1 rhc-tail-files - Tail files from remote running applications in real-time&lt;/li&gt;
&lt;li&gt;man 1 rhc-user-info - Displays information about a user on the rhcloud.com system&lt;/li&gt;
&lt;li&gt;man 1 rhc-chk - Diagnoses the connection between this client and the OpenShift servers&lt;/li&gt;
&lt;li&gt;man 1 rhc-ctl-app - Control an existing rhcloud.com application&lt;/li&gt;
&lt;li&gt;man 1 rhc-snapshot - Pulls down an application snapshot as gzipped tarfile&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/openshift/faq/i-have-deployed-my-app-but-i-don%E2%80%99t-like-telling-people-to-visit-myapp-myusernamerhcloudcom-how-c"&gt;OpenShift Knowledge Base - I have deployed my app, but I don&amp;#39;t like telling people to visit &amp;lt;my_app&gt;-&amp;lt;my_username&gt;.rhcloud.com. How can I set up my own domain name to point to my app?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/openshift/kb/kb-e1011-redirecting-your-server-to-openshift-express-with-modrewrite"&gt;OpenShift Knowledge Base - Redirecting your server to OpenShift Express with mod_rewrite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linux-magazin.de/Heft-Abo/Ausgaben/2011/10/Open-Shift?category=0"&gt;Linux Magazin - Cloud-K&amp;uuml;che - Red Hat Open Shift: Plattform für Webentwickler und Hoster&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/tRqnG3EcsXI" height="1" width="1"/&gt;</content>
</entry>

<entry>
    <title>WWW::Google::PageRank - Google Pagerank für Websites abfragen</title>
    <link rel="alternate" type="text/html" href="http://perl-howto.de/2011/11/wwwgooglepagerank-google-pagerank-fur-websites-abfragen.html" />
    <id>tag:perl-howto.de,2011://1.224</id>

    <published>2011-11-21T17:17:53Z</published>
    <updated>2011-11-21T17:38:54Z</updated>

    <summary><![CDATA[ WWW::Google::PageRank von Yuri Karaban ermittelt den Google Pagerank f&uuml;r Websites. &nbsp; Pagerank ermitteln: get() Die Methode get() liefert im skalaren Kontext den Pagerank, im Listenkontext den Pagerank und zus&auml;tzlich ein HTTP::Response Objekt zum Debuggen zur&uuml;ck. &nbsp; Beispiel: get() im...]]></summary>
    <author>
        <name>Thomas Fahle</name>
        <uri>http://www.thomas-fahle.de</uri>
    </author>
    
        <category term="LWP" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://perl-howto.de/">
        &lt;p&gt;
&lt;a href="http://search.cpan.org/perldoc?WWW::Google::PageRank"&gt;WWW::Google::PageRank&lt;/a&gt; von &lt;a href="http://search.cpan.org/~ykar/"&gt;Yuri Karaban&lt;/a&gt; ermittelt den &lt;a href="http://www.google.com/about/corporate/company/"&gt;Google &lt;/a&gt; &lt;a href="http://de.wikipedia.org/wiki/PageRank"&gt;Pagerank&lt;/a&gt; f&amp;uuml;r Websites.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Pagerank ermitteln: get()&lt;/h2&gt;
&lt;p&gt;
Die Methode &lt;i&gt;get()&lt;/i&gt; liefert im &lt;b&gt;skalaren Kontext&lt;/b&gt; den Pagerank, im &lt;b&gt;Listenkontext&lt;/b&gt; den Pagerank und zus&amp;auml;tzlich ein &lt;a href="http://search.cpan.org/perldoc?HTTP::Response"&gt;HTTP::Response Objekt&lt;/a&gt; zum Debuggen zur&amp;uuml;ck.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h3&gt;Beispiel: get() im skalaren Kontext&lt;/h3&gt;
&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;WWW::Google::PageRank&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$pr&lt;/span&gt; = &lt;span style="color: #000000;"&gt;WWW::Google::PageRank&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #000000;"&gt;host&lt;/span&gt; &lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;#39;toolbarqueries.google.de&amp;#39;&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;@urls&lt;/span&gt; = &lt;span style="color: #CD5555;"&gt;qw!&lt;/span&gt;
  &lt;span style="color: #CD5555;"&gt;http://perl-howto.de&lt;/span&gt;
  &lt;span style="color: #CD5555;"&gt;http://yahoo.de&lt;/span&gt;
  &lt;span style="color: #CD5555;"&gt;http://web.de&lt;/span&gt;
  &lt;span style="color: #CD5555;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$url&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;@urls&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;URL: $url &amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;scalar&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$pr&lt;/span&gt;&lt;span style="color: #00688B;"&gt;-&amp;gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$url&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
Das Programm liefert folgende Ausgabe:
&lt;/p&gt;
&lt;pre&gt;
URL: http://perl-howto.de 4
URL: http://yahoo.de 8
URL: http://web.de 7
&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h3&gt;Beispiel: get() im Listenkontext&lt;/h3&gt;

&lt;pre&gt;
#!/usr/bin/perl
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;strict&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;warnings&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;use&lt;/span&gt; &lt;span style="color: #000000;"&gt;WWW::Google::PageRank&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$pr&lt;/span&gt; = &lt;span style="color: #000000;"&gt;WWW::Google::PageRank&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #000000;"&gt;host&lt;/span&gt; &lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;#39;toolbarqueries.google.de&amp;#39;&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt;
  &lt;span style="color: #8B008B; font-weight:bold;"&gt;or&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;die&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$!&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;@urls&lt;/span&gt; = &lt;span style="color: #CD5555;"&gt;qw!&lt;/span&gt;
  &lt;span style="color: #CD5555;"&gt;http://perl-howto.de&lt;/span&gt;
  &lt;span style="color: #CD5555;"&gt;http://yahoo.de&lt;/span&gt;
  &lt;span style="color: #CD5555;"&gt;http://web.de&lt;/span&gt;
  &lt;span style="color: #CD5555;"&gt;http://example.tld&lt;/span&gt;
  &lt;span style="color: #CD5555;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

&lt;span style="color: #228B22;"&gt;# Debug&lt;/span&gt;
&lt;span style="color: #8B008B; font-weight:bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$url&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;@urls&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;URL: $url &amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

    &lt;span style="color: #8B008B; font-weight:bold;"&gt;my&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$pagerank&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$response&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt; = &lt;span style="color: #00688B;"&gt;$pr&lt;/span&gt;&lt;span style="color: #00688B;"&gt;-&amp;gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #00688B;"&gt;$url&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;

    &lt;span style="color: #8B008B; font-weight:bold;"&gt;if&lt;/span&gt; &lt;span style="color: #000000;"&gt;(&lt;/span&gt; &lt;span style="color: #8B008B; font-weight:bold;"&gt;defined&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$pagerank&lt;/span&gt; &lt;span style="color: #000000;"&gt;)&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
        &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;PageRank: $pagerank\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #000000;"&gt;}&lt;/span&gt;
    &lt;span style="color: #8B008B; font-weight:bold;"&gt;else&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;/span&gt;
        &lt;span style="color: #8B008B; font-weight:bold;"&gt;print&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;Fehler: &amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$response&lt;/span&gt;&lt;span style="color: #00688B;"&gt;-&amp;gt;status_line&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
        &lt;span style="color: #8B008B; font-weight:bold;"&gt;warn&lt;/span&gt; &lt;span style="color: #00688B;"&gt;$response&lt;/span&gt;&lt;span style="color: #00688B;"&gt;-&amp;gt;as_string&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt; &lt;span style="color: #CD5555;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;
    &lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;span style="color: #000000;"&gt;}&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;
Das Programm liefert folgende Ausgabe (die lange XML-Ausgabe des &lt;i&gt;as_string()&lt;/i&gt; habe ich weggelassen):
&lt;/p&gt;
&lt;pre&gt;
URL: http://perl-howto.de PageRank: 4
URL: http://yahoo.de PageRank: 8
URL: http://web.de PageRank: 7
URL: http://example.tld Fehler: 403 Forbidden
&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;h2&gt;Siehe auch:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?WWW::Google::PageRank"&gt;WWW::Google::PageRank - Query google pagerank of page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.perl-uwe.com/2010/12/day-5-check-your-google-pagerank-with.html"&gt;Perl-Uwe.com: Day 5: Check your Google PageRank with WWW::Google::PageRank &lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?LWP::UserAgent"&gt;LWP::UserAgent - Web user agent class&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?HTTP::Response"&gt;HTTP::Response - HTTP style response message&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perldoc.perl.org/perldata.html#List-value-constructors"&gt;Perldoc - List value constructors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?AnyEvent::Google::PageRank"&gt;AnyEvent::Google::PageRank - Non-blocking wrapper for WWW::Google::PageRank&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://search.cpan.org/perldoc?POE::Component::WWW::Google::PageRank"&gt;POE::Component::WWW::Google::PageRank - A non-blocking wrapper for WWW::Google::PageRank&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

        
    &lt;img src="http://feeds.feedburner.com/~r/PerlHowto/~4/Z82BEh6p4Lw" height="1" width="1"/&gt;</content>
</entry>

</feed>
