Perlで二つの配列の積集合を取得

use strict;
use Data::Dumper;
my @array1 = (1,2,3,4,5);
my @array2 = (2,4,5,6,7);
my %in_array1 = ();
@in_array1{@array1} = map {1;} @array1;
print Dumper grep { $in_array1{$_}} @array2;
#$VAR1 = 2;
#$VAR2 = 4;
#$VAR3 = 5;

こんなんでよい?
これでちゃんと動くのはわかってるんだけどもっと気持ちのいい書き方とかない?