Phoenix.pm: Mac/Windows -> Unix line endings
Douglas E. Miles
doug.miles at bpxinternet.com
Fri Nov 5 12:14:27 CST 1999
Kevin Buettner wrote:
>
> On Nov 5, 10:12am, Douglas E. Miles wrote:
>
> > This is a little script that I use to convert Mac/Windows format files
> > to Unix format:
>
> Sometimes you want to convert all the files in a given directory
> hierarchy. I wrote the following script which'll find all the text
> files and convert them to have unix line endings. The original files
> are preserved as *.bak-<NUMBER> where <NUMBER> is a a representation of
> the date as given by time(). (Do a "rm -f `find . -name '*.bak-*'`"
> when you want to get rid of the backup files.)
>
> Regarding the following line:
>
> s/\015\012?/\012/g;
Good point!
> I wrote it this way for portability. I read in "The Perl Journal"
> that Perl on some non-unix platforms will convert \n and the like to
> platform specific equivalents. Written in the above fashion, you
> should be able to run it on a Mac or on some version of Windows and
> have it work the same way as on Unix. This could be useful if you are
> forced to do development on a non-unix system, but still need to
> periodically check your code into a unix based source respository.
>
> --- fix-newlines ---
> #!/usr/bin/perl -w
>
> use File::Find;
> use FileHandle;
> use English;
>
> my ($root) = @ARGV;
>
> if (!defined($root)) {
> die "Usage: $0 root\n";
> }
>
> @ARGV = ();
>
> find(
> sub {
> if (-f && -T) {
> push @ARGV, $File::Find::name;
> }
> },
> $root
> );
>
> $INPLACE_EDIT = '.bak-' . time();
>
> while (<>) {
> s/\015\012?/\012/g;
> print;
> }
> --- end fix-newlines ---
Cool!
--
For a list of the ways which technology has failed
to improve our quality of life, press 3.
More information about the Phoenix-pm
mailing list