2011-12-23 81 views
5

我試圖創建一個腳本,它將讀取文本文件,然後分析它們,而不管文本文件是聯機還是脫機。Perl:讀取網絡文本文件並「打開」它

離線的部分已經完成,使用

現在的在線部分,反正是有閱讀網站上的一個文本文件,然後在「打開」了嗎?

我希望能實現這一目標是:

if ($offline) { 
    open(FILENAME, "anyfilename.txt") 
} 
elsif ($online) { 
    ##somehow open the http web text so that I can do a while (<FILENAME>) later 
} 

analyze_file(); 

sub analyze_file { 
    while (<FILENAME>) {analyze analyze} 
} 

有「獲取('http://weblink.com/textfile.txt)」,但它會創建一個字符串。我不能用那個字符串做一段時間()。

有誰知道這可以做到嗎?

回答

11

很簡單,只需使用openopen FILEHANDLE,MODE,REFERENCE風格。

use LWP::Simple; 
if ($offline) { 
    open(FILENAME, '<', "anyfilename.txt") 
} 
elsif ($online) { 
    my $text = get 'http://example.com'; 
    open(FILENAME, '<', \$text); 
} 
+0

+1,這可能是正確的做法。但是,根據場合,爲標量打開文件句柄似乎對我很重要,我只是使用我提出的將標量拆分爲行數組的解決方案。 – sidyll 2011-12-23 17:06:50

+0

@sidyll爲什麼要打開一個標量文件句柄太多? BradGilbert謝謝! – 2011-12-23 18:02:10

+0

@ Brad-Gilbert在\ $的上下文中,斜線實際上做了什麼?通常情況下,如果廢除它後面的任何內容。爲什麼代碼工作是因爲$ in文本是無效的? – 2011-12-23 21:57:36