Not a one liner, but this is likely to be faster than yours on big arrays:
#!/usr/bin/perl
use warnings;
use 5.012;
sub difference {
my ($first, $second) = @_;
my %except;
@except{ @$second } = 1;
return [ grep { not exists $except{$_} } @$first ];
}
my @anames = ("one", "two", "three", "four", "five");
my @hrefs = ("two", "four", "six");
my $d = difference \@anames, \@hrefs;
say "@$d";