Code :
 #!/usr/bin/perl   use strict; use warnings;   my ($in, $out); my ($ip, $mac); my $macpattern = "(([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2})"; # ouvre le fichier $in en lecture seule open($in,  "<",  'leases.in') or die "cannot open $in for reading: $!";  my $inleasebloc = 0; # tant que lecture ligne fichier while (<$in> ) {     if (not $inleasebloc) {         # si adresse IP dans la ligne, capture l'IP         if (/^lease\ s+ (\d+\.\d+\.\d+\.\d+ )\ s+\ {/o ) {             $inleasebloc = 1;             $ip = $1;         }     }     else {         if (/^lease\ s+ (\d+\.\d+\.\d+\.\d+ )\ s+\ {/o ) {             # On pourrait émettre un message d'erreur comme quoi le bloc n'est pas fermé correctement                 open($out,  ">",  'leases.out') or die "cannot open $out for writing: $!";              }             $mac =  "unknown" unless defined($mac);              print $out "IP: $ip - MAC: $mac\n";              $inleasebloc = 1;             $ip = $1;         }         if (/hardware\ s+ethernet\ s+ $macpattern\ s*;/o ) {             $mac = $1;         }             $inleasebloc = 0;             # ouvre en écriture le fichier $out (s'il n'existe pas, il est créé)                 open($out,  ">",  'leases.out') or die "cannot open $out for writing: $!";              }             $mac =  "unknown" unless defined($mac);              print $out "IP: $ip - MAC: $mac\n";          }     } } 
 
  |