code: def substr(requestContext, seriesList, start=0, stop=0):
      
      for series in seriesList:
          left = series.name.rfind('(') + 1
          right = series.name.find(')')
          if right < 0:
              right = len(series.name)+1
          cleanName = series.name[left:right:].split('.')
          if int(stop) == 0:
              series.name = '.'.join(cleanName[int(start)::])
          else:
              series.name = '.'.join(cleanName[int(start):int(stop):])
  
          # substr(func(a.b,'c'),1) becomes b instead of b,'c'
          series.name = re.sub(',.*$', '', series.name)
      return seriesList
docs: Takes one metric or a wildcard seriesList followed by 1 or 2 integers.
      Assume that the metric name is a list or array, with each element
      separated by dots. Prints n - length elements of the array (if only one
      integer n is passed) or n - m elements of the array (if two integers n and
      m are passed). The list starts with element 0 and ends with element
      (length - 1).
  
      Example::
  
          &target=substr(carbon.agents.hostname.avgUpdateTime,2,4)
  
      The label would be printed as "hostname.avgUpdateTime".