Liste fichier expression régulière

Liste fichier expression régulière - Perl - Programmation

Marsh Posté le 09-04-2015 à 11:52:35    

Bonjour,
 
Je voudrais lister certain fichier d'un répertoire du type "toto@path=%2test".
 
J'ai commencé le code ci-dessous, le script liste bien les fichiers mais j'ai un message d'erreur.
 
Message d'erreur : Unrecognized escape \w passed through at D:\x128115\scripts\Perl\purge.pl line 15.
 

Code :
  1. use warnings;
  2. use File::Find;
  3. use Cwd;
  4. my $dir = "D:/temp";
  5. File::Find::find(\&search, ($dir));
  6. sub search {
  7.   if ($_ =~ "/\w/*path*" ) {
  8.     print "$_\n";
  9.   }
  10. }


 
Est-ce que quelqu'un aurait une idée d'ou cela provient svp ?
Merci d'avance.

Reply

Marsh Posté le 09-04-2015 à 11:52:35   

Reply

Marsh Posté le 09-04-2015 à 12:20:58    

ce sont les "..." qui ne collent pas je pense. Ça fait une string ordinaire, pas une regexp, et dans une string ordinaire, \w n'est pas interprétable.
$_ =~ {/\w/*path*} marcherait mieux, mais je comprends rien à ton expression régulière avec un /\w/ dedans :??: surtout que $_ est un simple nom de fichier, non?
et le $_ =~ est inutile dans un tel contexte, autant tester sur $_ en utilisant son rôle de variable par défaut.
Pourquoi ne pas tester simplement avec
if (/path/) {...}  
ou  
if (/@path=/) {...}  
 
A+,


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

Marsh Posté le 09-04-2015 à 12:39:25    

Merci Gilou pour ta réponse.
Effectivement désolé, je n'avais pas posté le bon code:
 
J'avais testé avec :
 

Code :
  1. if ($_ =~ "\w*path*" ) {


 
Du coup tu m'as mis sur la piste avec les guillemets et cela fonctionne avec :
 

Code :
  1. if ($_ =~ '\w*path*') {


 
Merci encore.

Reply

Sujets relatifs:

Leave a Replay

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