无法在Perl脚本中执行命令

无法在Perl脚本中执行命令,perl,Perl,首先,我是Perl新手,需要从文件中删除一个字符串 我有: #!/usr/bin/perl -w use warnings; use strict; my $server_a = 'xxx.test.ch'; print "$server_a\n"; perl -pli -e "s/$server_a//" '/Users/user/Downloads/exports'; 当我执行此脚本时,出现以下错误: syntax error at nfs_test.sh line 9, near

首先,我是Perl新手,需要从文件中删除一个字符串

我有:

#!/usr/bin/perl -w

use warnings;
use strict;

my $server_a = 'xxx.test.ch';

print "$server_a\n";
perl -pli -e "s/$server_a//" '/Users/user/Downloads/exports';
当我执行此脚本时,出现以下错误:

syntax error at nfs_test.sh line 9, near "pli -e "
Execution of nfs_test.sh aborted due to compilation errors.
我找不到有什么问题,希望你能帮助我

#! /usr/bin/perl
use warnings;
use strict;

@ARGV = '/Users/user/Downloads/exports';
$^I = '~';

my $server_a = quotemeta 'xxx.test.ch';
s/$server_a//, print while <>;
@ARGV数组包含参数,它由菱形运算符迭代

$^I相当于-I选项


您可能需要,因为您不是指服务器名称中的点换行。

您是在一个perl文件中调用perl?我认为这是个错误,但我不知道如何解决它。您在这里尝试做什么?文件“export”是一个大配置文件,我需要删除该文件中的每个xxx.test.ch条目,如果我运行perl-pli-es/$server_a/'/Users/user/Downloads/exports'命令;在Bash中,它显然有效。。但是我怎样才能在perl中做到这一点呢?为什么在perl中需要它?难道你不能在bash中使用它吗?在我尝试并破坏它之前,我会尝试理解你的。因此,基本上,不包含xxx.test.ch的每一行都将保持不变,但包含xxx.test.ch的每一行都将被删除,对吗?如果它包含-sec=lala.test.ch:tututu.test.ch:xxx.test.ch:gege.test.ch?@Damon:会像在原始代码中一样使用替换来修复。