use DBI; my $DB_NAME = "test"; my $DB_USER = "xxxx"; my $DB_PASS = "xxx"; $test_data = DBI->connect("DBI:mysql:$DB_NAME","$DB_USER","$DB_PASS"); $data= checkdb($var1,$var2,$var3); ## die Variablen var1-var3 werden in einer Schleife produziert, habe ich hier mal alles weggelassen sub checkdb{ my $chr_id = $_[0]; my $left = $_[1]; my $right = $_[2]; my $query = "SELECT loc, mark, val FROM test WHERE chr_id = $chr_id AND loc BETWEEN $left AND $right"; my $query_handle = $test_data->prepare($query); $query_handle->execute(); my $data; while(my($loc, $mark, $val) = $query_handle->fetchrow_array()) { $data->{$mark}->{$loc} = $val; } return $data; } }