in reply to Re: perl -d: puzzling behavior when run in program in current directory
in thread perl -d: puzzling behavior when run in program in current directory

When I create a new directory at the same level (~/learn/perl/oldp5p), then copy over all the contents from the original directory to the new one, then run the program from the new directory, the problem appears:

$ cd ../oldp5p $ cat abc.pl print "hello world\n"; print "goodbye world\n"; $ perl abc.pl hello world goodbye world $ perl -d abc.pl hello world goodbye world Var=
But when I wipeout the original directory, create a new directory with the same name, then copy over the test program to the new directory and run the debugger, the problem goes away.
$ cd .. $ rmtree1.pl p5p $ mkdir p5p $ cp -v oldp5p/abc.pl p5p 'oldp5p/abc.pl' -> 'p5p/abc.pl' $ cd p5p $ perl abc.pl hello world goodbye world $ perl -d abc.pl Loading DB routines from perl5db.pl version 1.49_04 Editor support available. Enter h or 'h h' for help, or 'man perldebug' for more help. main::(abc.pl:1): print "hello world\n"; DB<1> q
So if seems as if something in the original directory is "polluting" the operation of the debugger.

Jim Keenan

Replies are listed 'Best First'.
Re^3: perl -d: puzzling behavior when run in program in current directory
by jkeenan1 (Deacon) on Jan 01, 2017 at 16:49 UTC
    Aha! Here is the explanation.

    Two days ago I was working on this bug report: RT 130445. In the course of that work, I created this hidden file in the original directory:

    $ ack 'db\.out' . .perldb 1:&parse_options("NonStop=0 TTY=db.out");
    So when I ran the perl debugger over any program from that directory, it was silently processing '.perldb' and setting the 'NonStop' option and redirecting legitimate output to a file in that directory called 'db.out'.

    Once I deleted '.perldb', the output of perl -d abc.pl returned to normal.

    Thank you very much.

    Jim Keenan
Re^3: perl -d: puzzling behavior when run in program in current directory
by Anonymous Monk on Jan 01, 2017 at 16:49 UTC
    So if seems as if something in the original directory is "polluting" the operation of the debugger.

    Just some ideas: .dot files, hard links, symbolic links, directory permissions, ACLs? Does ls -lAR on the respective directories show anything like that?