Déplacement fichier

Déplacement fichier - Perl - Programmation

Marsh Posté le 28-01-2015 à 16:54:11    

Bonjour,
 
J'aurais besoin de déplacer un fichier.
j'ai le petit bout de code ci-dessous qui est censé le faire mais rien ne se passe !
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use File::Copy qw/move/;
  5. my $fichier = 'D:/temp/toto.txt';
  6. my $destination = 'D:/temp/Archive/toto.txt';
  7. move($fichier, $destination);


 
Je suis sur un environnement Windows ! Y a t'il une faute dans ma commande ?
 
Merci d'avance.

Reply

Marsh Posté le 28-01-2015 à 16:54:11   

Reply

Marsh Posté le 29-01-2015 à 13:34:31    

Bonjour,

 

Je ne connais pas le Perl mais à mon avis, dans le chemin de destination,  tu ne dois préciser que le dossier

Code :
  1. (my $destination = 'D:/temp/Archive/';)

 

et non pas le chemin entier avec le fichier. (Avec ou sans slash à la fin.)


Message édité par slr56 le 29-01-2015 à 13:35:17

---------------
Configurations type du moment : https://forum.hardware.fr/hfr/Hardw [...] 1331_1.htm  https://www.jouannetphotographe.com
Reply

Marsh Posté le 29-01-2015 à 13:40:09    

Merci slr56 pour ta réponse.
En fait j'ai résolu mon problème avec le code suivant :
 

Code :
  1. #!/usr/bin/perl
  2.     use strict;
  3.     use warnings;
  4.     use File::Copy;
  5.     my $fichier = '"D:\\temp\\toto.txt";
  6.     my $destination = "D:\\temp\\Archive";
  7.     move($fichier,$destination);

Reply

Marsh Posté le 29-01-2015 à 16:15:51    

Sauf que la solution de slr56 est meilleure.
Ou a la limite
my $fichier = 'D:\temp\toto.txt';
my $destination = 'D:\temp\Archive';
Mais on n'utilise pas de " autour d'un nom de fichier en perl si le nom est constant. C'est une habitude à prendre.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 29-01-2015 à 16:46:32    

Ok merci pour l'info.
 
Cependant est-il possible de déclarer des variables génériques ?
Je m'explique :
 
Je voudrais déclarer la variable $fichier du genre :

Code :
  1. my $fichier = 'D:\temp\toto*.txt';


 
Tout simplement car par exemple le fichier peut-être de la forme toto.AAAA.MM.JJ.txt.
 
Est-ce que cela est possible en perl svp ?

Reply

Marsh Posté le 29-01-2015 à 16:53:32    

Il suffit de déclarer la variable comme ci-dessous:

Code :
  1. my $fichier = glob('D:\temp\toto*.txt');

Reply

Marsh Posté le 29-01-2015 à 19:54:23    

Non, ça marche pas ainsi:
D:\temp\toto*.txt c'est une expression régulière /D:\\temp\\toto.*\.txt/
donc tout dépend ensuite de ta manière de l'utiliser.

 

glob ça renvoie normalement une liste (qu'on assigne a une variable de liste), alors si tu as plus d'un fichier qui matche ton expression régulière, c'est mal barré, car avec une variable scalaire alors glob va te renvoyer le premier élément de la liste (et des appels suivants a glob sans paramètres renvoient les éléments de la liste, un a un).
Si tu es sur qu'il y a un seul fichier qui matche, ça marche en effet, mais compter la dessus, euh...

 

A+,


Message édité par gilou le 30-01-2015 à 12:17:06

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 30-01-2015 à 08:55:32    

D'accord ! Donc quelle est la manière la plus efficace pour déclarer la variable stp ?

Reply

Marsh Posté le 30-01-2015 à 12:14:49    

Comme je te l'ai dit, pour savoir si tu as besoin d'une liste (my @fichiers = glob('D:\temp\toto*.txt');) ou d'une regexp (my $fileregexp =qr/D:\\temp\\toto.*\.txt/;) ça dépend de ce que tu vas en faire.
A+,


Message édité par gilou le 30-01-2015 à 12:16:16

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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