<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.livois.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Perl</id>
	<title>Perl - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.livois.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Perl"/>
	<link rel="alternate" type="text/html" href="https://wiki.livois.com/mediawiki/index.php?title=Perl&amp;action=history"/>
	<updated>2026-05-25T04:48:01Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.livois.com/mediawiki/index.php?title=Perl&amp;diff=199&amp;oldid=prev</id>
		<title>Christophe : 1 version</title>
		<link rel="alternate" type="text/html" href="https://wiki.livois.com/mediawiki/index.php?title=Perl&amp;diff=199&amp;oldid=prev"/>
		<updated>2012-05-28T20:31:58Z</updated>

		<summary type="html">&lt;p&gt;1 version&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 28 mai 2012 à 20:31&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Christophe</name></author>
	</entry>
	<entry>
		<id>https://wiki.livois.com/mediawiki/index.php?title=Perl&amp;diff=198&amp;oldid=prev</id>
		<title>192.168.10.1 : /* LWP */</title>
		<link rel="alternate" type="text/html" href="https://wiki.livois.com/mediawiki/index.php?title=Perl&amp;diff=198&amp;oldid=prev"/>
		<updated>2009-01-17T08:40:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;LWP&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:prog]]&lt;br /&gt;
&lt;br /&gt;
http://perldoc.perl.org/&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
&lt;br /&gt;
:{|class=wikitable&lt;br /&gt;
!num!!alpha&lt;br /&gt;
|-&lt;br /&gt;
|==||eq&lt;br /&gt;
|-&lt;br /&gt;
|!=||ne&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@	tableau&lt;br /&gt;
$	scalaire&lt;br /&gt;
#Les variables d&amp;#039;entrées sortie&lt;br /&gt;
$0 = nom du programme&lt;br /&gt;
@ARGV contient la liste des paramètres passés en ligne de commande.&lt;br /&gt;
$ARGV nom du fichier en cours de lecture&lt;br /&gt;
$ARGV[0] = premier argument&lt;br /&gt;
@ARGV=liste des arguments&lt;br /&gt;
$#ARGV nombre d&amp;#039;arguments -1&lt;br /&gt;
@_ contient les arguments passés au sous programme en cours (sub).&lt;br /&gt;
$/ séparateur d&amp;#039;enregistrements en entrée (par défaut: saut de ligne)&lt;br /&gt;
$\ séparateur d&amp;#039;enregistrement pour la fonction print (vide par défaut)&lt;br /&gt;
$, séparateur de champs pour la fonction print&lt;br /&gt;
$. numéro de ligne courant du dernier fichier lu&lt;br /&gt;
@INC: chemin des modules perls, pour rajouter un chemin : #!/usr/bin/perl -I /usr/local/monys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les variables d&amp;#039;erreur==&lt;br /&gt;
 $@ message d&amp;#039;erreur du dernier eval() (si vide OK)&lt;br /&gt;
 $! erreur système courante (errno) - utilisé en numérique ou en texte&lt;br /&gt;
 $^E informations d&amp;#039;erreur spécifiques à l&amp;#039;OS sinon $! (linux)&lt;br /&gt;
 $? statut de sortie&lt;br /&gt;
&lt;br /&gt;
==Les variables système==&lt;br /&gt;
 $0 nom du programme en train de s&amp;#039;éxecuter&lt;br /&gt;
 $$ n° de process en train de s&amp;#039;éxécuter&lt;br /&gt;
 %ENV variables d&amp;#039;environnement&lt;br /&gt;
 @INC: liste des répertoires où Perl va chercher des modules (do, require ou use)&lt;br /&gt;
&lt;br /&gt;
==Les tableaux et hachages==&lt;br /&gt;
===Taille d&amp;#039;un tableau ===&lt;br /&gt;
 scalar(@tableau)&lt;br /&gt;
 $#tableau = indice du dernier élément du tableau, = scalar(@tableau)-1&lt;br /&gt;
 scalar keys %hachage = taille d&amp;#039;une table de hachage&lt;br /&gt;
 $var=undef pour supprimer une variable.&lt;br /&gt;
&lt;br /&gt;
===Le hachage===&lt;br /&gt;
 $hash{&amp;#039;nom&amp;#039;}=valeur;&lt;br /&gt;
&lt;br /&gt;
:voir values, keys, sort,delete&lt;br /&gt;
* keys(%hachage) donne le tableau des clés du hachage&lt;br /&gt;
* values(%hachage) donne le tableau des valeurs du hachage&lt;br /&gt;
* delete &lt;br /&gt;
&lt;br /&gt;
le module Tie::Hash permet de travailler sur un hachage lié.&lt;br /&gt;
&lt;br /&gt;
===hachage de tableau===&lt;br /&gt;
utilisation @{ $self-&amp;gt;{rrd} }&lt;br /&gt;
&lt;br /&gt;
===hachage de hachage===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my %FAI;&lt;br /&gt;
%FAI = (&lt;br /&gt;
  tele2 =&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    name =&amp;gt; &amp;#039;tele2&amp;#039;,&lt;br /&gt;
    ip   =&amp;gt; &amp;#039;192.168.1.64&amp;#039;,&lt;br /&gt;
    gw   =&amp;gt; &amp;#039;192.168.1.254&amp;#039;,&lt;br /&gt;
    iface   =&amp;gt; &amp;#039;eth2&amp;#039;,&lt;br /&gt;
    smtp =&amp;gt; &amp;#039;smtp.tele2.fr&amp;#039;,&lt;br /&gt;
  },&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foreach my $acces ( keys %FAI  )&lt;br /&gt;
{&lt;br /&gt;
  print &amp;quot;$acces :\n&amp;quot;;&lt;br /&gt;
  for my $elem ( keys %{ $FAI{$acces} })&lt;br /&gt;
  {&lt;br /&gt;
    print &amp;quot;$elem: $FAI{$acces}{$elem}\n&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  print &amp;quot;------------\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Boucles et contrôles=&lt;br /&gt;
&lt;br /&gt;
 @text=(&amp;quot;text1&amp;quot;,&amp;quot;text2&amp;quot;);&lt;br /&gt;
 foreach $line (@text){}&lt;br /&gt;
&lt;br /&gt;
 if{}&lt;br /&gt;
 elsif{}&lt;br /&gt;
 else{}&lt;br /&gt;
 for($i=0;$i&amp;lt;n;$i++){}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Manipulation de fichiers=&lt;br /&gt;
==Lire/Ecrire dans un fichier==&lt;br /&gt;
&lt;br /&gt;
 $file=&amp;quot;test&amp;quot;;&lt;br /&gt;
 open(FILE,&amp;quot;$file&amp;quot;) or die &amp;quot;$file: $!&amp;quot;;&lt;br /&gt;
 open(FILE,&amp;quot;&amp;gt;$file&amp;quot;) # ouverture en écriture&lt;br /&gt;
 foreach(&amp;lt;FILE&amp;gt;)&lt;br /&gt;
 {&lt;br /&gt;
 ....&lt;br /&gt;
 }&lt;br /&gt;
 close(FILE)&lt;br /&gt;
&lt;br /&gt;
Le module File::Path donne la fonction mkpath (équivalent à mkdir -p)&lt;br /&gt;
mkpath (chemin,0,0777)&lt;br /&gt;
0:mkpath n&amp;#039;affiche pas les noms des répertoires de leur création&lt;br /&gt;
0777: droits sur le répertoire&lt;br /&gt;
&lt;br /&gt;
==renommer un fichier==&lt;br /&gt;
 rename ANCIENNOM, NOUVEAUNOM (détruit nveau nom s&amp;#039;il existe)&lt;br /&gt;
&lt;br /&gt;
* #autoflush&lt;br /&gt;
$| si =1 autoflush sur un handle de fichier autre que stdout.&lt;br /&gt;
Mieux vaut utiliser IO::File et la fonction autoflush():&lt;br /&gt;
Mieux vaut utiliser IO::File et la fonction autoflush():&lt;br /&gt;
&lt;br /&gt;
 use IO::File;&lt;br /&gt;
 perldoc IO::File&lt;br /&gt;
 $fh = new IO::File;&lt;br /&gt;
 $fh-&amp;gt;open(&amp;quot;&amp;gt; fichier&amp;quot;) or die &amp;quot;Erreur: $!&amp;quot;;&lt;br /&gt;
 $fh-&amp;gt;autoflush(1);&lt;br /&gt;
&lt;br /&gt;
==Fonctions de traitement de texte==&lt;br /&gt;
* tr&lt;br /&gt;
* substr (EXPR, OFFSET, LONGUEUR)&lt;br /&gt;
&lt;br /&gt;
==Expressions rationelles (regexp)==&lt;br /&gt;
 if ($line =~ /regexp/) { do ;}&lt;br /&gt;
 Metacaractères: \|()[]{}^$*+?.&lt;br /&gt;
 |       alternative&lt;br /&gt;
 ()      regroupements&lt;br /&gt;
 $       fin de ligne&lt;br /&gt;
 ^       début de ligne&lt;br /&gt;
 *       0 ou +&lt;br /&gt;
 +       1 ou +&lt;br /&gt;
 ?       0 ou 1&lt;br /&gt;
&lt;br /&gt;
 \b      limite de mot&lt;br /&gt;
 \r      retour chariot&lt;br /&gt;
 \t      tabulation&lt;br /&gt;
 \f      saut de page&lt;br /&gt;
 \s      [ \t\r\n\f] (espace)&lt;br /&gt;
 \S      un caractère autre qu&amp;#039;un espace&lt;br /&gt;
 \e      echappement&lt;br /&gt;
 \W      un caractère ailleurs que dans un mot&lt;br /&gt;
 \w      [0-9a-zA-Z_]&lt;br /&gt;
 \w+     recherche de mot&lt;br /&gt;
&lt;br /&gt;
 $var =~ tr/A-Z/a-z/; #convertit $var en minuscule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Gestion du temps=&lt;br /&gt;
 ($user,$system,$cuser,$csystem) = times;  &lt;br /&gt;
 my  ($t0) = time; #initial time&lt;br /&gt;
 my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst)=localtime(time);&lt;br /&gt;
 if ($year &amp;lt; 100) { $year+=2000; } else { $year+=1900; }&lt;br /&gt;
 $month++;&lt;br /&gt;
&lt;br /&gt;
=Modules et objets=&lt;br /&gt;
==constructeur et destructeur==&lt;br /&gt;
* new()&lt;br /&gt;
* destroy()&lt;br /&gt;
&lt;br /&gt;
==methodes==&lt;br /&gt;
 my $self=shift;&lt;br /&gt;
&lt;br /&gt;
* Exemples&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package lsi::group;&lt;br /&gt;
&lt;br /&gt;
#note :ligne suivante (variable) obligatoire&lt;br /&gt;
$groupdel=&amp;quot;/usr/bin/groupdel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
sub new&lt;br /&gt;
{&lt;br /&gt;
  my ($class, $name, $gid, $users, $type)=@_;&lt;br /&gt;
  my $fileopen=0;&lt;br /&gt;
  my $self = {&lt;br /&gt;
              name     =&amp;gt; $name,&lt;br /&gt;
              gid      =&amp;gt; $gid,&lt;br /&gt;
              users    =&amp;gt; $users,&lt;br /&gt;
              type     =&amp;gt; $type,&lt;br /&gt;
              fileopen =&amp;gt; $fileopen,&lt;br /&gt;
             };&lt;br /&gt;
  bless $self;&lt;br /&gt;
  return $self;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub print&lt;br /&gt;
{&lt;br /&gt;
  my $self=shift;&lt;br /&gt;
  print &amp;quot;$self-&amp;gt;{type}:&amp;quot;,&lt;br /&gt;
        &amp;quot;$self-&amp;gt;{name}:&amp;quot;,&lt;br /&gt;
        &amp;quot;$self-&amp;gt;{gid}:&amp;quot;,&lt;br /&gt;
        &amp;quot;$self-&amp;gt;{users}:\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Modules perl=&lt;br /&gt;
==Options==&lt;br /&gt;
&lt;br /&gt;
http://www.aplawrence.com/Unix/perlgetopts.htm&lt;br /&gt;
&lt;br /&gt;
===options std===&lt;br /&gt;
use Getopt::Std;&lt;br /&gt;
my %opt=();&lt;br /&gt;
getopts(&amp;#039;h:i&amp;#039;,\%opt);&lt;br /&gt;
-h arg donne $opt{h}=arg;&lt;br /&gt;
-i donne $opt{i}=1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===options long===&lt;br /&gt;
use Getopt::long&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;GetOptions(&amp;quot;dvi!&amp;quot;,&lt;br /&gt;
            &amp;quot;debug!&amp;quot;,&amp;quot;help&amp;quot;,&amp;quot;h&amp;quot;,&lt;br /&gt;
            &amp;quot;char-size=i&amp;quot;,&amp;quot;doc-type=s&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
les options :&lt;br /&gt;
* --dvi   donne $opt_dvi=1;&lt;br /&gt;
* --nodvi donne $opt_dvi=0;&lt;br /&gt;
* --help  donne $opt_help=1;&lt;br /&gt;
* --char-size=11 donne $opt_char_size=11; (i=integer)&lt;br /&gt;
* --doc-type=report donne $opt_doc_type=&amp;quot;report&amp;quot;; (s=string)&lt;br /&gt;
&lt;br /&gt;
==Gestion du temps==&lt;br /&gt;
http://datetime.mongueurs.net/Perl/faq.html&lt;br /&gt;
&lt;br /&gt;
==Syslog==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use Sys::Syslog qw(:DEFAULT setlogsock);&lt;br /&gt;
&lt;br /&gt;
sub log&lt;br /&gt;
{&lt;br /&gt;
  setlogsock(&amp;#039;unix&amp;#039;);&lt;br /&gt;
  openlog(&amp;quot;check_system&amp;quot;,&amp;#039;cons,pid&amp;#039;,&amp;#039;user&amp;#039;);&lt;br /&gt;
  syslog(&amp;#039;notice&amp;#039;,@_);&lt;br /&gt;
  closelog();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Manipuler les bases de données==&lt;br /&gt;
DBI: http://search.cpan.org/~timb/DBI/DBI.pm&lt;br /&gt;
===CONNECT===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$dbh = DBI-&amp;gt;connect(&amp;quot;DBI:$DB_TYPE:database=$db_database;host=$db_server&amp;quot;,$db_usercode,$db_password) || die &amp;quot;\nCannot acces&lt;br /&gt;
  s $DB_TYPE server!\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===SELECT===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $sth = $dbh-&amp;gt;prepare(q{SELECT id FROM table_name WHERE a=? and b=?  });&lt;br /&gt;
  $rc = $sth-&amp;gt;execute($a_value,$b_value)|| die ;&lt;br /&gt;
  ($id) = $sth-&amp;gt;fetchrow_array;&lt;br /&gt;
  while ( my @r = $sth-&amp;gt;fetchrow_array ){print $r[0];}&lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
===INSERT===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $sth = $dbh-&amp;gt;prepare(q{INSERT INTO summary (year,month) VALUES (?,?)});&lt;br /&gt;
  $rc = $sth-&amp;gt;execute($year,$month);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===DELETE===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $dbh-&amp;gt;prepare(q{DELETE from logs WHERE year=? AND month=? AND ltype=?});&lt;br /&gt;
  $rc = $sth-&amp;gt;execute($year, $month, $ltype) || die &amp;quot;can&amp;#039;t delete in DB&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;     &lt;br /&gt;
&lt;br /&gt;
==Créer un fichier temporaire sécurisé==&lt;br /&gt;
Permet de se prémunir des races conditions&lt;br /&gt;
http://www.perldoc.com/perl5.6/lib/File/Temp.html&lt;br /&gt;
&lt;br /&gt;
 use File::Temp qw/ tempfile tempdir /;&lt;br /&gt;
 ($fh, $filename) = tempfile($template);  &lt;br /&gt;
 my ($fh, $logtmp) = tempfile(&amp;quot;/tmp/monys.XXXXXX&amp;quot;);&lt;br /&gt;
 `cat $file &amp;gt; $logtmp` &lt;br /&gt;
&lt;br /&gt;
==Reverse DNS==&lt;br /&gt;
 gethosbyaddr (avec inet_ntoa,inet_aton)&lt;br /&gt;
ou&lt;br /&gt;
 NET::DNS &lt;br /&gt;
&lt;br /&gt;
==Net::SNMP==&lt;br /&gt;
http://search.cpan.org/~dtown/Net-SNMP/lib/Net/SNMP.pm&lt;br /&gt;
&lt;br /&gt;
http://search.cpan.org/~dtown/Net-SNMP-5.2.0/lib/Net/SNMP.pm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my ($session, $error) = Net::SNMP-&amp;gt;session(&lt;br /&gt;
             -hostname  =&amp;gt; $host,&lt;br /&gt;
             -community =&amp;gt; $community,&lt;br /&gt;
          );&lt;br /&gt;
$session-&amp;gt;close;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===get===&lt;br /&gt;
 $result = $session-&amp;gt;get_request(-varbindlist =&amp;gt; [$oid]);&lt;br /&gt;
 print $result-&amp;gt;{$oid}, &amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
===get_table=== &lt;br /&gt;
 $result = $session-&amp;gt;get_table(-baseoid =&amp;gt; $boid);&lt;br /&gt;
 foreach my $ooid (keys(%{$session-&amp;gt;var_bind_list}))&lt;br /&gt;
 {&lt;br /&gt;
    print &amp;quot;$ooid: $result-&amp;gt;{$ooid}\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==rrdtool - RRDs==&lt;br /&gt;
 RRDs::update ($rrdfile, $N);&lt;br /&gt;
 my $ERR=RRDs::error; die &amp;quot;ERROR $ERR\n&amp;quot; if $ERR;&lt;br /&gt;
&lt;br /&gt;
rrdtool::oo&lt;br /&gt;
&lt;br /&gt;
* http://perlmeister.com/devel/RRDTool-OO/docs/html/RRDTool/OO.html&lt;br /&gt;
&lt;br /&gt;
==LWP==&lt;br /&gt;
* http://articles.mongueurs.net/magazines/linuxmag56.html&lt;br /&gt;
* http://articles.mongueurs.net/magazines/linuxmag57.html&lt;br /&gt;
* http://articles.mongueurs.net/magazines/linuxmag58.html&lt;br /&gt;
* http://lwp.interglacial.com/index.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{copy|2007-2009|Christophe de Livois|FDL}}&lt;/div&gt;</summary>
		<author><name>192.168.10.1</name></author>
	</entry>
</feed>