@lines = sort { $a->{id} <=> $b->{id} } @lines; for (0..$lineno-1) { if (exists $comment{$_}) { print $comment{$_}; } else { my $x = shift(@lines); print $x->{line}; } } # @lines should be empty at this point