Когда вы открываете OUTFILE, у вас есть несколько вариантов, как писать в него.Во-первых, вы можете указать дескриптор файла в своих инструкциях печати, или два, вы можете выбрать дескриптор файла и затем печатать в обычном режиме (без указания дескриптора файла).Ты не делаешь ни того, ни другого.Я продемонстрирую:
use strict;
use warnings;
use autodie;
my $filename = 'somefile.txt';
open my( $filehandle ), '>>', $filename;
foreach my $name ( keys %HoH ) {
print $filehandle "$name: $HoH{$name}\n";
}
close $filehandle;
Если бы вы использовали select, вы могли бы сделать это следующим образом:
use strict;
use warnings;
use autodie;
my $filename = 'somefile.txt';
open my( $filehandle ), '>>', $filename;
my $oldout = select $filehandle;
foreach my $name( keys %HoH ) {
print "$name: $HoH{$name}\n";
}
close $filehandle;
select $oldout;
Каждый метод имеет свои применения, но чаще всего вЕсли вы заинтересованы в написании понятного и легкого для чтения / поддержки кода, вы используете первый подход, если только у вас нет веских причин.
Просто помните, что при печати в файл указывайте дескриптор файла в вашей печатизаявление.