<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://blaireaulinux.fr//wiki/index.php?action=history&amp;feed=atom&amp;title=Perl_-_exemples</id>
	<title>Perl - exemples - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="http://blaireaulinux.fr//wiki/index.php?action=history&amp;feed=atom&amp;title=Perl_-_exemples"/>
	<link rel="alternate" type="text/html" href="http://blaireaulinux.fr//wiki/index.php?title=Perl_-_exemples&amp;action=history"/>
	<updated>2026-05-28T01:10:25Z</updated>
	<subtitle>Historique des révisions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.37.0</generator>
	<entry>
		<id>http://blaireaulinux.fr//wiki/index.php?title=Perl_-_exemples&amp;diff=29&amp;oldid=prev</id>
		<title>AdminWiki : Page créée avec « Category: perl  ==Affiche une table de multiplication (passage de paramètre, regexp)==   #!/usr/bin/perl  # Affiche une table de multiplication.  use strict;  use war... »</title>
		<link rel="alternate" type="text/html" href="http://blaireaulinux.fr//wiki/index.php?title=Perl_-_exemples&amp;diff=29&amp;oldid=prev"/>
		<updated>2013-09-16T13:30:18Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « &lt;a href=&quot;/wiki/index.php?title=Cat%C3%A9gorie:Perl&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Catégorie:Perl (page inexistante)&quot;&gt;Category: perl&lt;/a&gt;  ==Affiche une table de multiplication (passage de paramètre, regexp)==   #!/usr/bin/perl  # Affiche une table de multiplication.  use strict;  use war... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category: perl]]&lt;br /&gt;
&lt;br /&gt;
==Affiche une table de multiplication (passage de paramètre, regexp)==&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/perl&lt;br /&gt;
 # Affiche une table de multiplication.&lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 &lt;br /&gt;
 my $nb; # Le nombre dont on veut afficher la table.&lt;br /&gt;
 &lt;br /&gt;
 # Teste si on a passe le nombre en parametre, sinon le demande.&lt;br /&gt;
 if ($ARGV[0]) {&lt;br /&gt;
     $nb = $ARGV[0];&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
     print &amp;quot;Quelle table de multiplication voulez-vous afficher ? &amp;quot;;&lt;br /&gt;
     $nb = &amp;lt;&amp;gt;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # On supprime le saut de ligne pour l&amp;#039;affichage&lt;br /&gt;
 chomp $nb;&lt;br /&gt;
 # On vérifie que $nb est bien une valeur numérique (on autorise les nb negatifs et a virgule).&lt;br /&gt;
 if (!($nb =~ /^(\-)?\d+(\.\d*)?+$/)) { die &amp;#039;Erreur : &amp;quot;&amp;#039; . $nb . &amp;#039;&amp;quot;&amp;#039; . &amp;quot; n&amp;#039;est pas un nombre.\n&amp;quot;; }&lt;br /&gt;
 &lt;br /&gt;
 # On affiche la table&lt;br /&gt;
 for(my $i = 1; $i &amp;lt;= 10; $i++) {&lt;br /&gt;
     print &amp;quot;$nb x $i = &amp;quot; . $nb * $i . &amp;quot;\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Recherche et compresse un fichier==&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/perl&lt;br /&gt;
 #&lt;br /&gt;
 # 2013-03-19 : author@domain&lt;br /&gt;
 #              This script search for last month Oracle backup log.&lt;br /&gt;
 #              If this file exist, the script compress it. If not, do nothing.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ## Variables&lt;br /&gt;
 my $log_path = &amp;quot;/apps/oracle/backup/log/&amp;quot;;&lt;br /&gt;
 my $hostname = `hostname`; chomp($hostname);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ## Determines last month number (two digits)&lt;br /&gt;
 ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
 $month     += 1;&lt;br /&gt;
 $year      += 1900;&lt;br /&gt;
 $p_year     = $year;&lt;br /&gt;
 $prev_month = $month -1;                        if ($prev_month == 0) { $prev_month = 12; $p_year = $year -1; };&lt;br /&gt;
 $prev_month = sprintf(&amp;quot;%02d&amp;quot;,$prev_month);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ## Test if log file exist and compress it&lt;br /&gt;
 my $log_file = $log_path.$hostname.&amp;quot;_&amp;quot;.$prev_month.&amp;quot;.lst&amp;quot;;&lt;br /&gt;
 if (! -e $log_file ) {&lt;br /&gt;
     print &amp;quot;ERROR: log file &amp;#039;$log_file&amp;#039; not found.\n&amp;quot;;&lt;br /&gt;
     print &amp;quot;Aborting.\n&amp;quot;;&lt;br /&gt;
     exit 2; }&lt;br /&gt;
 else {&lt;br /&gt;
     print &amp;quot;Log file &amp;#039;$log_file&amp;#039; found.\nCompressing.\n&amp;quot;;&lt;br /&gt;
     `gzip $log_file`;                           if ( $? != 0 ) { print &amp;quot;ERROR: unable to gzip $log_file.\nAborting.\n&amp;quot;; exit 2; }&lt;br /&gt;
     `mv $log_file&amp;quot;.gz&amp;quot; $log_file.$p_year&amp;quot;.gz&amp;quot;`; if ( $? != 0 ) { print &amp;quot;Warning: unable to rename $log_file.&amp;quot;; }&lt;br /&gt;
     print &amp;quot;Done.\n&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
==Solaris - consommation mémoire et cpu d&amp;#039;une liste de process==&lt;br /&gt;
&lt;br /&gt;
Le script suivi prend une liste de process (variable @list) et renvoie pour chacun le nombre de processus trouvés, ainsi que la somme des consommations mémoire et cpu. Le tout est retourné au format nagios. D&amp;#039;ailleurs, le template pnp4nagios correspondant est visible dans ce wiki.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/perl&lt;br /&gt;
 #&lt;br /&gt;
 # Script de surveillance pour nagios&lt;br /&gt;
 # Affiche la consommation memoire et cpu des process sas, ainsi que&lt;br /&gt;
 # leur nombre.&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ###################### Variables #################################&lt;br /&gt;
 my $mem = &amp;quot;&amp;quot;;&lt;br /&gt;
 my $cpu = &amp;quot;&amp;quot;;&lt;br /&gt;
 my %mem_total;&lt;br /&gt;
 my %cpu_total;&lt;br /&gt;
 my %nb_proc;&lt;br /&gt;
 my $status = 0;&lt;br /&gt;
 my @list = (&amp;quot;sasexe&amp;quot;, &amp;quot;sasauth&amp;quot;, &amp;quot;elssrv&amp;quot;);&lt;br /&gt;
 my $text = &amp;quot;Status Ok&amp;quot;;&lt;br /&gt;
 my $perf_data = &amp;quot;&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ##################################################################&lt;br /&gt;
 # Programme principal                                            #&lt;br /&gt;
 ##################################################################&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 my @ps = `ps -edf`;&lt;br /&gt;
 &lt;br /&gt;
 foreach my $re_proc(@list) {&lt;br /&gt;
     my @process = grep(/$re_proc/, @ps);&lt;br /&gt;
     $nb_proc{$re_proc} = scalar(@process);&lt;br /&gt;
     $mem_total{$re_proc} = 0;&lt;br /&gt;
     $cpu_total{$re_proc} = 0;&lt;br /&gt;
     foreach my $ps_line(@process) {&lt;br /&gt;
         # On supprime les espaces en debut et en fin&lt;br /&gt;
         $ps_line =~ s/(^\s+|\s+$)//;&lt;br /&gt;
         # Recuperation des infos sur les process&lt;br /&gt;
         my($user, $pid, $ppid) = split(/\s+/, $ps_line);&lt;br /&gt;
         # Lancement d&amp;#039;un prstat&lt;br /&gt;
         my $cmd = &amp;quot;prstat -p $pid 1 1&amp;quot;;&lt;br /&gt;
         my @prstat = `$cmd`;&lt;br /&gt;
         # Recuperation de la ligne qui nous interesse et decoupage&lt;br /&gt;
         my @info = split(/\s+/, $prstat[1]);&lt;br /&gt;
         my($mem, $cpu) = ($info[3], $info[9]);&lt;br /&gt;
         # Realignement de la memoire en octet&lt;br /&gt;
         my $unit_count = 1024;&lt;br /&gt;
         foreach my $unit(&amp;quot;K&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;T&amp;quot;) {&lt;br /&gt;
             if($mem =~ /(\d+)$unit$/) {&lt;br /&gt;
             $mem = $1 * $unit_count&lt;br /&gt;
             }&lt;br /&gt;
             $unit_count *= 1024;&lt;br /&gt;
         }&lt;br /&gt;
         $mem_total{$re_proc} += $mem;&lt;br /&gt;
         $cpu_total{$re_proc} += $cpu;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 foreach my $re_proc(@list) {&lt;br /&gt;
     $perf_data = $perf_data.&amp;quot;cpu_$re_proc=&amp;quot;.$cpu_total{$re_proc}.&amp;quot; mem_$re_proc=&amp;quot;.$mem_total{$re_proc}.&amp;quot;  nb_proc_$re_proc=&amp;quot;.$nb_proc{$re_proc}.&amp;quot; &amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 print $text.&amp;quot;|&amp;quot;.$perf_data.&amp;quot;\n&amp;quot;;&lt;br /&gt;
 exit $status&lt;br /&gt;
&lt;br /&gt;
Exemple de résultat :&lt;br /&gt;
&lt;br /&gt;
 Status Ok|cpu_sasexe=11 mem_sasexe=5545918464 nb_proc_sasexe=40 cpu_sasauth=0 mem_sasauth=13516800 nb_proc_sasauth=3 cpu_elssrv=0 mem_elssrv=107380736 nb_proc_elssrv=37&lt;/div&gt;</summary>
		<author><name>AdminWiki</name></author>
	</entry>
</feed>