in reply to USE statement, search method

While technically you could take your own module, call it "Setup.pm" and place it under Amazon/DistributionCenter/, it might eventually clash with any code that actually expect to find the "real" Amazon/DistributionCenter/Setup.pm (and those issues have a tendency to occur).

I think it would be better to either place it under local/Amazon/DistributionCenter/ or similar, or just name it YourOwnSetup.pm, place it wherever it fits logically and use it accordingly.

Software speaks in tongues of man; I debug, therefore I code.

Replies are listed 'Best First'.
Re^2: USE statement, search method
by kmullin (Acolyte) on Dec 07, 2007 at 23:20 UTC

    Thanks for looking at this, and I finally found a way for perl to use MY copy of SJISTermFilter.pm, and I put print statements in it and discovered it is hanging on these statements:

    print "Now in mainline code at line 153\n"; # and tie default filehandles tie(*STDOUT, "Amazon::DistributionCenter::SJISTermFilter", *STDOUT); print "Now in mainline code after tie of STDOUT\n"; tie(*STDERR, "Amazon::DistributionCenter::SJISTermFilter", *STDERR); print "Now in mainline code after tie of STDERR\n"; tie(*STDIN, "Amazon::DistributionCenter::SJISTermFilter", *STDIN) if +($ENV{ENABLE_SJISTERMFILTER_INPUT}); print "Now in mainline code after tie of STDIN\n"; tie(*ARGV, "Amazon::DistributionCenter::SJISTermFilter", *ARGV) if +($ENV{ENABLE_SJISTERMFILTER_INPUT}); print "Now in mainline code after tie of ARGV\n";

    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.

    and another thing. 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?

      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.

        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?