MasteRaf:
здесь просто опечатка? - вместо $port правильно писать $ports
А Вы не пробовали сначала запустить? Нет, здесь нет опечаток.
MasteRaf:
или подскажи, в каких разделах учебников это можно найти (особенно /\\((\\d+[^)])/g )
Здесь сразу несколько тем.
Это $ports{$1}
читайте в разделе про хеши.
Об этом ++
читайте в разделе про операции.
Об этом while
читайте в разделе о циклах и в разделе об укороченной записи. В привычном для Вас формате это будет выглядеть так
while ( /\\((\\d+[^)])/g ) {
$ports{$1}++;
}
А это /\\((\\d+[^)])/g
регулярное выражение. Которое начинается символом /, далее ищет в переменной $_ открывающую скобку за что отвечает \\(, сразу после скобки ищутся любые цифры за что отвечает \\d+ и цифры ищутся до тех пор пока не встретится закрывающая скобка [^)], все найденные цифры сохраняются в переменной $1, за это отвечает другая пара скобок (), далее следует окончание регекспо /, а буква g нужна для того, чтобы сообщить компилятору, чтобы он не прекращал поиск в переменной $_ пока не будет достигнут её конец.
И ещё нужно посмотреть тему о спец. переменных, в данном случае о $_, даннай переменная заполняется в строке while (
) {.
Вроде всё.
Совет. Если же Вы решили изучить Перл, то лучше читать книгу с начала, а не урывками.