The first argument of map is code executed for every other argument of map.
print map uc($_), qw( a b c d ); # Prints ABCD
print map { uc($_) } qw( a b c d ); # Same thing
unpack '(A4)*', $val splits the value into as many 4 byte blocks as possible. I would have used "W" instead of "A", though. unpack '(W4)*', $val splits the value into as many 4 character blocks as possible.
@_ is not unamed —its name is @_— and nothing is being stored in it —its contents are being passed to map.
@_ holds the arguments of the current function (convert).