in reply to access to my variables from other subs

You could use global variables (trully global with use vars) but I would use a closure... that's what they're for. By the way it doesn't look like you are using stict. bad idea.
use strict; # ALWAYS! $a = LetterPrinter( "a" ); $b = LetterPrinter( "b" ); $a->(); # these can also be called with ampersand $b->(); # ie: &$b; sub LetterPrinter { my $letter = shift; return sub{ print $letter, $/ }; }