变量替换多个子程序

时间:2018-04-11 22:02:35

标签: perl

我有一个子程序,我正在尝试将字符串传递给子程序并在子程序中使用。最小代码示例如下。

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

有人可以就如何解决这个问题给我一些指示吗?

1 个答案:

答案 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" });