Код:#!/usr/local/bin/perl
use warnings;
use strict;
use IO::Socket;
our $sock = new IO::Socket::INET(PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp') or die "Can't connect\n";
our $slink = \$sock;
while (my $input = <$sock>) {
chomp $input;
$input =~ s/(\r|\n)//gs;
if ($input =~ /^DATA(.*)$/i) {
sock_data_work($input);
}
}
sub sock_data_work {
...
if (...) {
print $sock "line\n";
while (my $inp =<$$slink>) {
....
}
}
}
Суть: есть скрипт, слушающий сокет и обрабатывающий приходящие данные. При наступлении условия вызывается функция sock_data_work, которой передаются все данные из сокета, подхлдящие под регулярку. Внутри этой функции я хочу получить доступ ко всем данным сокета.
Если пробовать в лоб - while (my $inp = <$sock>) - то есть слушать тот же сокет по тому же объекту - в $inp приходят только те данные, которые удовлетворяют регулярке ^DATA(.*)$, но не остальные.
По ссылке как выше - не работает в принципе.
Подскажите, как организовать что-то подобное.