http://www.perlmonks.org?node_id=267725


in reply to Re: Re: "Useless use of private variable in void context"
in thread "Useless use of private variable in void context"

Basically, the binary chop means

  1. Comment out the top half of the code

    Compile -- has the error gone away?

    1. Yes -- It is in the top half of the program.

      So now uncomment the second quarter. Did it come back?

      1. Yes. It is in that second quarter.

        Uncomment the first half and the 3rd eight of the code. Is it still there?

        1. Yes. ....
        2. No. ....
      2. No. It must be in the first quarter

        So uncomment the second eigth....

  2. No. So the error must be in the bottom half of the program.

    So uncomment the first half and comment out the 3rd quarter.

    Compile -- did the error go away?

    1. Yes, It's in the 3rd quarter.

      So uncomment the 6th eigth of the code.

      Compile -- did it come back?

      1. Yes ... Its in the 6th eigth.
      2. No ... Its in the 5th eight.
        1. No ... its in the 4th quarter....

      Damn! That was tedious to type. And probably equally tedious to read for anyone who already knows it, but... I typed it now so there:)


      Examine what is said, not who speaks.
      "Efficiency is intelligent laziness." -David Dunham
      "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller


      • Comment on Re: Re: Re: "Useless use of private variable in void context"

Replies are listed 'Best First'.
Re: Re: Re: Re: "Useless use of private variable in void context"
by Seumas (Curate) on Jun 20, 2003 at 22:06 UTC
    Aaah. So it's (essentially) just the old print "BREAK"; technique. That's what I thought you meant, but I considered perhaps by 'binary' you meant that I could literally do some sort of 'binary search' for the line in question. Hah! I'm such a dope some times. Thanks for clearing that up. :)

      Effectively that is a binary search, as you are excluding half of the unknowns at each pass. Even on very large source files, it zeros in on the errant line(s) pretty quickly. You can do the same thing with deliberate error too.

      Enlil reminded me that the quickest way to "comment out" half of the code is to use a __DATA__ statement. Shove it in the middle to start then move it a quarter forward or back as appropriate.


      Examine what is said, not who speaks.
      "Efficiency is intelligent laziness." -David Dunham
      "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller