按照您的要求,沒有辦法「從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;
}
你的問題是沒有安裝IO :: String。但是沒有必要安裝它,因爲它足夠簡單地完成它對標準Perl功能的操作(只需打開一個對字符串引用的文件句柄)。
更新: IO :: String在這裏完全沒有必要。不僅因爲你可以簡單地完成它的操作,只需在對字符串的引用上打開一個文件句柄,而且因爲所有你想要做的就是從一個網站讀取一個文件到一個數組中。在這種情況下,您的代碼很簡單:
use LWP::Simple;
my $url = 'something';
my @records = split /\n/, get($url);
您甚至可以考慮添加一些錯誤處理。
use LWP::Simple;
my $url = 'something';
my $data = get($url);
die "No data found\n" unless defined $data;
my @array = split /\n/, get($url);
模塊'IO :: String'提供了非常具體的功能。你確定你需要嗎? 「_open來自URL_的文件」是什麼意思? - 你有特別的理由使用文件風格的操作嗎?有很多方法可以從Internet上檢索和管理內容。你究竟需要做什麼? – zdim
我已經重新打開了這個問題。這當然不是人們提出的問題的重複。它看起來像是重複的,因爲看起來OP在尋找解決方案時走錯了路。 –
'my $ handle = IO :: String-> new(get(「google.com」));我的@lines = <$handle>;'完全沒有意義。 –