Why does and how can I prevent pp'd apps from stat'ing my Perl installation?
Here's the simple situation… I've used perlbrew (for demonstration purposes), to create a pp'd application: $ pp -o hello -e 'print "Hello World!\n"' What I've found is that when executing 'hello', there are several stat() calls for files within my Perl installation. I would not expect this to happen. Why does this happen and how can I prevent it? To see the results, here is how to reproduce it (on Linux): $ strace -o hello.strace ./hello Here's the stat() calls which happened for my example: stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/attributes", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/Compress/Raw/Zlib", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/Cwd", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/Fcntl", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/File/Glob", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/IO", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/List/Util", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/PerlIO/scalar", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/Tie/Hash/NamedCapture", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/prefork.pm", 0x7fff20f2cdb0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/prefork.pmc", 0x7fff20f2ce50) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/auto/attributes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/auto/Compress/Raw/Zlib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/auto/Cwd", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/auto/Fcntl", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/auto/File/Glob", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/auto/IO", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/auto/List/Util", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/auto/PerlIO/scalar", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/auto/Tie/Hash/NamedCapture", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/ prefork.pm", 0x7fff20f2cdb0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux/prefork.pmc", 0x7fff20f2ce50) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/auto/attributes", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/auto/Compress/Raw/Zlib", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/auto/Cwd", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/auto/Fcntl", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/auto/File/Glob", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/auto/IO", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/auto/List/Util", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/auto/PerlIO/scalar", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/auto/Tie/Hash/NamedCapture", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/ prefork.pm", 0x7fff20f2cdb0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/prefork.pmc", 0x7fff20f2ce50) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/auto/attributes", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/auto/Compress/Raw/Zlib", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/auto/Cwd", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/auto/Fcntl", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/auto/File/Glob", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/auto/IO", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/auto/List/Util", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/auto/PerlIO/scalar", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/auto/Tie/Hash/NamedCapture", 0x7586c0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/ prefork.pm", 0x7fff20f2cdb0) = -1 ENOENT (No such file or directory) stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux/prefork.pmc", 0x7fff20f2ce50) = -1 ENOENT (No such file or directory) Thanks -Tim