#!c:/perl/bin/perl -w use strict; use Getopt::Long(); use File::Find(); my $opt = { }; sub Convert { my $f = shift; return unless -f $f && ! -z _; print "Loading file $f\n" if $opt->{'verbose'}; open(FILE, "<$f") || die "Failed to open file $f: $!"; binmode(FILE) || die "Failed to request binary mode for $f: $!"; my $contents; { local $/ = undef; $contents = ; } die "Failed to read $f: $!" unless defined $contents; close(FILE) || die "Failed to close $f: $!"; my $newcontents = $contents; $newcontents =~ s/\r\n/\n/sg; if ($contents ne $newcontents) { print "Modifying file $f\n" if $opt->{'verbose'}; (open(FILE, ">$f") && binmode(FILE) && (print FILE $newcontents) && close(FILE)) || die "Failed to open file $f: $!"; } } Getopt::Long::GetOptions($opt, "dir=s", "verbose"); if (@ARGV) { foreach my $f (@ARGV) { Convert($f); } } else { my $dir = $opt->{'dir'} || "."; die "No such directory: $dir" unless -d $dir; File::Find::find(sub { Convert($File::Find::name) }, $dir); }