#!/usr/bin/perl use strict; use warnings; use File::Copy; my ($src, $dest1, $dest2) = ("/tmp/f1", "/tmp/f2", "/tmp/f3"); # Create source file, give it execute permission. open my $fh, "> $src" or die; close $fh or die; chmod 0755, $src or die; die "No execute permission on source\n" unless -x $src; # Make sure destination files are removed. if (-f $dest1) {unlink $dest1 or die;} if (-f $dest2) {unlink $dest2 or die;} # Set umask. umask 022 or die; system "cp $src $dest1" and die; die "Lost execute permission using 'system cp'\n" unless -x $dest1; copy $src, $dest2; die "Lost execute permission using 'File::Copy'\n" unless -x $dest2; __END__ Lost execute permission using 'File::Copy'