我尝试在<<
块中使用变量i。但由于编译错误,它失败了
全球符号&#34; $ i_0&#34;需要显式的包名称 D:/development/perl/SupportCases/createFTL.pl第76行 全球符号&#34; $ i_0&#34;需要显式的包名称 D:/development/perl/SupportCases/createFTL.pl第76行 全球符号&#34; $ i_1&#34;需要显式的包名称 D:/development/perl/SupportCases/createFTL.pl第76行 全球符号&#34; $ i_1&#34;需要显式的包名称 D:/development/perl/SupportCases/createFTL.pl第76行 全球符号&#34; $ i_2&#34;需要显式的包名称 D:/development/perl/SupportCases/createFTL.pl第76行 全球符号&#34; $ i_2&#34;需要显式的包名称 D:/development/perl/SupportCases/createFTL.pl第76行 全球符号&#34; $ i_0&#34;需要显式的包名称 D:/development/perl/SupportCases/createFTL.pl第76行 全球符号&#34; $ i_1&#34;需要显式的包名称 D:/development/perl/SupportCases/createFTL.pl第76行 全球符号&#34; $ i_2&#34;需要显式的包名称 D:/development/perl/SupportCases/createFTL.pl第76行。
我如何定义&lt;&lt;&lt;&lt;&lt;&lt;&lt;块?
由于
my $i = 1;
for ($i = 1; $i <=6; $i++){
my $block = <<BLOCK;
<#if ((model.fields.txt_Artikel_Z$i?? || model.fields.txt_Artikel_Z$i.value = "") &&
(model.fields.txt_Artikelnummer_Z$i?? || model.fields.txt_Artikelnummer_Z$i.value = "") &&
(model.fields.txt_Anzahl_Z$i?? || model.fields.txt_Anzahl_Z$i.value = "") &&
(model.fields.chk_Ware_aus_Z$i_0?? || model.fields.chk_Ware_aus_Z$i_0.value = "") &&
(model.fields.chk_Ware_aus_Z$i_1?? || model.fields.chk_Ware_aus_Z$i_1.value = "")&&
(model.fields.chk_Ware_aus_Z$i_2?? || model.fields.chk_Ware_aus_Z$i_2.value = ""))
&&
(!(model.fields.txt_Artikel_Z$i.value = "") &&
!(model.fields.txt_Artikelnummer_Z$i.value = "") &&
!(model.fields.txt_Anzahl_Z$i.value = "") &&
!(model.fields.chk_Ware_aus_Z$i_0.value = "") &&
!(model.fields.chk_Ware_aus_Z$i_1.value = "")&&
!(model.fields.chk_Ware_aus_Z$i_2.value = ""))
>
<#else>
<result type="ERROR"
field="txt_Fehlerbericht_Arbeiten_Z$i"
code="-1"
message="Komplette Zeile $i muss ausgefüllt sein!" />
</#if>
BLOCK
print "$block";
}
答案 0 :(得分:4)
如果插值中的变量名称不明确,请使用大括号。 ${i}
应该有效。例如:my $string = "${i}_2";
。否则Perl会认为您要插入一个名为$i_2
的变量。这在块中的作用与在常规字符串中的作用相同。
此外,在Perl中几乎不需要C风格的for
循环。以下是如何以更多Perlish风格做同样的事情:
foreach my $i (1..6) { ...
答案 1 :(得分:3)
它们就像任何其他双引号字符串一样工作。如果您希望插入$varname
,请使用语法"...${varname}..."
。对于here-doc也一样。