1#!/usr/local/bin/perl 2 3use Fcntl; 4 5 6# copy.pl 7 8# Perl script 'copy' comment. On Windows the built in "copy" command also 9# copies timestamps: this messes up Makefile dependencies. 10 11my $arg; 12 13foreach $arg (@ARGV) { 14 $arg =~ s|\\|/|g; # compensate for bug/feature in cygwin glob... 15 foreach (glob $arg) 16 { 17 push @filelist, $_; 18 } 19} 20 21$fnum = @filelist; 22 23if ($fnum <= 1) 24 { 25 die "Need at least two filenames"; 26 } 27 28$dest = pop @filelist; 29 30if ($fnum > 2 && ! -d $dest) 31 { 32 die "Destination must be a directory"; 33 } 34 35foreach (@filelist) 36 { 37 if (-d $dest) 38 { 39 $dfile = $_; 40 $dfile =~ s|^.*[/\\]([^/\\]*)$|$1|; 41 $dfile = "$dest/$dfile"; 42 } 43 else 44 { 45 $dfile = $dest; 46 } 47 sysopen(IN, $_, O_RDONLY|O_BINARY) || die "Can't Open $_"; 48 sysopen(OUT, $dfile, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY) 49 || die "Can't Open $dfile"; 50 while (sysread IN, $buf, 10240) 51 { 52 syswrite(OUT, $buf, length($buf)); 53 } 54 close(IN); 55 close(OUT); 56 print "Copying: $_ to $dfile\n"; 57 } 58 59 60