in reply to Re^7: converting binary to decimal
in thread converting binary to decimal

guess what, refactoring fails,

my $copy1b = '0' . $copy1; my $copy2b = $copy2 . $_; $n = ($copy1b | $copy2b);

copying it literally into the debugger too

DB<38> say (0 . "$_" | 1 . "1") for qw/0 2 4 6 8/ 11 11 15 15 11

The only fix is using |. and use feature 'bitwise';

DB<39> use feature 'bitwise'; say (0 . "$_" |. 1 . "1") for qw/0 2 4 + 6 8/ 11 13 15 17 19

> voodoo89

Yeah, now go back and sacrifice 89 more chickens to the god of golf ;-P

Cheers Rolf
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^9: converting binary to decimal
by tybalt89 (Monsignor) on Jun 08, 2025 at 00:19 UTC

    Er, Umm, no.

    $ perl -le 'print(0 . $_ | 1 . 1) for qw/0 2 4 6 8/' 11 13 15 17 19
    Most probable reason you are seeing what you saw -> you did "use feature 'bitwise'" earlier in your debugging session. 'bitwise' forces plain | to numeric.

    voodoo89 tybalt89 looks around for more chickens...

        Good catch!

        Quick test: if say 1 |. 2 does NOT give an error, you're running with use feature 'bitwise';

        Wait. Are you saying that if someone has "use feature 'bitwise' in their header, then this code fails? How do I make sure it doesnt? Can I write "no feature 'bitwise';" inside binary2decimal() to make sure it doesn't misbehave? Or is that unnecessary?