我有一个字符串,其中间部分将根据条件进行更改。 像这样:
"You have x number of problems";
x的值基于if条件具有不同的文本。
我能做的一种方法是在一个变量中存储“你有”,在另一个变量中存储“问题数”
做类似sprintf("%s%d%s", $firstpart, $x, $secondpart);
有更好的方法吗?
答案 0 :(得分:2)
通常,使用interpolation在Perl中构造字符串:将变量放在字符串中。
my $numProblems = 99;
my $text = "You got $numProblems problems, but Perl ain't one.";
这仅适用于简单变量,以及数组和散列访问等。表达式和方法调用不起作用。
# Accessing a hash or array works.
my $text = "You got $numProblems{$user} problems, but Perl ain't one.";
# Method call does not work.
my $text = "You got $user->numProblems problems, but Perl ain't one.";
您可以使用baby-cart "secret operator"来欺骗Perl到插值表达式。
my $text = "You got @{[$user->numProblems]} problems, but Perl ain't one.";
您可以阅读所有Gory Details Of Interpolation in perlop。
您也可以使用sprintf
,但通常仅在您需要格式化时使用my $text = sprintf "You got %d problems, but Perl ain't one.", $numProblems;
。字符串的开头和结尾不需要单独的变量。
<?xml version="1.0" encoding="UTF-8" ?>
<response uri="/api/" action="EXPORT">
<result>
<rows>
<row>
<column name="Name1">Value1</column>
<column name="Name2">Value2</column>
</row>
<row>
<column name="Name1">Value1</column>
<column name="Name2">Value2</column>
</row>
</rows>
</result>
</response>