I'm sure there must be some modules lying around on CPAN to do exactly this, but if you want to roll your own...
work out the minimum and maximum values of the graph - foreach (keys %survey) {$max = $_ if $survey{$_} > $survey{$max}; repeat and rinse for $min} or something.
Do some maths to work out your scale factor,depending on how big you want your graph
decide how you want to do your graphics - the two most common ways are stretching a single-pixel (<img width=$value height=$size_of_a_column src='pixel.gif' >) or just printing <td>'s with coloured backgrounds - either a single td with a styled size (using padding-right or similar) or a bunch of 'unit' cells that get filled in or not as the case may be.