recuperation d'un "ARRAY" dans un tableau..

recuperation d'un "ARRAY" dans un tableau.. - Perl - Programmation

Marsh Posté le 13-08-2002 à 13:48:29    

sub recupNomType{
    my ($obj)=shift;
    my ($fich)=shift;
  my($nom,$i,$fin,$type)=undef;
    $i=rindex($fich,'.';);  
    if(($i)eq(-1)){
      $fin=1;
    $nom=$fich;
  }else{
        $nom=substr($fich,0,($i));
    $type=substr($fich,($i+1),(length($fich)-($i+1)));
   }
  return $nom,$type;
 
}
 
 
 
 
 
 
 
 
my ($RepCourant) = cwd();
my ($RepTemp) = $volume.$dir;
my (@Fichiers)=[];
# récupération des fichiers contenus dans c:\Temp
chdir($RepTemp);
         
@_ = <*>;  
# on vire tous les rép récupérés dans l'instruction précédente
foreach(@_) {
       if (! -d $_) { # si pas un répertoire, on récupère
            push(@Fichiers, $_);
       }
}  
 
# test si le fichier est "*.*" ==> copie de tous les fichiers #d'un repertoire
 
($nom,$typ)=$obj->recupNomType($fich);
my ($etNom)=(($nom)eq('*';));
my ($etTyp)=(($typ)eq('*';));
        if((($etNom)ne(undef))and(($etTyp)ne(undef))){
        foreach(@Fichiers){
                              if(index($_,'ARRAY(';)eq -1){# test si la valeur est l' "ARRAY" non désiré
                           $ret=copy($_,$repSave.$_);
                if(($ret)ne(1)){
                               $noPb=0;
                                }
                    }            
         }
}
 
 
 
par ce code , je recupère la liste des fichiers et repertoires d'un dossier.Si une valeur est un fichier, je le copie dans un repertoire de sauvegarde.
le probleme est qu'au final, je retrouve la valeur  
ARRAY(...qqchose...)comme 1er element du tableau @Fichiers.  
ceci m'embete un peu car il a ppour concequence de signaler un probleme dans la copie ( noPB=0 realise ce signalement ).
 
j'aimerai bien savoir d'ou vient cet ARRAY car il n'aparait pas dans la liste des fichiers récupéré...
et comment detecter sa presence autrement  que par le test que j'efectue ? ( (index($_,'ARRAY(';) )
 

Reply

Marsh Posté le 13-08-2002 à 13:48:29   

Reply

Marsh Posté le 14-08-2002 à 15:07:39    

Rhaa j'ai trouvé :)
 
Il m'a fallu du temps pour comprendre ton problème mais en fait c'est tout bête :
 
quand tu fais :  

Code :
  1. my (@Fichiers)=[];


 
tu ne crées pas un tableau mais une référence vers un tableau (à cause des crochets). Il faut en faire ceci :

Code :
  1. my @Fichiers = ();


 
ça marchera sûrement mieux :D


Message édité par Tentacle le 14-08-2002 à 15:12:00
Reply

Marsh Posté le 14-08-2002 à 17:18:00    

j'ai bien remplacés les [] par ()...  
je retrouve toujours l'ARRAY....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed