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

Reply via email to