Товарищи, есть практический вопрос. Что-то то ли я документацию не осилил, то ли там такого и не было...
Сабж (рабочий код):
#!/usr/bin/perl
my $rule = "-A INPUT -s 192.168.0.2/32 -j ACCEPT"; #1
$rule =~ s/\./p/g; #3
$rule =~ /(\w+)(?=\/32)/; #2
my $ip = $1;
$ip =~ s/p/\./g; #4
print("$ip\n");
exit 0;
Идея - анализировать правило iptables с целью извлечения из него ip адреса.
Правило назначается на отметке #1. Айпишник должен забираться с помощью строчки с отметкой #2. Суть - забирать слово, стоящее перед фрагментом "/32", т.е. требуемый ip. Но забирается только последний октет адреса, т.к. оный содержит знак "точка". Чтобы обойти это, были добавлены костыли #3 и #4.
Не красиво.
Товарищи, не подскажите, как это сделать в одно выражение? Чтобы не делать замены и т.д.? Возможно ли заэкранировать точку, точнее контекст "конца слова", который точка и несёт? Или стоит заменить само выражение? Если будут примеры - вдвойне хорошо.
Спасибо