readdir()尝试了无效的dirhandle

-5 perl cgi opendir

我究竟做错了什么?我尝试了很多东西,但似乎无法从这个文件中读取.谢谢!

my $d = 'URLs.txt';
open(my $fh, '<:encoding(UTF-8)', $d)
#opendir(D, "$d") || die "Can't open directory $d: $!\n";
  or die "Can't open directory $d: $!\n";

my @list = readdir($fh);
closedir($fh);

foreach my $f (@list) {


my $json_data = get "$f";
my $json_obj = new JSON;
my $URLdata = $json_obj->decode($json_data);

  return $URLdata->{'status'} eq 'UP';
}
Run Code Online (Sandbox Code Playgroud)

Bor*_*din 5

URLs.txt 似乎是一个文件,而不是一个目录

要打开文件,请写入

open my $fh, '<', $filename or die $!;
Run Code Online (Sandbox Code Playgroud)

并从中读取

while ( my $line = <$fh> ) { ... }
Run Code Online (Sandbox Code Playgroud)

要打开目录,请写入

opendir my $dh, $dirname or die $!;
Run Code Online (Sandbox Code Playgroud)

并阅读其内容

while ( my $item = readdir $dh ) { ... }
Run Code Online (Sandbox Code Playgroud)

如果你有use strictuse warnings 'all'到位,你应该在每一个Perl程序你写,你会看到

readdir()尝试对无效的dirhandle $ fh
closedir()尝试对无效的dirhandle $ fh

哪会引导你解决问题

根据您想要做的事情,您可能会更好地使用其他功能