Ответ 1
Windows не любит одиночные кавычки в командах. Попробуйте использовать двойные кавычки в команде, используя qq {} escaping. Просто измените одну строку:
my $file = qq{curl -sS "$url" |};
Вопрос Perl. Я пытаюсь запустить этот script в отладчике.
У меня есть Aptana + Epic + ActivePerl 5.12.4, работающий на Windows 7x64. script запускается нормально, но я получаю сообщение об ошибке:
curl -sS http://intranet.mycompany.org/directory/directory.xml
Вышеупомянутая команда работает нормально... но если я запустил отладчик, я получаю эту ошибку:
curl: (1) Protocol 'http not supported or disabled in libcurl
Первая часть script ниже:
#!/usr/bin/perl
use strict;
use XML::Parser;
use Data::Dumper;
my $url = 'http://intranet.atlanticgeneral.org/directory/directory.xml';
my $output = 'C:\global.gabook';
my $file = "curl -sS '$url' |";
my $parser = new XML::Parser(Style => 'Tree');
my $tree = $parser->parsefile($file)->[1];
Windows не любит одиночные кавычки в командах. Попробуйте использовать двойные кавычки в команде, используя qq {} escaping. Просто измените одну строку:
my $file = qq{curl -sS "$url" |};
Wooble ~
"Я предполагаю, что это дополнительные одинарные кавычки вокруг $url, которые вызывая это"
Когда я удалил цитаты вокруг "$ url", это сработало. Цитаты работали в redhat perl, но не работали в моем отладчике windows perl:
#!/usr/bin/perl
use strict;
use XML::Parser;
use Data::Dumper;
my $url = 'http://intranet.atlanticgeneral.org/directory/directory.xml';
my $output = 'C:\global.gabook';
my $file = "curl -sS $url |";
my $parser = new XML::Parser(Style => 'Tree');
my $tree = $parser->parsefile($file)->[1];
Проводка в качестве ответа с тех пор, как Wooble не сделал.
Я получал ту же ошибку, когда я использовал команду curl в моей программе java следующим образом
String command = "curl 'http://google.com'";
try
{
Process proc = Runtime.getRuntime().exec(command);
.......
}catch(Exception e){}
Изменение команды на следующую исправленную ошибку
String command = "curl http://google.com";
Собственно, это может быть проблема из-за интерпретатора оболочки. Я использовал команду curl, как показано ниже.
String command = "curl -duser.name=hdfs -dexecute=select+*+from+logdata.test; -dstatusdir=test.output http://hostname:50111/templeton/v1/hive";
В качестве альтернативы (и не требующей внешней программы) вы можете использовать LWP:: UserAgent для извлечения документа.
Вы пропускаете неправильно написанную часть протокола, как в "htpt://example.com", или как в менее очевидном случае, если перед частью протокола ставится пробел, как в " http://example.com/".
Источник: https://curl.haxx.se/docs/faq.html