I ran a couple strace commands:
strace -o strace.out -ff perl -lwe 'use strict; print qq($!)' strace -o strace.out.2 -ff perl -lwe 'print qq($!)'
I ran grep ' E' on each output file to check for system calls that returned an error. (This may not find all errors.) Here is the diff. The lines starting with < are in the strace from running with use strict;.
[chad@chad-laptop ~/x]$ diff 1 2 21,53c21,27 < stat64("/usr/local/lib/site_perl/5.10.0/i486-linux-gnu-thread-multi" +, 0xbfe70cf0) = -1 ENOENT (No such file or directory) < stat64("/usr/local/lib/site_perl/5.10.0", 0xbfe70cf0) = -1 ENOENT (N +o such file or directory) < stat64("/usr/local/lib/site_perl/i486-linux-gnu-thread-multi", 0xbfe +70cf0) = -1 ENOENT (No such file or directory) < _llseek(0, 0, 0xbfe70b60, SEEK_CUR) = -1 ESPIPE (Illegal seek) < _llseek(1, 0, 0xbfe70b60, SEEK_CUR) = -1 ESPIPE (Illegal seek) < _llseek(2, 0, 0xbfe70b60, SEEK_CUR) = -1 ESPIPE (Illegal seek) < ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfe70be8) = -1 ENOTTY (Ina +ppropriate ioctl for device) < stat64("/etc/perl/strict.pmc", 0xbfe7090c) = -1 ENOENT (No such file + or directory) < stat64("/etc/perl/strict.pm", 0xbfe70884) = -1 ENOENT (No such file +or directory) < stat64("/usr/local/lib/perl/5.10.0/strict.pmc", 0xbfe7090c) = -1 ENO +ENT (No such file or directory) < stat64("/usr/local/lib/perl/5.10.0/strict.pm", 0xbfe70884) = -1 ENOE +NT (No such file or directory) < stat64("/usr/local/share/perl/5.10.0/strict.pmc", 0xbfe7090c) = -1 E +NOENT (No such file or directory) < stat64("/usr/local/share/perl/5.10.0/strict.pm", 0xbfe70884) = -1 EN +OENT (No such file or directory) < stat64("/usr/lib/perl5/strict.pmc", 0xbfe7090c) = -1 ENOENT (No such + file or directory) < stat64("/usr/lib/perl5/strict.pm", 0xbfe70884) = -1 ENOENT (No such +file or directory) < stat64("/usr/share/perl5/strict.pmc", 0xbfe7090c) = -1 ENOENT (No su +ch file or directory) < stat64("/usr/share/perl5/strict.pm", 0xbfe70884) = -1 ENOENT (No suc +h file or directory) < stat64("/usr/lib/perl/5.10/strict.pmc", 0xbfe7090c) = -1 ENOENT (No +such file or directory) < stat64("/usr/lib/perl/5.10/strict.pm", 0xbfe70884) = -1 ENOENT (No s +uch file or directory) < stat64("/usr/share/perl/5.10/strict.pmc", 0xbfe7090c) = -1 ENOENT (N +o such file or directory) < ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfe70698) = -1 ENOTTY (Ina +ppropriate ioctl for device) < open("/usr/share/locale/en_CA.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) += -1 ENOENT (No such file or directory) < open("/usr/share/locale/en_CA.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = + -1 ENOENT (No such file or directory) < open("/usr/share/locale/en_CA/LC_MESSAGES/libc.mo", O_RDONLY) = -1 E +NOENT (No such file or directory) < open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = - +1 ENOENT (No such file or directory) < open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 + ENOENT (No such file or directory) < open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOE +NT (No such file or directory) < open("/usr/share/locale-langpack/en_CA.UTF-8/LC_MESSAGES/libc.mo", O +_RDONLY) = -1 ENOENT (No such file or directory) < open("/usr/share/locale-langpack/en_CA.utf8/LC_MESSAGES/libc.mo", O_ +RDONLY) = -1 ENOENT (No such file or directory) < open("/usr/share/locale-langpack/en_CA/LC_MESSAGES/libc.mo", O_RDONL +Y) = -1 ENOENT (No such file or directory) < open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/libc.mo", O_RD +ONLY) = -1 ENOENT (No such file or directory) < open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/libc.mo", O_RDO +NLY) = -1 ENOENT (No such file or directory) < open("/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) += -1 ENOENT (No such file or directory) --- > stat64("/usr/local/lib/site_perl/5.10.0/i486-linux-gnu-thread-multi" +, 0xbfb1b1a0) = -1 ENOENT (No such file or directory) > stat64("/usr/local/lib/site_perl/5.10.0", 0xbfb1b1a0) = -1 ENOENT (N +o such file or directory) > stat64("/usr/local/lib/site_perl/i486-linux-gnu-thread-multi", 0xbfb +1b1a0) = -1 ENOENT (No such file or directory) > _llseek(0, 0, 0xbfb1b010, SEEK_CUR) = -1 ESPIPE (Illegal seek) > _llseek(1, 0, 0xbfb1b010, SEEK_CUR) = -1 ESPIPE (Illegal seek) > _llseek(2, 0, 0xbfb1b010, SEEK_CUR) = -1 ESPIPE (Illegal seek) > ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfb1b098) = -1 ENOTTY (Ina +ppropriate ioctl for device)
Maybe the difference is related to the language settings or the ioctl on file descriptor 4. The strace output shows:
open("/usr/share/perl/5.10/strict.pm", O_RDONLY|O_LARGEFILE) = 4 ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfe70698) = -1 ENOTTY (Inapp +ropriate ioctl for device) _llseek(4, 0, [0], SEEK_CUR) = 0
Update: I'm running perl 5.10.0 on Ubuntu 9.04.

In reply to Re^2: "use strict" sets $! by superfrink
in thread "use strict" sets $! by rovf

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.