設計思想はおいておくとして、Perlでの実装方法としてはこういうのはどうだろう

sub join_range($@) {
my $range = shift;
join('', @_[@$range])
}
print join_range([0..1], <<FOO, <<BAR, <<BAZ);
hogehoge
FOO
fugafuga
BAR
piyopiyo
BAZ