2015-03-25 1 views
0

Я, вероятно, пропустил что-то простое, но у меня есть getstore(), который отлично работает, чтобы сохранить файл «.png» в моей Windows ПК следующим образом:Perl & LWP: getstore() сохранит файл только в том случае, если я не укажу каталог

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

Это работает и отлично загружает файл в каталог, содержащий скрипт Perl. Однако, если я пытаюсь сохранить его в подпапку «NEWDIR» ничего загрузок:

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

Любая идея, где я собираюсь здесь не так или как я мог отлаживать? Я попробовал распечатать каталог, и он выглядит неплохо:

print "newdir\\$filename"; 

Однако ничего не происходит в «newdir» после запуска скрипта. Заранее спасибо.

+0

"в каталог, содержащий скрипт Perl" неверен; он загружает его в текущий каталог. – ysth

ответ

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; 
+0

Спасибо. Я пробовал использовать относительные и полные пути, но единственный способ получить его для загрузки - не указывать путь вообще. Первое, что вы предложили, отлично справилось со мной. Второй из них не выдал выход, пока я не удалил условие на последней строке, а затем получил «200 OK в строке 123 сценария», <> строка 5. ». Тем не менее, нет файла (даже после полного поиска HD). Это с сайта, с которого мне приходилось регистрироваться, сначала используя WWW :: Mechanize, но, как я уже сказал, он загружается отлично, если я просто не укажу каталог. – user2039885

+0

ФИКСИРОВАННЫЙ. Вы его взломали. Это был действительно бессвязный новый персонаж. Я не заметил этого, и я обвиняю глупый крошечный экран командной строки Windows! ;) Большое спасибо! – user2039885

+0

Вы можете сделать терминал более крупным – ikegami

Смежные вопросы