Это может сработать для вас. Я отметил свои предположения по каждой строке.
my %users = ( 210 => 'radek' );
Я предполагаю, что вы хотели разреженный массив. Хэши - стандартная реализация разреженных массивов в Perl.
my @octet = split ' ', $ENV{SSH_CLIENT}; # split the value on spaces
Я предполагаю, что вы все еще хотите использовать окружение переменную SSH_CLIENT
my ( $some_var ) = $octet[0] =~ /\.(\d+)$/;
Вы хотите последний набор цифр от '.'
до конца.
- Парень вокруг переменной помещает назначение в контекст списка.
- В контексте списка совпадение создает список всех «захваченных» последовательностей.
- Назначение скаляра в контексте списка означает, что из списка назначается только количество скаляров в выражении.
Что касается вашего вопроса в комментариях, вы можете получить переменную из хеша:
$db = $users{ $some_var };
# OR--this one's kind of clunky...
$db = $users{ [ $octet[0] =~ /\.(\d+)$/ ]->[0] };