在变量中存储 url 的 Perl 问题
Perl issue with storing url in variable
我对 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
@Сухой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
您的 $url
字符串没有任何问题。问题几乎可以肯定是 $port
字符串包含 carriage-return 字符。大概你正在研究 Windows?
试试这个代码,它提取它在 get_port.pl
编辑的值 return 中找到的第一串数字,并丢弃其他所有内容。
my ($port) = qx{/usr/bin/perl get_port.pl} =~ /(\d+)/;
print $port, "\n";
my $url = "http://localhost:$port/cds/ws/CDS";
print $url, "\n";
我对 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
@Сухой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
您的 $url
字符串没有任何问题。问题几乎可以肯定是 $port
字符串包含 carriage-return 字符。大概你正在研究 Windows?
试试这个代码,它提取它在 get_port.pl
编辑的值 return 中找到的第一串数字,并丢弃其他所有内容。
my ($port) = qx{/usr/bin/perl get_port.pl} =~ /(\d+)/;
print $port, "\n";
my $url = "http://localhost:$port/cds/ws/CDS";
print $url, "\n";