我做错了什么?我尝试了很多东西,但似乎无法从这个文件中读取。谢谢!
{#}
答案 0 :(得分:5)
URLs.txt
似乎是一个文件,而不是目录
要打开 文件 ,请写
open my $fh, '<', $filename or die $!;
并用
读取while ( my $line = <$fh> ) { ... }
要打开 目录 ,请写
opendir my $dh, $dirname or die $!;
并使用
阅读其内容while ( my $item = readdir $dh ) { ... }
如果你在编写的每个Perl程序中都有use strict
和use warnings 'all'
,那么你会看到
readdir()尝试使用无效的dirhandle $ fh
closedir()尝试使用无效的dirhandle $ fh
会引导你解决问题
根据您想要做的事情
,您可能会更好地使用其他功能答案 1 :(得分:0)
你的变量名称不是很好,温和地说。让我们解决这个问题!
use strict;
use warnings;
use JSON;
use LWP::Simple;
my $file = 'URLs.txt';
open(my $fh, '<:encoding(UTF-8)', $file) or die "Can't open file $file: $!\n";
chomp(my @lines = <$fh>);
close($fh);
foreach my $url (@lines) {
my $json_text = get($url);
if (defined($json_text)) {
my $perl_ref = decode_json($json_text);
if ($perl_ref->{status} eq 'UP') {
print "foo\n";
}
} else {
# handle the error!
}
}
您还会注意到我:
use strict
和use warnings
,它应该出现在您编写的每个Perl文件中get()
结果new JSON
)以支持decode_json()
便利功能。它与JSON->new->utf8->decode()
相同,只是更短。return
语句,因为它在子例程之外没有任何意义。如果此代码实际上已从子例程中拉出,那么您应该将其显示为MCVE的一部分。