全局符号在perl上没有被识别

时间:2018-06-18 10:50:14

标签: perl system

我收到错误,因为全局符号没有。请帮我解决这个问题。

错误讯息:

在字符串中,@@ g现在必须在gsx.pl第5行写成\ @g,靠近" echo Ra @@@ g" 全球符号" @@ g"需要在ggg.pl第5行显式包名。

function Grid_DataBound() {
      var grid = $('#YourGrid').data('kendoGrid');
      var exportButton = grid.element.find(".exporTtoExcelClass");
      exportButton.unbind("click");
      exportButton.on("click", function (args) {
            kendo.ui.progress($("#YourGrid"), true);
            var grid1 = $("#YourGrid").data("kendoGrid");
            grid1.saveAsExcel();
            kendo.ui.progress($("#YourGrid"), false);
           return false;
     });
}

3 个答案:

答案 0 :(得分:6)

@g被解释为@g数组,因为反引号会插入包含数组的变量。

此外,多年前错误消息已经改变,看来你的Perl版本已经很老了。考虑升级它。

要在反引号中使用@g作为字符串,您需要转义at-sign:

my $connection = `echo Ra@@\@g | p4 -u raj login`;

答案 1 :(得分:0)

您希望通过此方式实现目标:

echo Ra@@@g

如何使用:

my $tmp = 'Ra@@@g';
my $connection=`echo $tmp|p4 -u raj login`;

答案 2 :(得分:0)

qx`...`又名`...`插值为双引号字符串(qq"..."又名"...")。

my $connection = `echo Ra\@\@\@g | p4 -u raj login`;

但理想情况下,密码将是一个单独的变量。

use String::ShellQuote qw( shell_quote );

my $password = 'Ra@@@g';

my $cmd1 = shell_quote("printf", "%s", $password);
my $cmd2 = shell_quote("p4", "-u", "raj", "login");

my $connection = `$cmd1 | $cmd2`;