{ local *FH; open(FH, "< ${file}.txt") or die "Can't open ${file}.txt: $!\n"; local *FH1; open(FH1, "> ${file}1.txt") or die "Can't create ${file}1.txt: $!\n"; while() { print FH1 $_; } } #### { open(my $fh, '<', "${file}.txt") or die "Can't open ${file}.txt: $!\n"; open(my $fh1, '>', "${file}1.txt") or die "Can't create ${file}1.txt: $!\n"; while (<$fh>) { print $fh1 $_; } } #### my @file_data = ( [ undef, "${file}.txt", 'r' ], [ undef, "${file}1.txt", 'w' ], ); foreach (@file_data) { my $name = $_->[1]; my $mode = $_->[2]; $_->[0] = IO::File->new($name, $mode) or die("Can't " . ($mode eq 'w' ? 'create' : 'open') . " file $name: $!\n"); } while (<$file_data[0][0]>) { print $file_data[1][0] $_; } close($_->[0]) foreach @file_data;