>>716
ハッシュにいれて調べるのが常套手段。

@list3 = (1,7,13,19,25,30)
@list4 = (4,10,16,22,28)

じゃなくて

@list3=(1,7,13,19,25)
@list4=(4,10,16,22,28,30)

でよければ

@list1{@list1} = ();

@list3 = grep {exists $list1{$_}} @list2;
@list4 = grep {!exists $list1{$_}} @list2;

でいけるけど、30が@list4じゃなくて@list3に入るようにするのは難しいな。