Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Script critique requested

by roboticus (Chancellor)
on Oct 04, 2012 at 17:46 UTC ( #997277=note: print w/ replies, xml ) Need Help??


in reply to Script critique requested

jhumphreys:

Well, it works, but I'm not really a fan of the use of the <=> operator, though it's certainly clever.</opinion>

Also, you're brute forcing things by doing the repetitive work yourself instead of having the computer do it. For example, you could do it like:

#!/usr/bin/perl #dectobin3.pl use warnings; use strict; print "Enter a decimal number, less than 256, to be converted to a bin +ary number: "; chomp(my $dec = <STDIN>); my @bits = map { ($dec & 1<<$_) <=> 0 } reverse 0 .. 7; print "Bits=",join("", @bits), "\n";

That way, you can use it for larger numbers without the tedious copy, paste, edit cycle. Generally, whenever you start typing something like $bit_1, $bit_2, etc., it's time to consider using an array.

...roboticus

When your only tool is a hammer, all problems look like your thumb.


Comment on Re: Script critique requested
Download Code
Replies are listed 'Best First'.
Re^2: Script critique requested
by jhumphreys (Novice) on Oct 04, 2012 at 17:52 UTC

    roboticus, thanks for the reply--very useful! Am slowly working my way through intro Perl text by Cozens, so haven't learned map or join yet. But I like the array and the use of reverse you recommend.

    Best,

    J.

      jhumphreys:

      Sorry, I was a bit too idiomatic there. I probably should've suggested something more like:

      my @bits; for (128 64 32 16 8 4 2 1) { push @bits, ($dec & $_) <=> 0; }

      Basically, I saw the wall of:

      my $dec_a = $dec & 128; my $dec_b = $dec & 64; my $dec_c = $dec & 32; my $dec_d = $dec & 16; my $dec_e = $dec & 8; my $dec_f = $dec & 4; my $dec_g = $dec & 2; my $dec_h = $dec & 1;

      and thought to myself that really a loop was needed.

      ...roboticus

      When your only tool is a hammer, all problems look like your thumb.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (9)
As of 2015-08-01 00:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (285 votes), past polls