I'm not surprised no one has mentioned this one. This is pretty horrible as well. Make the 2 lists have the same size, and then return a hash where the keys are one list and the values are another. Then you can extract both lists from the single list using perl built-ins. I would advise not doing it this way. But just for fun, untested code ahead...
sub foo {
my ($tmp, @list1, @list2, %vals) = ('aaaaa');
@list1 = generate_list1();
@list2 = generate_list2();
if (@list1 > @list2) {
push @list2, $tmp++ for 1..@list1-@list2;
} else {
push @list1, $tmp++ for 1..@list2-@list1;
}
@vals{@list1} = @list2;
return %vals;
}
my %tmp = foo();
my @list1 = sort grep !/^aaa/, keys %tmp;
my @list2 = sort grep !/^aaa/, values %tmp;