如何将字符串和变量的组合分配给另一个变量?

时间:2019-04-25 22:09:38

标签: perl

如何将字符串和变量的组合分配给另一个变量?

例如,我需要准备一些代码,需要根据if条件匹配将这些代码写到文件中。这里的$mod$param是变量,其余的只是我需要写在文件中的纯文本。

$mode = "abc";
$param = "parameter";
if (${mod} == "xyz") {
$tmp_var = $mod #(
$param
) func_cell 
   (/*AUTO*/);
} else {
$tmp_var = $mod  func_cell 
   (/*AUTO*/);
}
# Here I will write `$tmp_var` inbetween other text in my file.

如果我运行上面的代码,则会看到syntax errors(Missing semicolon on previous line?)一样。我是Perl的新手。有人可以帮我修复语法吗?

2 个答案:

答案 0 :(得分:3)

.是Perl中的字符串连接运算符。

$y = "bar";
$z = "foo" . $y;
print $z;        # "foobar"

"双引号"对中的某些表达式也会被插值(插值规则会变得非常复杂),因此编写带有插值变量的字符串表达式是连接字符串的另一种方式。 / p>

$y = "bar";
$z = "foo$y";
print $z;        # "foobar";

$z = "$ybaz";    # this won't work, looks for a single var named '$ybaz'
$z = "${y}baz";  # but this will. I told you it gets complicated
print $z;        # "barbaz"

答案 1 :(得分:0)

.运算符连接字符串以表示任何内容;常数或变量,可能是原始数字/其他类型,将被强制转换为字符串类型
这里有一些错误;

if (${mod} == "xyz") {
$tmp_var = $mod #(
$param
) func_cell 
   (/*AUTO*/);
} else {
$tmp_var = $mod  func_cell 
   (/*AUTO*/);
}

如果${mod}是标量/纯变量;它是$ mod,{}在变量主要用于使用引用后
test $ mod ==“ xyz”如果用于字符串测试,将是错误的,因为它的运算符是eq, ne, lt, gt, le, ge
任何== != >= <= < >符号都用于数字测试
我想你是说
$tmp_var = $mod.$func_cell
如果最后一个是简单/标量变量或

$tmp_var = $mod.$func_cell
如果这样子程序返回了