Hello folks,

I met very strange issue with the code responsible for loading the modules. There is set of modules responsible for processing different data. If some module which name is defined in $cn doesn't exist, then the current module will process the current portion of data. No problem with this.

eval { require "relative/path/to/$cn.pm"; }; if ( $@ && $@ !~ m/Can't locate/ || $! && $! !~ m/No such file or directory/ ) { warn "$@" if $@; warn "$!" if $!; die "Stop due to error!\n"; }

Weirdness happens when some input is tested under different environments. It works properly in linux and cygwin (1.7.25) with embedded perl (5.14.2). Troubles begin under Windows 7 with Straberry Perl (5.16.2). Sometimes (!!!), not always the same input produces the error Inappropriate I/O control operation (that comes from $!).

I googled this issue but answers on StackOverflow, here and other resources don't give clear description for my case.

1. At this moment it is not clear to me why this happens in some environment and doesn't happen in others.

2. The second question is will it be safe, if I remove everything related to $! as below and keep the code related to $@ for eliminating the absence of some modules?

eval { require "relative/path/to/$cn.pm"; }; if ( $@ && $@ !~ m/Can't locate/ ) { warn "$@" if $@; die "Stop due to error!\n"; }

In reply to eval require and "Inappropriate I/O control operation" by siberia-man

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.