Nečitelnost není vlastností jazyka ale programátora. Co třeba takhle?
sub merge {
my $r_a=shift;
my $r_b=shift;
my @ret=();
my ($ia,$ib)=(0,0);
my ($ctia,$ctib)=(1,1); # 0..necti 1..cti 2..konec
my ($maxa,$maxb); # maximalni indexy
my $prveka;
my $prvekb;
$maxa=$#{@{$r_a}};
$maxb=$#{@{$r_b}};
while (1) {
$ctia=2 if ($ia>$maxa);
$ctib=2 if ($ib>$maxb);
last if ($ctia==2 and $ctib==2);
if ($ctia==1) {
$prveka=$r_a->[$ia++];
$ctia=0;
}
if ($ctib==1) {
$prvekb=$r_b->[$ib++];
$ctib=0;
}
if ($prveka<$prvekb) {
push(@ret,$prveka);
$ctia=1;
}
elsif ($prveka==$prvekb) {
push(@ret,$prveka);
push(@ret,$prvekb);
$ctia=$ctib=1;
}
else {
push(@ret,$prvekb);
$ctib=1;
}
}
return (\@ret);