<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.nozav.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Humus numericus - python</title>
  <link>http://blog.nozav.org/</link>
  <atom:link href="http://blog.nozav.org/feed/tag/python/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Tue, 05 Aug 2008 19:29:48 +0200</pubDate>
  <copyright>Documents sous licence Creative commons</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Comparaison d'un script simple en Perl, Python et Ruby</title>
    <link>http://blog.nozav.org/post/2006/08/24/59-comparaison-d-un-script-simple-en-perl-python-et-ruby</link>
    <guid isPermaLink="false">urn:md5:20caba3addf4b6a47ff026ec563dfa8a</guid>
    <pubDate>Thu, 24 Aug 2006 01:03:16 +0000</pubDate>
    <dc:creator>Juba</dc:creator>
        <category>Linux, Debian, etc.</category>
        <category>perl</category><category>python</category><category>ruby</category><category>script</category>    
    <description>    &lt;p&gt;Tiens, suite à une question d'un collègue de boulot aujourd'hui, je me suis amusé à comparer la manière de faire une tâche assez simple dans trois langages de script différents. L'objectif est d'afficher le chemin complet de tous les répertoires contenus (récursivement) dans un répertoire donné (en l'occurrence &lt;code&gt;/var/log&lt;/code&gt;). Je trouve le résultat assez représentatif des particularités des différents langages&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;En Python&lt;/strong&gt;&lt;/p&gt;


&lt;pre&gt;import os
from os.path import join
for root, dirs, files in os.walk('/var/log'):
    for name in dirs:
        print join(root, name)&lt;/pre&gt;


&lt;p&gt;C'est pas forcément super intuitif (faut comprendre que la fonction &lt;code&gt;os.walk&lt;/code&gt; renvoit un &lt;em&gt;tuple&lt;/em&gt; avec le répertoire racine, les répertoires contenus et les fichiers contenus de chaque sous-répertoire parcouru. Mais c'est assez efficace.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;En Perl&lt;/strong&gt;&lt;/p&gt;


&lt;pre&gt;use File::Find;
find sub { print $File::Find::name, &quot;
&quot; if -d } , '/var/log';&lt;/pre&gt;


&lt;p&gt;Ah bah c'est sûr, difficile de faire plus bref. Mais c'est pas forcément évident du premier coup d'oeil, entre l'utilisation d'une référence à une fonction en argument de &lt;code&gt;find&lt;/code&gt;, ou celui du test &lt;code&gt;-d&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;En Ruby&lt;/strong&gt;&lt;/p&gt;


&lt;pre&gt;require 'find'
Find.find('/var/log') { |path| puts path if File.directory?(path) }&lt;/pre&gt;


&lt;p&gt;Et voilà. Simple, lisible, compact, compréhensible (du moins si on a compris le concept de bloc et d'itérateur). En un mot&amp;nbsp;: &lt;em&gt;é-lé-gant&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;Bon, allez, je suis pas tout à fait objectif, je vous l'accorde...&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.nozav.org/post/2006/08/24/59-comparaison-d-un-script-simple-en-perl-python-et-ruby#comment-form</comments>
      <wfw:comment>http://blog.nozav.org/post/2006/08/24/59-comparaison-d-un-script-simple-en-perl-python-et-ruby#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.nozav.org/feed/rss2/comments/57</wfw:commentRss>
      </item>
    
</channel>
</rss>