Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: RFC: Net::SNTP::Client v1

by Monk::Thomas (Friar)
on Jul 01, 2015 at 17:15 UTC ( [id://1132862]=note: print w/replies, xml ) Need Help??


in reply to RFC: Net::SNTP::Client v1

MAX_PORT => 65536,
Off by one. The highest allowed port number is 65535.

Replies are listed 'Best First'.
Re^2: RFC: Net::SNTP::Client v1
by thanos1983 (Parson) on Jul 02, 2015 at 00:28 UTC

    Hello Monk::Thomas,

    Thank you for your time and effort reviewing my code. Nice point, I forgot that port 0 is also counted.

    I have updated all my die evaluations, probably by 99.9% you are right. After the die process it will not return anything. I am using eval to capture the error.

    a) Decide to use a specific indentation style and then stick to it. The outer if-conditional has its codeblock indented, the inner one does not. That's very confusing.

    You are right, I have updated the documentation also based on Plain Old Documentation format I hope it is correct until I test it. :D

    b) Using a 'true' value to indicate an error and a 'false' value to indicate success is counter-intuitive. Using '0' or 'undef' as the error-returns opens up the possibility to use the return value to provide more detail. (e.g. number of returned matches, length of read data, in your case it could be used to indicate the actual port used in case the default applies.)

    The reason that I am using TRUE and FALSE is for simplicity and readability reasons in future. I think it makes it easier to understand in case of TRUE do that or in case of FALSE do that.

    Seeking for Perl wisdom...on the process of learning...not there...yet!

      The reason that I am using TRUE and FALSE is for simplicity and readability reasons in future. I think it makes it easier to understand in case of TRUE do that or in case of FALSE do that.

      You can keep on doing that. Just switch the meaning of true and false. Have a look at read() http://perldoc.perl.org/functions/read.html

      If you're not interested in the actual return code you can simply write
      read $fh, 5, 10 or die;
      Or if you want to make sure you read exactly x bytes, then you can write
      my $bytes = 5; my $count = read $fh, $bytes, 10; if ($count == $bytes) { (do stuff) } else { die sprintf "Want %i bytes, got %s!", $bytes, $count // '<undef>'; }
      (The // operator requires at least Perl 5.10.)

        Hello Monk::Thomas,

        Thank you again for your time and effort reviewing my code.

        I can not understand why you recommend read

        , I am not reading or writing to a file. I am using TRUE or FALSE to determine if the output of the subroutine.

        In further analysis, I am using the TRUE and FALSE in order to test for example if the port number is correct, which will result e.g. that the port is ok or maybe is not ok. Then based on the return (TRUE or FALSE) I have an if condition that will return $error if and only if the return from the function was TRUE.

        Please correct me if I have miss understood the way you are thinking of using read.

        Seeking for Perl wisdom...on the process of learning...not there...yet!

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1132862]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (2)
As of 2024-04-19 21:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found