Perl & LWP:如果我不指定目录,getstore() 只会保存文件

Perl & LWP: getstore() will only save a file if I don't specify a directory

我可能遗漏了一些简单的东西,但我有 getstore() 运行 完美地将“.png”文件保存到我的 Windows PC 中,如下所示:

getstore("$url","$filename");

这很有用,可以完美地将文件下载到包含 Perl 脚本的目录中。但是,如果我尝试将其保存到 "newdir" 的子文件夹中,则不会下载任何内容:

getstore("$url","newdir\$filename");

知道我哪里出错了或者我该如何调试吗?我尝试打印目录,它看起来不错:

print "newdir\$filename";

然而,脚本运行后 "newdir" 中什么也没有。提前致谢。

使用 open(my $fh, ">", $arg) 打开文件,其中 $arg 包含您传递的值。因此,它肯定会接受相对路径。

>dir /b newdir

>perl -MLWP::Simple=getstore -e"getstore('http://whosebug.com/', 'newdir\so.html')"

>dir /b newdir
so.html

可能 $filename 无效(例如以换行符结尾)。可能当前目录不是您认为的那样(它可以是包含脚本的目录以外的目录)。也许执行脚本的用户无权访问该目录。您应该能够通过以下方式获得更多信息:

use LWP::UserAgent qw( );
my $ua = LWP::UserAgent->new();
my $request = HTTP::Request->new(GET => $url);
my $response = $ua->request($request, "newdir\$filename");
die($response->status_line)
   if !$response->is_success;