in reply to Get just the unique value

You could do it without naming a temporary hash - I'm not recommending you do this, but it was fun writing:
print qq|$_ | for sort keys %{{ +map {$_->{type} => undef} @$data }};
Prints:
Cotton Paper Plastic

             "I'm fairly sure if they took porn off the Internet, there'd only be one website left, and it'd be called 'Bring Back the Porn!'"
        -- Dr. Cox, Scrubs