1Time::Out(3)          User Contributed Perl Documentation         Time::Out(3)
2
3
4

NAME

6       Time::Out - Easily timeout long running operations
7

SYNOPSIS

9         use Time::Out qw( timeout );
10
11         timeout $timeout => sub {
12           # your operation is implemented here and will be interrupted
13           # if it runs for more than $timeout seconds
14         };
15         if ( $@ ) {
16           # operation timed-out
17         }
18

DESCRIPTION

20       The "Time::Out" module provides an easy interface to alarm(2) based
21       timeouts.  Nested timeouts are supported. The module exports the
22       timeout() function by default. The function returns whatever the code
23       placed inside the subroutine reference returns:
24
25         use Time::Out qw( timeout );
26
27         my $result = timeout 5 => sub {
28           return 7;
29         };
30         # $result == 7
31
32       If "Time::Out" sees that "Time::HiRes" has been loaded, it will use
33       that alarm() function (if available) instead of the default one,
34       allowing float timeout values to be used effectively:
35
36         use Time::HiRes qw();
37         use Time::Out   qw( timeout );
38
39         timeout 3.1416 => sub {
40           # ...
41         };
42

CAVEATS

44       Blocking I/O on MSWin32
45         alarm(2) doesn't interrupt blocking I/O on MSWin32, so timeout()
46         won't do that either.
47
48       @_
49         One drawback to using timeout() is that it masks @_ in the affected
50         code.  This happens because the affected code is actually wrapped
51         inside another subroutine that provides it's own @_. You can get
52         around this by specifically passing your @_ (or whatever you want for
53         that matter) to timeout() as such:
54
55           use Time::Out qw( timeout );
56
57           sub foo {
58             timeout 5, @_ => sub {
59               @_;
60             };
61           }
62           my @result = foo( 42, "Hello, World!" );
63           # @result == ( 42, "Hello, World!" );
64

SEE ALSO

66       alarm(2), Sys::AlarmCall
67

AUTHORS

69       Sven Willenbuecher, <sven.willenbuecher@gmx.de>
70
71       Patrick LeBoutillier, <patl@cpan.org>
72
74       This software is copyright (c) 2005-2008 Patrick LeBoutillier, 2023 by
75       Sven Willenbuecher.
76
77       This is free software; you can redistribute it and/or modify it under
78       the same terms as the Perl 5 programming language system itself.
79
80
81
82perl v5.38.0                      2023-11-06                      Time::Out(3)
Impressum