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

时间:2015-03-25 13:15:48

标签: perl lwp

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

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

这样可以完美地将文件下载到包含Perl脚本的目录中。但是,如果我尝试将其保存到“newdir”的子文件夹中,则无需下载:

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

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

print "newdir\\$filename";

然而,一旦脚本运行,“newdir”中就没有任何内容。提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

>dir /b newdir

>perl -MLWP::Simple=getstore -e"getstore('http://stackoverflow.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;
相关问题