Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在用Perl创建的文本文件中分隔多个逻辑页吗?_Perl_Text - Fatal编程技术网

我可以在用Perl创建的文本文件中分隔多个逻辑页吗?

我可以在用Perl创建的文本文件中分隔多个逻辑页吗?,perl,text,Perl,Text,到目前为止,我已经成功地将输出生成到各个文件,方法是打开一个文件作为外部循环的一部分进行输出,并在所有输出写入后关闭它。我使用了一个计数变量($x)并在其上附加了.txt来创建一个文件名,并将其写入与perl脚本相同的目录。我想将代码提高一点,提示用户输入文件名,打开该文件一次,并且只打开一次,然后在每页上写一封“打印的信”。这可以用纯文本实现吗?据我所知,chr(12)是一个ascii换行字符,可以让我接近我想要的,但是有更好的方法吗?提前谢谢,伙计们。:) sub-personalizell

到目前为止,我已经成功地将输出生成到各个文件,方法是打开一个文件作为外部循环的一部分进行输出,并在所有输出写入后关闭它。我使用了一个计数变量($x)并在其上附加了.txt来创建一个文件名,并将其写入与perl脚本相同的目录。我想将代码提高一点,提示用户输入文件名,打开该文件一次,并且只打开一次,然后在每页上写一封“打印的信”。这可以用纯文本实现吗?据我所知,chr(12)是一个ascii换行字符,可以让我接近我想要的,但是有更好的方法吗?提前谢谢,伙计们。:)

sub-personalizelletters{
打印“\n\n开始完成字母…”;
打印“\n\n我需要一个文件名来保存这些字母。”;
打印“\n文件名>”;
$OutFileName=;
chomp($OutFileName);
打开(OutFile,“>$OutFileName”);
对于($x=0;$x将“页面”分开使用表单提要,但你必须在每一页之后,而不是在最后进行。我不确定
PersonalizeLetters
应该做什么,但看起来你应该使用它来打印所有的字母。在这种情况下,我想你只需要重新构造它一点。在子例程之外进行所有设置,传入文件名,然后执行你需要执行的操作需要为每条记录执行此操作。处理记录后,打印表单提要:

sub PersonalizeLetters
    {
    my( $OutFileName ) = @_;

    open my $out, '>', $OutFileName 
        or die "Could not open $OutFileName: $!";                 

    for( $x=0; $x < $NumRecords; $x++ )
        {
        print "Writing output $x of $NumRecords...\n\n";
        print $out $stuff_for_this_record;
        print $out "\f";
        }           

    }
sub-personalizelletters
{
我的($OutFileName)=@;
打开我的$out,'>',$OUFILENAME
或死亡“无法打开$OutFileName:$!”;
对于($x=0;$x<$NumRecords;$x++)
{
打印“写入输出$x的$NumRecords…\n\n”;
为该记录打印$out$stuff\u;
打印$out“\f”;
}           
}

ASCII 12是表单提要(即您所描述的:声明页面结尾),而不是换行符。据我所知,您认为chr(12)是在纯文本文件中实现分页符的正确方法。您正在使用的处理数据的方法(担心6x索引乘数等)看起来很尴尬。最好将数据存储为哈希列表,每个哈希包含信件收件人所需的所有信息。要了解如何使用这样更丰富的数据结构,请参阅和。
sub PersonalizeLetters
    {
    my( $OutFileName ) = @_;

    open my $out, '>', $OutFileName 
        or die "Could not open $OutFileName: $!";                 

    for( $x=0; $x < $NumRecords; $x++ )
        {
        print "Writing output $x of $NumRecords...\n\n";
        print $out $stuff_for_this_record;
        print $out "\f";
        }           

    }