sub add_words::main () { my %words = {}; my $english; my $foreign; until ('1' == '0') { print "Enter English: "; chomp($english = ); print "Enter German: "; chomp($foreign = ); if (($english && $foreign) eq '-1') { last; } ($english, $foreign) = &hash_processor::function($english, $foreign, '0'); $words{$english} = $foreign; } foreach my $word (sort keys %words) { # First output is description of hash's mem location, and I DON'T KNOW WHY. print "$word ==> $words{$word}\n"; } } sub hash_processor::function () { my ($english, $foreign, $process) = @_; if ($process == '0') { $english = "$english" . "$hash_processor::tag_count"; $foreign = "$foreign" . "$hash_processor::tag_count"; } $hash_processor::tag_count++; return ($english, $foreign); }