Как насчет порождения его как потока и последующего ожидания установки значения (при условии, что у вас включен поток perl):
# Modules to be used
use strict;
use warnings;
# Threads module
use Thread;
# Share out the variable so it can be set and
# view by main thread and spawned thread
my $value:shared = 0; # value to be set when completed
# Create a thread with a subroutine to compile and set the passed in reference
# to 1 when complete. Pass in the reference to value
my $t = Thread->new(sub {`compile command`; ${$_[0]} = 1;}, \$value);
# Counter to count
my $count = 0;
# Loop until the routine set the value
while ( $value == 0 )
{
# Increment the count and print it out.
$count++;
print "$count\n";
# Sleep for second to let the other thread process
sleep 1;
}
# Thread as completed so join back together
$t->join();
# Indicate items have completed.
print "Done $count\n";
Я запустил приведенный выше пример в ActiveState PERL 5.10 для Windows XP.
Это даст некоторое представление в секундах о том, сколько времени ушло на
выполнить команду. Надеюсь, вы не ищете более секунды детализации. Вы можете заменить localtime () на счетчик, если хотите указать фактическое время.
Я не блокирую ссылку, так как меня беспокоит только то, что она установлена, то есть в конце процедуры, чтобы она завершилась и снова включилась.
Для получения дополнительной информации о потоках Perl .
Или посмотрите на Perlmonks .