2011-12-23 83 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