Как назначить комбинацию строки и переменной другой переменной? - PullRequest
0 голосов
/ 26 апреля 2019

Как я могу присвоить комбинацию строки и переменной другой переменной?

Например, мне нужно подготовить фрагмент кода, который мне нужно записать в файл, на основе соответствия условию 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 ]

3 голосов
/ 26 апреля 2019

. - оператор объединения строк в Perl.

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

Некоторые выражения внутри пар " двойных кавычек " также интерполируются (правила интерполяции могут быть довольно сложными),поэтому написание строкового выражения с интерполированными переменными - это еще один способ объединения строк.

$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"
0 голосов
/ 27 апреля 2019

Объединить строку с помощью оператора . для чего угодно; константа или переменная, это может быть изначально числовой / другой тип, который будет приведен к строковому типу
некоторые ошибки здесь;

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
если как таковой получен возврат подпрограммы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...