Using the File::Copy is definately one of the better solutions. Just as an alternative, I'll offer you my version of your original code.
#!/usr/bin/perl -w
use strict;
my $source_file = 'file1.txt';
my $copied_file = 'file2.txt';
my @contents;
open( SRC_FILE, "<$source_file" )
or die( "Failed to read $source_file: $!" );
@contents = <SRC_FILE>;
close SRC_FILE;
open( COPY_FILE, ">$copied_file" )
or die( "Failed to write to $copied_file: $!" );
print COPY_FILE @contents;
close COPY_FILE;
In the grand sense of things this should not be your final version, but hopefully is shows you some helpful steps.
<a href="http://www.graq.co.uk">Graq</a>