Perl:curl:(1)libcurl中不支持或禁用协议'http

时间:2011-07-13 19:07:55

标签: perl debugging

Perl Question。我试图让这个脚本在调试器中运行。

我在Windows 7x64上使用了Aptana + Epic + ActivePerl 5.12.4。脚本开始很好,但我收到一个错误:

curl -sS http://intranet.mycompany.org/directory/directory.xml

上面的命令工作正常......但如果我启动调试器,我会收到此错误:

curl: (1) Protocol 'http not supported or disabled in libcurl

下面脚本的第一部分:

#!/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];

5 个答案:

答案 0 :(得分:102)

Windows不喜欢命令中的单引号。尝试使用qq {}转义命令在命令中使用双引号。只需更改一行:

my $file = qq{curl -sS "$url" |};

答案 1 :(得分:3)

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没有发布回答。

答案 2 :(得分:2)

当我在我的java程序中使用curl命令时,我得到了同样的错误,如下所示

    String command = "curl 'http://google.com'";
     try
       {            
           Process proc = Runtime.getRuntime().exec(command);
        .......
        }catch(Exception e){}

将命令更改为以下修复此错误

      String command = "curl http://google.com";

实际上,由于shell解释器,这可能是一个问题。 我使用curl命令,例如下面的例子

String command = "curl  -duser.name=hdfs -dexecute=select+*+from+logdata.test; -dstatusdir=test.output http://hostname:50111/templeton/v1/hive";

答案 3 :(得分:1)

作为替代方案(并且不需要外部程序),您可以使用LWP :: UserAgent来获取文档。

答案 4 :(得分:0)

您传递的拼写错误的协议部分如“ htpt://example.com”中所示,或者如在不太明显的情况下,如果给协议部分加上前缀“ http://example.com/”中的空格,则采用这种方式。

来源:https://curl.haxx.se/docs/faq.html