#!/usr/bin/perl -w # # take.pl # # 1998-12-01 Fredrik Roubert # 2004-08-26 Fredrik Roubert # use strict; use File::Copy; use File::Temp; use POSIX 'strerror'; use constant ENOENT => 2; # No such file or directory use constant EINVAL => 22; # Invalid argument if ($#ARGV == -1) { print STDERR "Usage: $0 FILE...\n"; exit 1; } foreach my $path (@ARGV) { my $tmp; unless (-e $path) { print STDERR "$path: @{[strerror ENOENT]}\n"; next; } if (-l $path) { print STDERR "$path: $!\n" unless $tmp = readlink $path and unlink $path and symlink $tmp, $path ; next; } if (-f $path) { $tmp = mktemp $path . '.XXXX'; print STDERR "$path: $!\n" unless copy $path, $tmp and unlink $path and rename $tmp, $path ; next; } print STDERR "$path: @{[strerror EINVAL]}\n"; }