use strict; use File::Copy qw/copy/; use File::find qw/find/; sub rcopy { my $src = shift; my $dst = shift; find(sub { my ($src_file, $dst_file) = ($File::Find::fullname, $File::Find::fullname); $dst_file =~ s!^$src!$dst!; copy $src_file, $dst_file or die "Could not copy $src_file => $dst_file:$!"; }, $src); }