An imaginary solution 

my $rec = $self->decode($data,
  T => 'at',
  t => 'outside_temp',
  t => 'outside_temp_high',
  t => 'outside_temp_low',
  I => 'rain_clicks',
  I => 'rain_rate_high',
  P => 'barometer',
  I => 'solar_radiation',
  I => 'wind_samples',
  t => 'inside_temp',
  B => 'inside_humidity',
);
%template_map = (
  T => [ 'L', 'decode_timestamp'],
  t => [ 'S', 'decode_temperature'],
  I => [ 'S' ],
  B => [ 'C' ],
);