J'essaie de lire un répertoire qui se compose de centaines de fichiers. Pour chaque fichier dans le répertoire, je suis supposé accéder (éditer) un autre fichier et remplacer une chaîne particulière 'information = nom de fichier' dans ce fichier par le nom des fichiers 'information =' présent dans '/ home/test/test_these_files'. Ceci est suivi par l'exécution du fichier '/home/test/controlfile.txt'. J'ai écrit le script suivant et j'ai essayé de passer les noms de fichiers en tant que tableau à remplacer (noms de fichiers dans la chaîne). Je sais que cela ne marchera pas, mais je ne suis pas sûr de ce qui va fonctionner. Aucune suggestion? FYI: le programme ne montre aucune erreur de compilation.Comment entrer différents noms de fichiers dans une chaîne qui doit être remplacée?
#!use/bin/perl
use strict;
use warnings;
my $find = 'information=filename';
opendir (DIR, "/home/test/test_these_files") || die "can't open directory";
my @files = grep(/.aa/, readdir(DIR));
print @files;
print "\n";
closedir(DIR);
foreach (@files) {
my $replace = 'information=<@files>'; # want to replace with 'information=<filenames>
#filenames are names of files present in the '/home/test/test_these_file' directory
open (FILE, '/home/test/controlfile.txt') || die "cant open file \n";
my @body = <FILE>;
print @body;
open (OUT, '>/home/test/controlfile.txt') || die "can't create file \n";
foreach $_ (@body) {
(s/$find/$replace/g);
print OUT "$_";
}
'perl /home/test/controlfile.txt';
close(FILE);
close(OUT);
}
exit;
L'indentation est votre ami. Qu'est-ce que '' perl /home/test/controlfile.txt ';' supposé faire? Et $ replace est mal réglé. – Schwern