Ciao, ho provato a usare la funzione int per fare il cast ma non era quello il problema, alla fine ho rinunciato con quel motodo e ho "risolto" la cosa così.

Anche se mi procura un nuovo problema, ossia mi stampa le giuste combinazioni ma un numero apparentemente casuale di volte e non so come fare per dirgli che me le stampi solo una volta (ossia esattamente quante volte le trova nel file di input)..

Posto il codice nel caso possa essere di "aiuto" a qualcuno.
codice:
	  %hash= ($r[0] => $r);  
	      
	foreach ($hash{$r[0]}[7]=~/regexp/){   
	    if ($hash{$r[0]}[3]=~/regexp/){          
		$m=\$hash{$r[0]}[1];	  
		$t=$hash{$r[0]}[6];            
		$t=int $t;
				
	    }
	
	} 
	foreach($hash{$r[0]}[7]=~/regexp/){   
	    if ($hash{$r[0]}[3]=~/regexp/){           
		   $i=$hash{$r[0]}[0]; 
		    $s=\$hash{$r[0]}[1];         
			    
	    }
	    
	    
	}
	  if ($i==$t){
	     print "$$s\t$$m\n";
	  }
Nel frattempo, se qualcuno sa dirmi come mai mi stampa così tante volte e soprattutto come evitare il problema..ben venga.
Grazie comunque per l'aiuto che ho ricevuto, non si finisce mai di imparare!