<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Artisan Numérique</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1263"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/node/1263/atom/feed"/>
  <id>http://artisan.karma-lab.net/node/1263/atom/feed</id>
  <updated>2008-02-01T09:50:45+01:00</updated>
  <entry>
    <title>Bloc-note &#039;Perl&#039;</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1263" />
    <id>http://artisan.karma-lab.net/node/1263</id>
    <published>2007-11-17T17:55:05+01:00</published>
    <updated>2008-02-01T09:50:45+01:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Perl" />
    <category term="Aucun" />
    <category term="Note" />
    <category term="OK" />
    <summary type="html"><![CDATA[<p>Bloc-Notes dédié à perl
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Bloc-Notes dédié à perl
</p>
<!--break-->

	<a name='chapter_1'></a>
  <h2>UTF-8</h2>
	
<p>
Forcer l'UTF-8 sur un scalaire :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span> utf8<span class="sy0">::</span><span class="me2">is_utf8</span><span class="br0">&#40;</span><span class="re0">$message</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; utf8<span class="sy0">::</span><span class="me2">decode</span><span class="br0">&#40;</span><span class="re0">$message</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
  </div>
  
  </div>
</p>
<p>
Créer un fichier en UTF8

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://perldoc.perl.org/functions/open.html"><span class="kw3">open</span></a> FILE<span class="sy0">,</span> <span class="st0">&quot;&gt;:utf8&quot;</span><span class="sy0">,</span> <span class="re0">$filename</span><span class="sy0">;</span>
  </div>
  
  </div>
</p>
<p>
Ecrire dans la console en UTF8

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://perldoc.perl.org/functions/binmode.html"><span class="kw3">binmode</span></a> <span class="kw2">STDOUT</span><span class="sy0">,</span> <span class="st0">&quot;:utf8&quot;</span><span class="sy0">;</span>
  </div>
  
  </div>
</p>


	<a name='chapter_2'></a>
  <h2>Référence d'un scalaire</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  \<span class="re0">$scalar</span>
  </div>
  
  </div>


	<a name='chapter_3'></a>
  <h2>Type d'une variable</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://perldoc.perl.org/functions/ref.html"><span class="kw3">ref</span></a><span class="br0">&#40;</span><span class="re0">$var</span><span class="br0">&#41;</span>
  </div>
  
  </div>


	<a name='chapter_4'></a>
  <h2>Trimming</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="co1">#!/usr/bin/perl</span><br />
<br />
<span class="co1"># Declare the subroutines</span><br />
<span class="kw2">sub</span> trim<span class="br0">&#40;</span><span class="co5">$)</span><span class="sy0">;</span><br />
<span class="kw2">sub</span> ltrim<span class="br0">&#40;</span><span class="co5">$)</span><span class="sy0">;</span><br />
<span class="kw2">sub</span> rtrim<span class="br0">&#40;</span><span class="co5">$)</span><span class="sy0">;</span><br />
<br />
<span class="co1"># Create a test string</span><br />
<span class="kw1">my</span> <span class="re0">$string</span> <span class="sy0">=</span> <span class="st0">&quot; &nbsp;<span class="es0">\t</span> &nbsp;Hello world! &nbsp; &quot;</span><span class="sy0">;</span><br />
<br />
<span class="co1"># Here is how to output the trimmed text &quot;Hello world!&quot;</span><br />
<a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> trim<span class="br0">&#40;</span><span class="re0">$string</span><span class="br0">&#41;</span>.<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> ltrim<span class="br0">&#40;</span><span class="re0">$string</span><span class="br0">&#41;</span>.<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> rtrim<span class="br0">&#40;</span><span class="re0">$string</span><span class="br0">&#41;</span>.<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<br />
<span class="co1"># Perl trim function to remove whitespace from the start and end of the string</span><br />
<span class="kw2">sub</span> trim<span class="br0">&#40;</span><span class="co5">$)</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">my</span> <span class="re0">$string</span> <span class="sy0">=</span> <a target="blank" href="http://perldoc.perl.org/functions/shift.html"><span class="kw3">shift</span></a><span class="sy0">;</span><br />
&nbsp; <span class="re0">$string</span> <span class="sy0">=~</span> <span class="co2">s/^\s+//</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$string</span> <span class="sy0">=~</span> <span class="co2">s/\s+$//</span><span class="sy0">;</span><br />
&nbsp; <a target="blank" href="http://perldoc.perl.org/functions/return.html"><span class="kw3">return</span></a> <span class="re0">$string</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="co1"># Left trim function to remove leading whitespace</span><br />
<span class="kw2">sub</span> ltrim<span class="br0">&#40;</span><span class="co5">$)</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">my</span> <span class="re0">$string</span> <span class="sy0">=</span> <a target="blank" href="http://perldoc.perl.org/functions/shift.html"><span class="kw3">shift</span></a><span class="sy0">;</span><br />
&nbsp; <span class="re0">$string</span> <span class="sy0">=~</span> <span class="co2">s/^\s+//</span><span class="sy0">;</span><br />
&nbsp; <a target="blank" href="http://perldoc.perl.org/functions/return.html"><span class="kw3">return</span></a> <span class="re0">$string</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="co1"># Right trim function to remove trailing whitespace</span><br />
<span class="kw2">sub</span> rtrim<span class="br0">&#40;</span><span class="co5">$)</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">my</span> <span class="re0">$string</span> <span class="sy0">=</span> <a target="blank" href="http://perldoc.perl.org/functions/shift.html"><span class="kw3">shift</span></a><span class="sy0">;</span><br />
&nbsp; <span class="re0">$string</span> <span class="sy0">=~</span> <span class="co2">s/\s+$//</span><span class="sy0">;</span><br />
&nbsp; <a target="blank" href="http://perldoc.perl.org/functions/return.html"><span class="kw3">return</span></a> <span class="re0">$string</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
  </div>
  
  </div>


	<a name='chapter_5'></a>
  <h2>Méthode AUTOLOAD</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="br0">&#123;</span><br />
&nbsp; &nbsp;<a target="blank" href="http://perldoc.perl.org/functions/package.html"><span class="kw3">package</span></a> Test<span class="sy0">;</span><br />
<br />
&nbsp; &nbsp;<span class="kw2">use</span> vars <a target="blank" href="http://perldoc.perl.org/functions/qw.html"><span class="kw3">qw</span></a><span class="br0">&#40;</span><span class="re0">$AUTOLOAD</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="kw2">sub</span> <span class="kw2">new</span> &nbsp;<span class="br0">&#123;</span><br />
&nbsp; &nbsp; ...<br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="kw2">sub</span> AUTOLOAD <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">my</span> <span class="re0">$self</span> <span class="sy0">=</span> <a target="blank" href="http://perldoc.perl.org/functions/shift.html"><span class="kw3">shift</span></a><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">my</span> <span class="re0">$name</span> <span class="sy0">=</span> <span class="re0">$AUTOLOAD</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="re0">$name</span> <span class="sy0">=~</span> <span class="co2">s/.*:://</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="co5">@_</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$self</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="re0">$name</span><span class="br0">&#125;</span> <span class="sy0">=</span> <a target="blank" href="http://perldoc.perl.org/functions/shift.html"><span class="kw3">shift</span></a><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <a target="blank" href="http://perldoc.perl.org/functions/return.html"><span class="kw3">return</span></a> <span class="re0">$self</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="re0">$name</span><span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw1">my</span> <span class="re0">$test</span><span class="sy0">=</span><span class="kw2">new</span> Test<span class="sy0">;</span><br />
<span class="re0">$test</span><span class="sy0">-&gt;</span><span class="me1">toto</span><span class="br0">&#40;</span><span class="nu0">12</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1"># Créé automatiquement par l'autload</span><br />
<a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="re0">$test</span><span class="sy0">-&gt;</span><span class="me1">toto</span><span class="sy0">;</span>
  </div>
  
  </div>


	<a name='chapter_6'></a>
  <h2>Exportation de constantes</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://perldoc.perl.org/functions/package.html"><span class="kw3">package</span></a> MesConstantes<span class="sy0">;</span><br />
<a target="blank" href="http://perldoc.perl.org/functions/require.html"><span class="kw3">require</span></a> <span class="nu0">5.6</span><span class="nu0">.0</span><span class="sy0">;</span><br />
<br />
<span class="kw2">use</span> strict<span class="sy0">;</span><br />
<span class="kw2">use</span> warnings<span class="sy0">;</span><br />
<br />
<span class="kw2">use</span> constant C1 <span class="sy0">=&gt;</span> <span class="nu0">1</span><span class="sy0">;</span><br />
<span class="kw2">use</span> constant C2 <span class="sy0">=&gt;</span> <span class="st0">&quot;coucou&quot;</span><span class="sy0">;</span><br />
<br />
<span class="kw1">our</span><span class="br0">&#40;</span><span class="re0">@ISA</span><span class="sy0">,</span> <span class="re0">@EXPORT</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="re0">@ISA</span> &nbsp; &nbsp;<span class="sy0">=</span> <a target="blank" href="http://perldoc.perl.org/functions/qw.html"><span class="kw3">qw</span></a><span class="br0">&#40;</span>Exporter<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">@EXPORT</span> <span class="sy0">=</span> <a target="blank" href="http://perldoc.perl.org/functions/qw.html"><span class="kw3">qw</span></a><span class="br0">&#40;</span>C1 C2<span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="nu0">1</span><span class="sy0">;</span>
  </div>
  
  </div>
</p>
<p>
Et à l'extérieur, utilisation des constantes :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw2">use</span> MesConstantes<span class="sy0">;</span><br />
<a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> C1.<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> C2.<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span>
  </div>
  
  </div>
</p>
<div class='inline-box attention'>La ligne <kbd>@ISA = qw(Exporter)</kbd> définit un héritage (au sens objet) de la classe Exporter vers la classe constante. Donc si l'on joue à cela dans un objet qui hérite d'une autre classe on a un héritage multiple. Pour éviter les conflits avec SUPER, placer le "véritable" héritage en tête de liste <kbd>qw(MonHeritage Exporter)</kbd>. 
</div>


	<a name='chapter_7'></a>
  <h2>Chargement dynamique d'un module</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw1">my</span> <span class="re0">@modules</span><span class="sy0">=</span><span class="br0">&#40;</span><span class="st0">&quot;Module1&quot;</span><span class="sy0">,</span><span class="st0">&quot;Module2&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">@instances</span><span class="sy0">=</span><span class="br0">&#123;</span><span class="br0">&#125;</span><span class="sy0">;</span><br />
<span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">@modules</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://perldoc.perl.org/functions/eval.html"><span class="kw3">eval</span></a> <span class="st0">&quot;require $_&quot;</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; <span class="re0">$instances</span><span class="br0">&#91;</span><a target="blank" href="http://perldoc.perl.org/functions/scalar.html"><span class="kw3">scalar</span></a><span class="br0">&#40;</span><span class="re0">@instances</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="co5">$_</span><span class="sy0">-&gt;</span><span class="me1">new</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
  </div>
  
  </div>


	<a name='chapter_8'></a>
  <h2>Flush stdout</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  &nbsp;<span class="kw2">use</span> IO<span class="sy0">::</span><span class="me2">Handle</span> <a target="blank" href="http://perldoc.perl.org/functions/qw.html"><span class="kw3">qw</span></a><span class="br0">&#40;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
....<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;<span class="es0">\r</span><span class="es0">\e</span>[K&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; STDOUT<span class="sy0">-&gt;</span><span class="me1">flush</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;message&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; STDOUT<span class="sy0">-&gt;</span><span class="me1">flush</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  </div>
  
  </div>    ]]></content>
  </entry>
</feed>
