in reply to Way to make this code better.

Can someone tell me how to do this best way?

I have no idea about what your are doing, an don't know of the context.
But to make your code more readable, get your indenting right. If you are lazy, use perltidy. And it's prettify.

use strict; use utf8; use warnings; use Mojo::JSON qw|from_json|; use bytes; use MBclient; sub new { ... .; } sub _device_read { # $d as data # $mbc as ModBusControl # $r as response my ( $d, $mbc, $r ) = ( shift, MBclient->new(), undef ); # parse device config $d->{regs} = from_json( $d->{regs} ); # setup device attributes $mbc->host( $d->{ip} ); $mbc->port( $d->{port} ); $mbc->unit_id(0); # by default. # for all specified registers foreach my $reg ( keys %{ $d->{regs}->{r} } ) { $r->{$reg} = _prettify_byte( # read data from device registers $mbc->read_input_registers( # converting text register address to hex hex($reg), # specify number of registers to read $d->{regs}->{r}->{$reg} ) ); } return ($r); } # converts from hex data to deximal # recieve output from modbus sensors sub _prettify_byte { # okay state of deal return ( sprintf( '%.2f', unpack( 'f', pack( 's2', @{ $_[0] }[ 1, 0 ] ) + ) ) ) if ( $_[0] ); #return error message return ( $c{_err_} ); }
perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'

Replies are listed 'Best First'.
Re^2: Way to make this code better.
by builat (Monk) on Aug 15, 2015 at 13:03 UTC
    Shame on me. Thnx. Well this is a part of mojolicious method. It collects data from sensors. Some other methods sends driver signals and set on\off devices.
    So simply it is climatic data collector.