se nella sub start definisci $a e $q non devi trasmetterle alla sub you_pick($a, $q) ma semplicemente le usi. Nel tuo caso $scelta, $queen sono vuote quindi rispettano sempre la condizione!

Chiama le sub con & e usa le variabili che hai già impostato. es (ho messo l'INT davanti a $q altrimenti non va):
Codice PHP:
sub start
{
if (
$k <= 0) {
print 
"\n";
print 
"WHAT IS YOUR CASH? \$";
$k = <>;
print 
"\n";
}
print 
"HOW MUCH DO YOU\n";
print 
"WANT TO BET? \$";
$b = <>;
print 
"\n";
if (
$k == || $k 0) { no_more();}
if (
$b $k) { &no_suff;}

$q rand(3);

print 
"+---+ +---+ +---+\n";
print 
"!___! !___! !___!\n";
print 
"!___! !___! !___!\n";
print 
"! 1 ! ! 2 ! ! 3 !\n";
print 
"!___! !___! !___!\n";
print 
"!___! !___! !___!\n";
print 
"+---+ +---+ +---+\n";
print 
"\n";
print 
"\n";
print 
"FIND THE QUEEN,PICK A CARD 1,2 OR 3? ";
$a = <>;
print 
"\n";
&
you_pick;
}

sub start
{
if (
$k <= 0) {
print 
"\n";
print 
"WHAT IS YOUR CASH? \$";
$k = <>;
print 
"\n";
}
print 
"HOW MUCH DO YOU\n";
print 
"WANT TO BET? \$";
$b = <>;
print 
"\n";
if (
$k == || $k 0) { no_more();}
if (
$b $k) { &no_suff;}

$q =intrand(3));

print 
"+---+ +---+ +---+\n";
print 
"!___! !___! !___!\n";
print 
"!___! !___! !___!\n";
print 
"! 1 ! ! 2 ! ! 3 !\n";
print 
"!___! !___! !___!\n";
print 
"!___! !___! !___!\n";
print 
"+---+ +---+ +---+\n";
print 
"\n";
print 
"\n";
print 
"FIND THE QUEEN,PICK A CARD 1,2 OR 3? ";
$a = <>;
print 
"\n";
&
you_pick;
}

sub you_pick {
if (
$a == $q) {
print 
"YOU WON \$"$b"!\n";
$k += $b;
} else {
print 
"YOU LOST \$"$b"!\n";
$k -= $b;
}
print 
the_queen ($q);
print 
"YOUR CASH IS NOW \$"$k"\n";
print 
"PLAY AGAIN? (Y/N) ";
$b = <>;
print 
"\n";
if (
$b == "Y") {
&
start;
elsif ($b == "N") {
print 
"BYE BYE";
exit;
}