#!/usr/bin/perl use strict; use warnings; (my $prog_name = $0) =~ s| ^ (?: .* [\\/])? (.*) \.pl $ |$1|x; (my $dirName = $ARGV[0]) or die "Usage: $prog_name "; opendir(DIR, $dirName) or die "Unable to open directory '$dirName': $!"; my @files = grep(/ \.txt $ /x, readdir(DIR)); closedir(DIR); chdir $dirName; # <-- EITHER add this foreach my $txtfile (@files) { # $txtfile = $dirName . '\\' . $txtfile; # <-- OR add this print "$txtfile\n"; open(my $input_fh, '<', $txtfile) or die "Unable to open file '$txtfile' for reading: $!"; undef($/); my $file = <$input_fh>; close $input_fh; $file =~ s/(<%--)?\s*/($1 ? '' : "\n<%-- ") . ""/ige; $file =~ s=\s*(-->)?='' . ($1 ? '' : " -->\n")=ige; print $file; open(my $output_fh, '>', $txtfile) or die "Unable to open file '$txtfile' for writing: $!"; print $output_fh $file; close $output_fh; }