初学者Perl打印

时间:2011-10-17 09:06:07

标签: perl text printing input

所以我在Perl的初学者课程中有这个任务,我已经完成了一些东西并且他们做得很好,但我在这里完全遇到了一堵砖墙,我无法再进一步了,我的猜测是答案很简单,我似乎无法修复它。

我有一个带有一些文本的文本文件,我正在尝试做的就是将该文件的内容写入终端,我可以用

open (DATA, "example.txt") or die "an error occured: $!";

while(<DATA>)
{
print "$_\n";
}

但是,我还需要为输出的每一行添加编号,我正在尝试使用$。但这只给了我一个“1”作为输出,我整个上午一直在尝试不同的东西,但我似乎无法弄明白。

我想要的是一个如下所示的输出:

  1. Lorem ipsum dolor sit amet
  2. consectetur adipiscing elit
  3. Maecenas iaculis vulputate eros
  4. ----
  5. ----
  6. 等等。

    任何可以帮助我解决这个问题的人吗?

2 个答案:

答案 0 :(得分:2)

open (DATA, "example.txt") or die "an error occured: $!";

while(<DATA>) {
  print "$.. $_\n";
}

要在每个句子后开始一个新行(句号后跟至少一个空格),您可以使用以下内容:

$line = 0;
while(<DATA>)
{
  @lines = split /\. +/;
  for (@lines) {
    ++$line;
    print "$line. $_\n";
  }
}

(很可能有更好的perl成语......)

答案 1 :(得分:2)

请,请不要使用文件句柄DATA打开文件!!首先,这就发生在昨天,它会导致各种problems!其次,DATA是使用保存在脚本底部的内容的特殊句柄。

use strict;
use warnings;

while(<DATA>) {
  print "Hello $_\n";
}

__DATA__
Joel
Larry

第三,也是最重要的一点,你应该使用更现代的Perl,使用3-arg open和lexical文件句柄!

use strict;
use warnings;
#if you don't want to do "or die" all the time
#use autodie;

open( my $handle, '<', "example.txt" ) or die "$!";
while(<$handle>) {
  #do whatever
}

如果您的教师/教科书没有使用现代Perl运动中的任何内容,您应该通知他们,或者获得new book