在操作员预期的语法错误所在的地方找到了裸字

时间:2019-01-14 12:49:53

标签: perl

我是perl的新手。无论如何,我试图调试自己。但是我无法钉住它

语法错误是

Bareword found where operator expected at D:\DevelopmentLab\softwares\sc-master\sc.pl line 468, near "s%/%_%gr"
syntax error at D:\DevelopmentLab\softwares\sc-master\sc.pl line 468, near "s%/%_%gr"
Execution of D:\DevelopmentLab\softwares\sc-master\sc.pl aborted due to compilation errors.

代码是

sub getBackupFileName {
my ($containerName, $volume) = @_;
my $backupFileName = $volume =~ s%/%_%gr;
return "${containerName}_${backupFileName}.tar";
}

我们将不胜感激。

1 个答案:

答案 0 :(得分:9)

/r中的s/.../.../选项已在Perl 5.14(2011年)中添加。如果您使用的是较早版本,则您的代码将无效。我没有可供测试的早期版本,因此我无法确定它是否会给出您所看到的错误消息。

使它在Perl的早期版本上运行的最简单的解决方法是:

sub getBackupFileName {
  my ($containerName, $volume) = @_;

  (my $backupFileName = $volume) =~ s%/%_%g;

  return "${containerName}_${backupFileName}.tar";
}