У меня есть файл test.txt
:
Stringsplittingskills
Я хочу прочитать этот файл и записать в другой файл out.txt
с тремя символами в каждой строке, например
Str
ing
spl
itt
ing
ski
lls
Что я сделал
my $string = "test.txt".IO.slurp;
my $start = 0;
my $elements = $string.chars;
# open file in writing mode
my $file_handle = "out.txt".IO.open: :w;
while $start < $elements {
my $line = $string.substr($start,3);
if $line.chars == 3 {
$file_handle.print("$line\n")
} elsif $line.chars < 3 {
$file_handle.print("$line")
}
$start = $start + 3;
}
# close file handle
$file_handle.close
Это нормально работает, если длина строки не кратна 3. Если длина строки кратна 3, в конец выходного файла вставляется дополнительный символ новой строки. Как я могу избежать вставки новой строки в конце, если длина строки кратна 3?
Я попробовал другой, более короткий подход,
my $string = "test.txt".IO.slurp;
my $file_handle = "out.txt".IO.open: :w;
for $string.comb(3) -> $line {
$file_handle.print("$line\n")
}
Тем не менее, он страдает той же проблемой.
Я искал здесь, здесь, но все еще не может решить эту проблему.