Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comparer les variables de 2 tableaux

1 réponse
Avatar
zeke03
Salut,

je debute en perl, et j'aurai besoin d'un peu d'aide : je voudrai faire deux
tableaux, et comparer les valeurs des 2 tableaux, une a une.
Ex:
dans mon tableau 1, j'ai les entrees suivantes :
153738796 26 /tmp/test_cksum/fic1
1509718246 132 /tmp/test_cksum/fic2

dans mon tableau 2, j'ai les entrees suivantes :
222222 26 /tmp/test_cksum/fic1
1509718246 132 /tmp/test_cksum/fic2

=> et je veux que mon prog me retourne une erreur, avec le nom du fichier
"fic1"
=> mais j'ai deux soucis :

- les tableaux ne marchent pas
- je n'ai aucune idee de comment on fait pour comparer les 2 tableaux!

#################################################################################
############################################

use File::Spec;
use Data::Dumper;

### Positionnement des variables
$reptra='/tmp/test_cksum';
$reptmp='/tmp';
$serv_local=srv1;
$server_distant=srv2;
$user_distant=user;


### Cksum des fichiers sur le serveur distant, avant rapatriement sur le serveur
local
print "\n ### Checksum des fichiers sur le serveur distant avant rapatriement
sur le serveur local \n\n";
$fichier_result= File::Spec->catfile($reptmp,"cksum_distant");

$cmd_cksum_distant = "ssh $user_distant\@$server_distant cksum $reptra/* >
$fichier_result";
system $cmd_cksum_distant;
$cmd_cksum_distant2 = "ssh $user_distant\@$server_distant cksum $reptra/*";
system $cmd_cksum_distant2;
@tab1 = $reptra/*;
print Dumper @tab1;


### Rapatriement des fichiers du serveur distant vers le serveur local
print "\n ### Lancement de la commande de rapatriement des fichiers en local...
\n\n";
$cmd_ssh_get = "scp -r $user_distant\@$server_distant:$reptra /tmp";
$CR_cmd_ssh_get = (system $cmd_ssh_get);

if ($CR_cmd_ssh_get eq 0)
{
print "\n ### Transfert de $server_distant vers $serv_local Ok\n";
}
else
{
print "\n ### Transfert de $server_distant vers $serv_local pas OK !!!\n\n";
}


### Verification de la concordance des checksums apres transfert SSH
print "\n ### Checksum des fichiers recus sur le serveur local...\n\n";

chdir $reptra or die "Impossible d'aller dans le repertoire de travail Cause: $!
\n";
$cmd_cksum_local = "cksum $reptra/*";
@tab_cksum_local = (system $cmd_cksum_local);
@tab2 = $reptra/*;
print Dumper @tab2;


print "\n ### Analyse des checksums avant et apres transfert...\n\n";
#comparer les valeurs de 2 tableaux ???
--
Ce message a été posté via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr

http://forums.club-internet.fr/

1 réponse

Avatar
Ronan Le Hy
zeke03 writes:
je debute en perl, et j'aurai besoin d'un peu d'aide : je voudrai faire deux
tableaux, et comparer les valeurs des 2 tableaux, une a une.
[snip]
$cmd_cksum_local = "cksum $reptra/*";
@tab_cksum_local = (system $cmd_cksum_local);
@tab2 = $reptra/*;
print Dumper @tab2;

#comparer les valeurs de 2 tableaux ???


#!/usr/bin/perl

use strict;
use warnings;

my ($fichier_1, $fichier_2) = @ARGV;

my ($checksum1, $bytecount1) = split ' ', `cksum $fichier_1`;
my ($checksum2, $bytecount2) = split ' ', `cksum $fichier_2`;

if ($checksum1 != $checksum2)
{
warn "$fichier_1 et $fichier_2 n'ont pas la meme somme CRCn";
}
else
{
warn "$fichier_1 et $fichier_2 ont la meme somme CRCn";
}

Au passage, observez:
- l'utilisation de strict et warnings ;
- les guillemets autour des chaines de caracteres ;
- la difference entre system et `` (cf perldoc -f system).

HTH

--
Ronan