sub _device_read{ my $d = shift; # reduced line to relevant parts ... # parse device config $d->{regs}=from_json( $d->{regs} ); #### sub _device_read{ ... $r->{$reg} = _prittyfy_byte(...); ... }; sub _prettify_byte{ return (...) if( $_[0] ); return( $c{_err_} ); }; #### my %registers = %{$d->{regs}->{r}}; foreach my $reg (keys %registers){ my $reg_id = hex $reg; my $reg_num = $registers{$reg}; # read_input_registers returns an array reference my $tmp = $mbc->read_input_registers($reg_id, $reg_num); $r->{$reg} = _prettify_byte($tmp); }; #### my %registers = %{$d->{regs}->{r}}; foreach my $reg (keys %registers){ # read_input_registers returns an array reference my $tmp = $mbc->read_input_registers(hex $reg, $registers{$reg}); $r->{$reg} = _prettify_byte($tmp); };