perl上无法识别全局符号

Nat*_*raj 0 perl system

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

错误信息 :

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

use strict;
use warnings;

print "connect to Perforce Server\n";
my $connection=`echo Ra@@@g|p4 -u raj login`;
if ( !$connection ) {
    print "Failed to connect to Perforce Server\n";
    exit(1);
}

my $status = system("p4 sync");
if ($status == 0) {
    my $workon = system("workon demo_project");
    my $build = system("gmake –f Makefile bin");         
} else {
    exit 1;
}
Run Code Online (Sandbox Code Playgroud)

cho*_*oba 6

@g被解释为@g数组,因为反引号插入包括数组的变量.

而且,错误信息已经在几年前改变了,看来你的Perl版本已经很老了.考虑升级它.

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

my $connection = `echo Ra@@\@g | p4 -u raj login`;
Run Code Online (Sandbox Code Playgroud)