This will do what you need, however, you will need to adapt the untainting regex to your particular requirements. I was a little uncertain about processing a regex with backticks, so I used taintmode.
#!usr/bin/perl -Tw
use warnings;
use strict;
opendir my $dh, './testdir/'; #assume all files, no sub dirs
my @filelist = readdir($dh);
close($dh);
my $rep = qr'<>';
while (@filelist){
my $basefile = shift @filelist;
next unless $basefile =~ m/^((\w+\s*)+\.(pl|txt))$/;
$basefile = $1;
my $pathfile = './testdir/'.$basefile;
open (my $rfh, '<', $pathfile);
my @filelines;
while (<$rfh>){
$_ =~ s/$rep/\`<>\`/g;
push @filelines, $_;
}
close($rfh);
open (my $wfh, '>', $pathfile);
while (@filelines){
my $line = shift @filelines;
print $wfh $line;
}
close($wfh);
}
exit 0;
|