Ruby 我怎样才能逃离'@';雇员再培训局的角色?
我正在使用 (ERB)模板。此应答文件包含变量,这些变量随后用于在静默模式下调用安装程序 我无法控制安装程序代码;我能控制的是应答文件 如果字符串包含未替换的元字符,安装程序将抛出预期的警告 我希望应答文件有一个包含转义字符的Perl字符串常量。这个值是使用嵌入式Ruby代码提供的 我有两个变量。一个是用Ruby定义的,另一个是用Perl定义的Ruby 我怎样才能逃离'@';雇员再培训局的角色?,ruby,string,erb,Ruby,String,Erb,我正在使用 (ERB)模板。此应答文件包含变量,这些变量随后用于在静默模式下调用安装程序 我无法控制安装程序代码;我能控制的是应答文件 如果字符串包含未替换的元字符,安装程序将抛出预期的警告 我希望应答文件有一个包含转义字符的Perl字符串常量。这个值是使用嵌入式Ruby代码提供的 我有两个变量。一个是用Ruby定义的,另一个是用Perl定义的 my $variable = <%= [@var].flatten %>; 我想转义at@字符,以便Perl 不考虑 @ gmail <
my $variable = <%= [@var].flatten %>;
我想转义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"
@var.gsub(“@”,“\\@”)
是正确的。Ruby将结果表示为等效的双引号字符串,需要转义反斜杠
尝试将@var放入@var.gsub(“@”,“\\@”)
是否正确。Ruby将结果表示为等效的双引号字符串,需要转义反斜杠
试试看,put@var
我这么做了,但它不起作用。在所有场景中,perl变量存储:abcd@gmail.com“这反过来又让我想到了abcd.com,因为@gmail在perl上下文中没有定义(空)。作为目前的解决办法,我用[at]@var.gsub(“@“,[at]”)替换了@var,在perl代码中,我用\@:$var=~s/[at]/\\\\@/g替换了[at]@Rajneeta:您需要充分解释如何在Ruby和Perl中使用字符串。听起来你有多个逃避(你是在使用backticks还是system
?),所以试试@var.gsub(“@”,“\\\\@”)
,看看我编辑的问题,以反映具体的用例和场景。我想你误解了MCVE的概念。请看一看。我们的想法是你发布一个简短的程序,我们可以自己运行并查看症状。考虑到你已经准备好了大部分的作品,这应该一点也不困难。我已经准备好了,但它不起作用。在所有场景中,perl变量存储:abcd@gmail.com“这反过来又让我想到了abcd.com,因为@gmail在perl上下文中没有定义(空)。作为目前的解决办法,我用[at]@var.gsub(“@“,[at]”)替换了@var,在perl代码中,我用\@:$var=~s/[at]/\\\\@/g替换了[at]@Rajneeta:您需要充分解释如何在Ruby和Perl中使用字符串。听起来你有多个逃避(你是在使用backticks还是system
?),所以试试@var.gsub(“@”,“\\\\@”)
,看看我编辑的问题,以反映具体的用例和场景。我想你误解了MCVE的概念。请看一看。我们的想法是你发布一个简短的程序,我们可以自己运行并查看症状。考虑到您已经准备好了大部分内容,这应该一点也不困难。所以您正在使用Ruby生成Perl代码?什么是[@var]。展平应该做什么?是的。我正在使用Ruby生成Perl代码。此perl代码是一个应答文件/响应文件,以便于静默安装。“@var”是一个实例变量,可以是字符串或数组。[@var].flatte用于实现两件事:1)[@var]将字符串转换为数组。2) 如果'@var'是一个数组,那么.flatten方法将创建一个平坦的一维数组,而不是由[@var]产生的数组。您的预期结果是什么,即Perl代码应该是什么样子?那么您正在使用Ruby生成Perl代码?什么是[@var]。flatte
应该做什么?是的。我正在使用Ruby生成Perl代码。此perl代码是一个应答文件/响应文件,以便于静默安装。“@var”是一个实例变量,可以是字符串或数组。[@var].flatte用于实现两件事:1)[@var]将字符串转换为数组。2) 如果'@var'是一个数组,那么.flatten方法将创建一个平坦的一维数组,而不是由[@var]产生的数组。您期望的结果是什么,即Perl代码应该是什么样子?
@var = "abcd@gmail.com"
@var.gsub("@", "\@") # => "abcd@gmail.com"
@var.gsub("@", "\\@") # => "abcd\\@gmail.com"
@var.gsub("@", "\\\@") # => "abcd\\@gmail.com"