2011-10-17 95 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書籍。 –