#!/usr/bin/env perl use strict; use diagnostics; use threads; use IO::AIO; use POSIX qw/EXIT_SUCCESS/; my $file = shift; my @res1 = mylstat($file); my @res2 = threads->create({'context' => 'list'}, 'mylstat', $file)->join(); print 'direct call: ['.join('][', @res1) . "]\n"; print 'thread call: ['.join('][', @res2) . "]\n"; exit(EXIT_SUCCESS); sub mylstat { my @lstat; aio_lstat shift, sub {$_[0] and return; @lstat = lstat(_);}; IO::AIO::flush; return(@lstat); }