【问题标题】:Perl: Read web text file and "open" itPerl:读取网络文本文件并“打开”它
【发布时间】:2011-12-23 16:45:25
【问题描述】:

我正在尝试创建一个脚本,该脚本将读取文本文件然后对其进行分析,无论文本文件是在线还是离线。

离线部分完成,使用

open(FILENAME, "anyfilename.txt")
analyze_file();

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

现在对于在线部分,是否可以在网站上读取文本文件然后“打开”它?

我希望实现的是:

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}
}

有“get('http://weblink.com/textfile.txt;)”,但它会创建一个字符串。我不能用那个字符串做一段时间()。

有谁知道如何做到这一点?

【问题讨论】:

    标签: perl http file-io while-loop


    【解决方案1】:

    很简单,只需使用openopen FILEHANDLE,MODE,REFERENCE样式即可。

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

    【讨论】:

    • +1,这可能是正确的做法。但是根据情况,打开标量的文件句柄对我来说似乎很重要,我会使用我提出的将标量拆分为行数组的解决方案。
    • @sidyll 为什么打开一个标量的文件句柄太多了?布拉德吉尔伯特谢谢!
    • @Brad-Gilbert 在 \$ 的上下文中,斜线实际上做了什么?通常 if 会取消它之后的任何内容。为什么代码可以工作,因为文本中的 $ 无效?
    • 我们在Effective Perl Programming中也谈到了很多。这是一个很棒的技巧,可以节省大量的编码和麻烦。
    • @JohnTan 我不知道你所说的``使后面发生的一切无效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多