我正在尝试从perl调用php脚本。谷歌搜索后,我发现我可以为此使用反引号运算符。
但是当我尝试时
my $phpOutput = `https://control.msg91.com/api/sendhttp.php?authkey=<mykey>&mobiles=<mobile>&message=Thank%20you%20for%20placing%20order%20at%20WokoShop.%20Order%20id%3A%201434%20Invoice%20Value%3A%201445.04&sender=WOKOSP&route=4`;
它不起作用。我在浏览器中尝试的相同网址工作正常。
我需要做哪些更改才能使其在 perl 脚本中也能工作。
我正在使用这个perl包。
use LWP::Simple;
反引号的内容不是 shell 命令,而是 URL。由于您已经在使用 LWP::Simple
因此可以通过调用 get
来检索此 url 上的值
它看起来像这样,尽管该值可能不代表您的期望,因为您需要用它们的实际值替换<mykey>
和<mobile>
。您不必像这样使用 URI
模块构建 URL,但它使更改单个查询参数变得更加简单,并且避免了您处理 URI 转义字符串
use strict;
use warnings 'all';
use feature 'say';
use URI;
use LWP::Simple 'get';
my $url = URI->new('https://control.msg91.com/api/sendhttp.php');
$url->query_form(
authkey => '<mykey>',
mobiles => '<mobile>',
message => 'Thank you for placing order at WokoShop. Order id: 1434 Invoice Value: 1445.04',
sender => 'WOKOSP',
route => 4,
);
say get $url;
输出
366141754843343731333535
要在 UNIX 中调用特定的 URL/页面,您可以使用 curl,因此不要像在反引号中那样键入 URL,而是这样做:
my $phpOutput = `curl 'https://control.msg91.com/api/sendhttp.php?authkey=<mykey>&mobiles=<mobile>&message=Thank%20you%20for%20placing%20order%20at%20WokoShop.%20Order%20id%3A%201434%20Invoice%20Value%3A%201445.04&sender=WOKOSP&route=4'`;
您还可以执行以下操作:
my $phpOutput = qx|curl 'https://control.msg91.com/api/sendhttp.php?authkey=<mykey>&mobiles=<mobile>&message=Thank%20you%20for%20placing%20order%20at%20WokoShop.%20Order%20id%3A%201434%20Invoice%20Value%3A%201445.04&sender=WOKOSP&route=4'|;