use CGI; my $query = new CGI; my $slice = $query->param('slice'); my $next_qs = build_qs($query, slice => $slice + 1); sub build_qs { my ($query, %new_param) = @_; my %parameters = map { $_ => $query->param($_) } $query->param; $parameters{$_} = $new_param{$_} for keys %new_param; return join '&', map { "$_=$parameters{$_}" } keys %parameters; }