Perl:从URL打开文件

Perl:从URL打开文件,perl,Perl,我想知道如何从URL而不是本地文件打开文件,我在另一个线程上找到了以下答案: use IO::String; my $handle = IO::String->new(get("google.com")); my @lines = <$handle>; close $handle; 这个很好用。。。在我的电脑上 但当我将代码转移到托管服务器时,它会抱怨找不到IO模块。那么,有没有其他方法可以从URL打开文件,而不需要任何外部模块

我想知道如何从URL而不是本地文件打开文件,我在另一个线程上找到了以下答案:

use IO::String;
my $handle = IO::String->new(get("google.com"));
my @lines = <$handle>;                       
close $handle; 
这个很好用。。。在我的电脑上


但当我将代码转移到托管服务器时,它会抱怨找不到IO模块。那么,有没有其他方法可以从URL打开文件,而不需要任何外部模块,或者使用几乎安装在每台服务器上的模块…?

没有方法按照您的要求从URL打开文件。好吧,我想您可以使用LWP::UserAgent的回调来组合一些东西,但即使这样,我也不认为它会按照您希望的方式工作

但是你可以很容易地做一些看起来像是在做你想做的事情。实际上,我们真正做的是从URL中提取所有数据,然后在包含该数据的字符串上打开一个文件句柄

use LWP::Simple;

my $data = get('https://google.com');
open my $url_fh, '<', \$data or die $!;

# Now $url_fh is a filehandle wrapped around your data.
# Treat it like any other filehandle.

while (<$url_fh>) {
  print;
}

你甚至可以考虑添加一些错误处理。< /P>

use LWP::Simple;

my $url = 'something';
my $data = get($url);
die "No data found\n" unless defined $data;
my @array = split /\n/, get($url);
您可以安装,这将为您提供一个输入层,用于通过open从URL打开文件句柄。Perl核心中没有包含这个东西,但它是

安装完成后,只需在mode参数中打开一个layer:http。这里没什么用的。这是自动发生的

open my $fh, '<:http', 'https://metacpan.org/recent';

模块IO::String提供了非常具体的功能。你确定你需要这个吗?从URL打开文件是什么意思?使用文件样式操作有特殊原因吗?有许多方法可以从Internet检索和管理内容。你到底需要做什么?我已经回答了这个问题。这肯定不是人们提出的问题的翻版。它看起来像是重复的,因为在寻找解决方案时,OP似乎走上了错误的轨道。my$handle=IO::String->newgetgoogle.com;我的@lines=;完全没有意义。问题解决了。托管公司意外地安装了该模块。我不知道你为什么认为它毫无意义,因为它正是我想要它做的。。。将第三方网站中的.csv文件读入数组。@jxm:如果您只需要数组中的行,那么代码中的filehandle部分就完全不需要了。您只需要:my@lines=split/\n/,获取$url;事实上,几年前LEONT写了一篇文章,让你只需打开一个URL。但是OP也不会在他们的共享主机上安装它。谢谢,这就是我所需要的,并且解决了IO:string问题
open my $fh, '<:http', 'https://metacpan.org/recent';
while (my $line = <$fh>) { ... }