我有一个子程序,我正在尝试将字符串传递给子程序并在子程序中使用。最小代码示例如下。
my $printsection="Part";
my @data = qw(12 13 15);
sub heading{
my $value= $_[0];
print "$value";
}
sub printdata{
my $label=$_[0];
foreach (@data) {
my $r = $_;
&heading($label);
}
}
&printdata("$printsection-$r");
我得到的是“在连接中使用未初始化的值$ r(。)或在......处的字符串”错误,我理解为什么,但我不知道在这种特殊情况下如何修复它。我想要摆脱的是:
Part-12
Part-13
Part-15
有人可以就如何解决这个问题给我一些指示吗?
答案 0 :(得分:4)
sub printdata {
my $data = shift;
my $formatter = shift;
for my $r (@$data) {
print $formatter->($r);
}
}
my @data = qw(12 13 15);
printdata(\@data, sub { "Part-$_[0]\n" });