Если $ Contents еще не содержит \n
символов, print
не добавит их для вас. Ты должен сделать это сам.
Есть пара других вещей, которые могут быть проблематичными; вот как их исправить и почему.
IO Layers
Чтобы включить вывод utf8, вам нужно использовать :utf8
, а не :utf-8
. Кроме того, у вас не должно быть пробелов в слоях ввода-вывода, поэтому он должен выглядеть как `">: utf8: unix ".
Open
Чтобы open
файл, вы можете объявить 'my $ fh' в строке; нет необходимости инициализировать его в строку, чтобы начать. Это хорошо, это хорошая практика. Кроме того, использование or
является предпочтительным способом обнаружения открытых ошибок.
Изменено, теперь ваш код выглядит так:
sub SaveFile
{
my($FileName, $Contents) = @_;
open my $File, ">:utf8:unix", $FileName
or die "Cannot open $FileName";
print $File map { "$_\n" } @$Contents;
close($File);
}
map позволяет вам преобразовывать входной массив, добавляя новые строки в каждую строку перед тем, как он их печатает, и делает это по порядку.
Удачи!