反引号运算符不适用于从 Perl 执行 PHP 脚本


backtick operator not working for executing php script from perl

我正在尝试从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'|;