До сих пор я успешно генерировал выходные данные для отдельных файлов, открывая файл для вывода как часть внешнего цикла и закрывая его после записи всех выходных данных. Я использовал переменную подсчета ($ x) и добавил к ней .txt, чтобы создать имя файла, и записал его в тот же каталог, что и мой скрипт на perl. Я хочу немного увеличить код, запросить у пользователя имя файла, открыть этот файл один раз и только один раз и записать выходные данные по одной «печатной букве» на страницу. Это возможно в простом тексте? Из того, что я понимаю, chr (12) является символом перевода строки ascii и приблизит меня к тому, что я хочу, но есть ли лучший способ? Заранее спасибо, ребята. :)
sub PersonalizeLetters{
print "\n\n Beginning finalization of letters...";
print "\n\n I need a filename to save these letters to.";
print "\n Filename > ";
$OutFileName = <stdin>;
chomp ($OutFileName);
open(OutFile, ">$OutFileName");
for ($x=0; $x<$NumRecords; $x++){
$xIndex = (6 * $x);
$clTitle = @ClientAoA[$xIndex];
$clName = @ClientAoA[$xIndex+1];
#I use this 6x multiplier because my records have 6 elements.
#For this routine I'm only interested in name and title.
#Reset OutLetter array
#Midletter has other merged fields that aren't specific to who's receiving the letter.
@OutLetter = @MiddleLetter;
for ($y=0; $y<=$ifLength; $y++){
#Step through line by line and insert the name.
$WorkLine = @OutLetter[$y];
$WorkLine =~ s/\[ClientTitle\]/$clTitle/;
$WorkLine =~ s/\[ClientName\]/$clName/;
@OutLetter[$y] = $WorkLine;
}
print OutFile "@OutLetter";
#Will chr(12) work here, or is there something better?
print OutFile chr(12);
$StatusX = $x+1;
print "Writing output $StatusX of $NumRecords... \n\n";
}
close(OutFile);
}