use strict; use warnings; $_[0]=!@ARGV?<>:shift @ARGV; $_[1]=!@ARGV?<>:shift @ARGV; handlefix(); open(INFILE, '<', $_[0]) or die "\nCan't open $_[0]: $!\n"; open(OUTFILE, '>', $_[1]) or die "\nCan't open $_[1]: $!\n"; print OUTFILE map { my $s=$_; $s=~s/\s*#.*$//; $s } (grep { !/^\s*#/ } ), "\n" ; close INFILE && close OUTFILE; sub handlefix { for(@_){ chomp($_); $_=~s/"//g; $_=~s/\//\\/g; } }