1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| #!/opt/perl5/bin/perl -w
use strict;
use diagnostics;
# -------------------------------------
# Vérification des paramètres du script
# en mettant !$ARGV[0] j'inverse la confidition if sur la variable
if (!$ARGV[0])
{
print(
"\n\nPas de parametre en entree du script.\n\n",
" Veuillez lancer le script de cette facon:\n",
" sous windows: perl -w script fichier_input\n",
" sous unix: ./script fichier_input\n\n"
);
exit(0);
}
# unless est l'inverse de if
unless ( -e $ARGV[0] )
{
print(
"\n\nLe fichier passe en parametre n'existe pas.\n\n",
"Veuillez verifier que le nom du fichier est exact et ",
"qu'il se trouve dans le meme repertoire que le script\n\n"
);
exit(0);
}
else
{
print ("\n\nDebut du traitement...\n");
_check_machin($ARGV[0]);
print ("\n\nFin du traitement...\n");
}
# -------------------------------------
# Fltrage des noms machine
sub _check_machin
{
# shift permet de récupérer $_[0] mais supprime celui-ci
my $file = shift;
open(FILE, "<", $file) or die ('Impossible d\'ouvrir le fichier !!!');
# On pose un vérrou sur le fichier
flock(FILE, 2);
# Parcour du fichier avec un while
# ne jamais utilier $_ a outrance a cause d'effets de bord pour les fichiers ayant bcp de lignes
while (my $data = <FILE> )
{
# l'attibut i du regxps signifie que tu ignore la casse
if ( $data =~ m/^(SD|SW|SR|RT|RS|FW)/i )
{
my ($nom, $serie);
# Ton traitement
# ....
# Etape finale
_make_output($nom,$serie);
}
}
# On supprime le vérrou
flock(FILE,8);
close(FILE);
}
# -------------------------------------
# Ajout de données au fichier de sortie
# Affichage des résultats
sub _make_output
{
my $nom = shift;
my $serie = shift;
print "-----Ajout de donnees-----------------------------------\n";
print "Nom : $nom\n";
print "Serie : $serie\n";
print "--------------------------------------------------------\n";
# >> indique a perl d'écrire de façon incrémentale
open(FILE, ">> outpout.txt") or die ('Unable to open output file $!');
flock(FILE, 2);
print FILE $nom ." ::: ". $serie;
flock(FILE, 8);
close(FILE);
} |
Partager