我对Perl比较陌生。我试图将URL存储在变量中。这是我的代码:
my $port = qx{/usr/bin/perl get_port.pl};
print $port;
my $url = "http://localhost:$port/cds/ws/CDS";
print "\n$url\n";
这给了我以下输出:
4578
/cds/ws/CDS
所以get_port.pl
脚本正确地给了我端口但是URL没有正确存储。我相信斜杠/
存在一些问题,但我不确定如何绕过它。我尝试用反斜杠转义它,我也试过qq{}
,但它一直给出相同的输出。
请告知。
perl get_port.pl | od -a
0000000 nl 4 5 7 8 nl
0000006
答案 0 :(得分:1)
您的$url
字符串出现了错误。问题几乎肯定是$port
字符串包含回车符。大概你在使用Windows?
尝试使用此代码,它会在get_port.pl
返回的值中提取它找到的第一个数字字符串,并丢弃其他所有内容。
my ($port) = qx{/usr/bin/perl get_port.pl} =~ /(\d+)/;
print $port, "\n";
my $url = "http://localhost:$port/cds/ws/CDS";
print $url, "\n";
答案 1 :(得分:0)
正如@Сухой27我想要指出的是,你可以在qx之外使用'/'以外的其他字符来简化语法,然后你不必逃避斜杠。
我还添加了一个默认端口8080,以防get_port.pl不存在。
这似乎运作正常。
#!/usr/bin/perl -w
# make 8080 the default port
my $port = qx{/usr/bin/perl get_port.pl} || 8080;
print $port;
my $url = "http://localhost:$port/cds/ws/CDS";
print "\n$url\n";
<强>输出强>
paul@ki6cq:~/SO$ ./so1.pl
Can't open perl script "get_port.pl": No such file or directory
8080
http://localhost:8080/cds/ws/CDS