in reply to Let's do it transparently

sub os_port { foreach (@_) { $sock = new IO::Socket::INET(PeerAddr => $server, PeerPort => $_, Proto => 'tcp'); last if $sock; } $sock; }

Subroutines defined at compile time have package scope so it makes little sense to define them inside a loop.    You will never get a new subroutine for each loop iteration.



while (<$sock>) { $sock_string = $_; last; }

Why not just:

$sock_string = <$sock>;

Replies are listed 'Best First'.
Re^2: Let's do it transparently
by rustic (Monk) on Sep 07, 2011 at 07:40 UTC
    I do completely agree with you jwkrahn. Regarding the subroutine invocation I didn't realize this misfunctionality. Regarding the while (<$sock>) {} loop I was looking to grab the result I need from a few lines response I got in my test, so this left like that. Thank you for rectifications indeed.