我正在使用一个生成一个Perl应答文件 Embedded Ruby code (ERB)模板。此答案文件包含变量,然后用于以静默方式调用安装程序。
我无法控制安装程序代码;我掌握的是答案文件。
如果字符串包含未转义的元字符,安装程序会抛出预期的警告。
我希望答案文件包含一个包含转义字符的Perl字符串常量。该值使用嵌入式Ruby代码提供。
我有两个变量。一个在Ruby中定义,另一个在Perl中定义。
my $variable = <%= [@var].flatten %>;
$variable
在Perl中,@var
是Ruby。
@var
将包含电子邮件地址。
@var = "abcd@gmail.com"
我想要转义at @
字符以便Perl
不认为@gmail
是变量。
简而言之,我想将"abcd\@gmail.com"
写入答案文件。
我尝试了多项但是徒劳无功。
@var = "abcd@gmail.com"
@var.gsub("@", "\@") # => "abcd@gmail.com"
@var.gsub("@", "\\@") # => "abcd\\@gmail.com"
@var.gsub("@", "\\\@") # => "abcd\\@gmail.com"
答案 0 :(得分:4)
@var.gsub("@", "\\@")
是正确的。 Ruby将结果表示为等效的双引号字符串,需要反斜杠转义
尝试puts @var