if ($device eq undef) { die "Usage: <app> /dev/hidrawN"; exit; }

undef is neither a string nor a number.    You have to use the defined function to test whether a variable is defined or not.    Or you could just test whether @ARGV was empty or not.    die exits from the program so using exit there is superfluous.

@ARGV or die "Usage: <app> /dev/hidrawN";


my $report = ord(substr($data, 1, 1)); my $status = ord(substr($data, 2, 1)); my $unit = ord(substr($data, 3, 1)); my $exp = ord(substr($data, 4, 1)); my $lsb = ord(substr($data, 5, 1)); my $msb = ord(substr($data, 6, 1)); my $weight = ($msb * 255 + $lsb) / 10; if($exp != 255 && $exp != 0) { $weight ^= $exp; }

If you used unpack you could extract all your data in one statement and you wouldn't have to calculate the $weight value yourself, which is calculated wrong because you should be multiplying by 256, not 255.

my ( $report, $status, $unit, $exp, $weight ) = unpack 'xCCCCS', $ +data $weight /= 10; if ( $exp != 255 && $exp != 0 ) { $weight ^= $exp; }

In reply to Re: Perl to cook you coffee by jwkrahn
in thread Perl to cook you coffee by kirillm

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.