use v6; port_check( ['perlmonks.com', 'fail.com', 'perlmonks.org'], 22 ); sub port_check( @nodes, $port ) { my @promises = @nodes.map( -> $host { IO::Socket::Async.connect( $host, $port ) }); await Promise.allof( @promises ); for @nodes Z @promises -> [$node, $promise] { if $promise.status ~~ Kept { given $promise.result { my $peer = "{.peer-host}:{.peer-port}"; my $socket = "{.socket-host}:{.socket-port}"; say "$socket connected to $peer"; .close; } } else { say "not connected to $node:$port"; } } }