When i using perl -c it takes too much time to check
Why don't you spend only as much time as you are ready to spare, and not a millisecond more? (Note: I'm on Windows here. Use Time::HiRes::ualarm in Linux).
use strict;
use warnings;
use feature 'say';
use Time::HiRes 'time';
use Win32::Process qw/ CREATE_NO_WINDOW STILL_ACTIVE /;
my $timeout = 75; # 75 ms
for my $fname (
$0, # valid Perl, won't timeout
'Robot3.pm', # some valid Perl, will timeout
# (~ 250 ms to check normally)
'../DISTRIBUTIONS.txt' # list of Strawberry distributions
) {
my $t = time;
my $obj;
Win32::Process::Create(
$obj,
$^X,
"$^X -c $fname",
0,
CREATE_NO_WINDOW,
'.'
) or die;
$obj-> Wait( $timeout );
my $code;
$obj-> GetExitCode( $code );
print "$fname is ", ( $code == 0 or $code == STILL_ACTIVE )
? "valid perl"
: "something else";
$obj-> Kill( 0 );
printf ", we spent %.3fs to check\n", time - $t;
}
__END__
alarm.pl is valid perl, we spent 0.058s to check
Robot3.pm is valid perl, we spent 0.072s to check
../DISTRIBUTIONS.txt is something else, we spent 0.025s to check
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.