in reply to map and smart match

Because in
say 1 ~~ map $_->{id}, @test;
the right hand side is first evaluated (in scalar context), yielding 2. And 1 ~~ 2 is false.