2011-10-17 96 views
3

所以我为Perl初学者课程做了这个任务,我做了一些东西,他们的工作很好,但是我在这里完全碰到了一堵砖墙,而且我无法再进一步了,并且我的猜测是答案很简单,只是我似乎无法修复它。初学Perl打印

我有它的一些文本的文本文件,只是我想要做的是写文件到终端的内容,这是我可以用

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

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

做但是,我也需要添加编号到输出的每一行,我试着用$。但这只会给我一个“1”的输出,我一直在这里尝试不同的东西,但我似乎无法弄清楚这一点。

我想是的输出看起来像这样:

  1. Lorem存有悲坐阿梅德
  2. consectetur adipiscing ELIT
  3. 保护者iaculis vulputate爱神
  4. ----
  5. - ---

依此类推。

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

+3

$。用你的示例代码和'print'$为我工作。$ _ \ n“ - 你可以发布你试过的东西吗? –

+0

是的工作,我以为你只能有一个$内的“”所以我试图做它像“$”。 “$ _ \ n”;哪个没有解决。 – FictionFighter

+1

您可能会发现,向您的打印添加'\ n'会给您一条新行太多,因为您从文件中读取的行已经包含换行符。 – TLP

回答

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的成语为此...)

+0

Perl可以识别一个方法吗?在感谢的结尾,并开始一个新的线路和号码,以及?或者文本文件的结构必须是“传递”。[newline] – FictionFighter

+0

@ user998836:您在原始问题中没有提及该要求... – knittl

+0

最后一个完美的作品!非常非常感谢你! – FictionFighter

2

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

use strict; 
use warnings; 

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

__DATA__ 
Joel 
Larry 

第三,也是最重要的是,你应该用更现代的Perl,使用3-ARG开放和词汇的文件句柄!

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

+0

++ mod!我将提到使用'DATA'作为文件句柄名称的部分,但您已经击败了我。另外,你提到了很多其他的好消息。而且,这本书的链接。 (我得看看它)。我喜欢Llama的书,但它在很多方面确实有点过时,并没有经过很多新的东西。最大的问题是很多人拿起Llama书籍,学习Perl,然后再也找不到另一本Perl书籍。 –