my %params; $params{'articlelinks.id'} = $with[0]; for my $i ( 2 .. (scalar @with) - 1 ){ $params{"articlelinks_$i.id"} = $with[$i - 1]; } my @articles = $schema->resultset('articles')->search( \%params, { join => [ 'articlelinks' x scalar( @with ) ] } );