in reply to Re^2: USE statement, search method
in thread USE statement, search method

The print statements are mine, just to see where it was crashing, and I can see it never makes it past the very first tie statement. My question is, what is tie? I've never heard of it.

tie lets you change the basic operations you can perform on a variable. In this case, it changes the default filehandles so that all attempts to print to them do something different. (This implies that your print statements won't do what you think, because you're printing to newly-tied filehandles.)

All of my books tell me that a use is kind-of like a C #include, where it just brings code in, but doesn't execute it. Well, I find that to be false. It brings it in AND executes it. Are the books wrong?

Yes and no. Eventually even C programs execute included code. use loads and compiles the requested code. If that code has any code to execute at or immediately after compilation time, Perl will execute it at the appropriate time. If there's no code to execute as part of the compilation process, any of the requested code will only execute when something else calls it.

Replies are listed 'Best First'.
Re^4: USE statement, search method
by kmullin (Acolyte) on Dec 13, 2007 at 16:37 UTC

    As I said, it never gets past the first tie statement. My program then ends with an 'Out of memory' error. Do you know of any outstanding issues with tie?

      As I said, it never gets past the first tie statement.

      I don't believe you can know that, because you're printing to a tied filehandle. Now maybe you ran the code in the debugger and verified it, or maybe you looked in the appropriate log, or read the code of the tie class, but that's certainly not obvious. You need to know where the program really is ending if you want to hope to debug it.

      Do you know of any outstanding issues with tie?

      It's been around and well-tested in the core for over a decade, so my instinct tells me to look in the class to which you're tieing after you've identified where the problem occurs.