После прочтения конфигурационного хеша с Config :: General вам необходимо выполнить итерацию по нему, найти ключи, которые являются диапазонами, и удалить их. Используйте два значения из диапазона, чтобы вставить новые ключи в хэш.
Perl's range operator ..
- это удобный способ сделать это. Также приятно, что delete
возвращает значение для ключа, который был удален.
my $client_map = {
'127.0.0.1' => 'FOO',
'XX.XX.XX.0-244' => 'BDE',
'XX.XX.XY.14-44' => 'TEST',
};
foreach my $ip_or_range (keys %{$client_map}) {
if (my ($lower, $upper) = $ip_or_range =~ m/(\d+)-(\d+)$/) {
my $name = delete $client_map->{$ip_or_range};
$ip_or_range =~ s/[^\.]+$//;
$client_map->{ $ip_or_range . $_ } = $name for $lower .. $upper;
}
}
Теперь хеш будет выглядеть примерно так.
\ {
127.0.0.1 "FOO",
XX.XX.XX.0 "BDE",
XX.XX.XX.1 "BDE",
XX.XX.XX.2 "BDE",
XX.XX.XX.3 "BDE",
XX.XX.XX.4 "BDE",
XX.XX.XX.5 "BDE",
XX.XX.XX.6 "BDE",
XX.XX.XX.7 "BDE",
XX.XX.XX.8 "BDE",
XX.XX.XX.9 "BDE",
XX.XX.XX.10 "BDE",
XX.XX.XX.11 "BDE",
XX.XX.XX.12 "BDE",
XX.XX.XX.13 "BDE",
XX.XX.XX.14 "BDE",
XX.XX.XX.15 "BDE",
XX.XX.XX.16 "BDE",
XX.XX.XX.17 "BDE",
XX.XX.XX.18 "BDE",
XX.XX.XX.19 "BDE",
XX.XX.XX.20 "BDE",
XX.XX.XX.21 "BDE",
XX.XX.XX.22 "BDE",
XX.XX.XX.23 "BDE",
XX.XX.XX.24 "BDE",
XX.XX.XX.25 "BDE",
XX.XX.XX.26 "BDE",
XX.XX.XX.27 "BDE",
XX.XX.XX.28 "BDE",
XX.XX.XX.29 "BDE",
XX.XX.XX.30 "BDE",
XX.XX.XX.31 "BDE",
XX.XX.XX.32 "BDE",
XX.XX.XX.33 "BDE",
XX.XX.XX.34 "BDE",
XX.XX.XX.35 "BDE",
XX.XX.XX.36 "BDE",
XX.XX.XX.37 "BDE",
XX.XX.XX.38 "BDE",
XX.XX.XX.39 "BDE",
XX.XX.XX.40 "BDE",
XX.XX.XX.41 "BDE",
XX.XX.XX.42 "BDE",
XX.XX.XX.43 "BDE",
XX.XX.XX.44 "BDE",
XX.XX.XX.45 "BDE",
XX.XX.XX.46 "BDE",
XX.XX.XX.47 "BDE",
XX.XX.XX.48 "BDE",
XX.XX.XX.49 "BDE",
XX.XX.XX.50 "BDE",
XX.XX.XX.51 "BDE",
XX.XX.XX.52 "BDE",
XX.XX.XX.53 "BDE",
XX.XX.XX.54 "BDE",
XX.XX.XX.55 "BDE",
XX.XX.XX.56 "BDE",
XX.XX.XX.57 "BDE",
XX.XX.XX.58 "BDE",
XX.XX.XX.59 "BDE",
XX.XX.XX.60 "BDE",
XX.XX.XX.61 "BDE",
XX.XX.XX.62 "BDE",
XX.XX.XX.63 "BDE",
XX.XX.XX.64 "BDE",
XX.XX.XX.65 "BDE",
XX.XX.XX.66 "BDE",
XX.XX.XX.67 "BDE",
XX.XX.XX.68 "BDE",
XX.XX.XX.69 "BDE",
XX.XX.XX.70 "BDE",
XX.XX.XX.71 "BDE",
XX.XX.XX.72 "BDE",
XX.XX.XX.73 "BDE",
XX.XX.XX.74 "BDE",
XX.XX.XX.75 "BDE",
XX.XX.XX.76 "BDE",
XX.XX.XX.77 "BDE",
XX.XX.XX.78 "BDE",
XX.XX.XX.79 "BDE",
XX.XX.XX.80 "BDE",
XX.XX.XX.81 "BDE",
XX.XX.XX.82 "BDE",
XX.XX.XX.83 "BDE",
XX.XX.XX.84 "BDE",
XX.XX.XX.85 "BDE",
XX.XX.XX.86 "BDE",
XX.XX.XX.87 "BDE",
XX.XX.XX.88 "BDE",
XX.XX.XX.89 "BDE",
XX.XX.XX.90 "BDE",
XX.XX.XX.91 "BDE",
XX.XX.XX.92 "BDE",
XX.XX.XX.93 "BDE",
XX.XX.XX.94 "BDE",
XX.XX.XX.95 "BDE",
XX.XX.XX.96 "BDE",
XX.XX.XX.97 "BDE",
XX.XX.XX.98 "BDE",
XX.XX.XX.99 "BDE",
XX.XX.XX.100 "BDE",
XX.XX.XX.101 "BDE",
XX.XX.XX.102 "BDE",
XX.XX.XX.103 "BDE",
XX.XX.XX.104 "BDE",
XX.XX.XX.105 "BDE",
XX.XX.XX.106 "BDE",
XX.XX.XX.107 "BDE",
XX.XX.XX.108 "BDE",
XX.XX.XX.109 "BDE",
XX.XX.XX.110 "BDE",
XX.XX.XX.111 "BDE",
XX.XX.XX.112 "BDE",
XX.XX.XX.113 "BDE",
XX.XX.XX.114 "BDE",
XX.XX.XX.115 "BDE",
XX.XX.XX.116 "BDE",
XX.XX.XX.117 "BDE",
XX.XX.XX.118 "BDE",
XX.XX.XX.119 "BDE",
XX.XX.XX.120 "BDE",
XX.XX.XX.121 "BDE",
XX.XX.XX.122 "BDE",
XX.XX.XX.123 "BDE",
XX.XX.XX.124 "BDE",
XX.XX.XX.125 "BDE",
XX.XX.XX.126 "BDE",
XX.XX.XX.127 "BDE",
XX.XX.XX.128 "BDE",
XX.XX.XX.129 "BDE",
XX.XX.XX.130 "BDE",
XX.XX.XX.131 "BDE",
XX.XX.XX.132 "BDE",
XX.XX.XX.133 "BDE",
XX.XX.XX.134 "BDE",
XX.XX.XX.135 "BDE",
XX.XX.XX.136 "BDE",
XX.XX.XX.137 "BDE",
XX.XX.XX.138 "BDE",
XX.XX.XX.139 "BDE",
XX.XX.XX.140 "BDE",
XX.XX.XX.141 "BDE",
XX.XX.XX.142 "BDE",
XX.XX.XX.143 "BDE",
XX.XX.XX.144 "BDE",
XX.XX.XX.145 "BDE",
XX.XX.XX.146 "BDE",
XX.XX.XX.147 "BDE",
XX.XX.XX.148 "BDE",
XX.XX.XX.149 "BDE",
XX.XX.XX.150 "BDE",
XX.XX.XX.151 "BDE",
XX.XX.XX.152 "BDE",
XX.XX.XX.153 "BDE",
XX.XX.XX.154 "BDE",
XX.XX.XX.155 "BDE",
XX.XX.XX.156 "BDE",
XX.XX.XX.157 "BDE",
XX.XX.XX.158 "BDE",
XX.XX.XX.159 "BDE",
XX.XX.XX.160 "BDE",
XX.XX.XX.161 "BDE",
XX.XX.XX.162 "BDE",
XX.XX.XX.163 "BDE",
XX.XX.XX.164 "BDE",
XX.XX.XX.165 "BDE",
XX.XX.XX.166 "BDE",
XX.XX.XX.167 "BDE",
XX.XX.XX.168 "BDE",
XX.XX.XX.169 "BDE",
XX.XX.XX.170 "BDE",
XX.XX.XX.171 "BDE",
XX.XX.XX.172 "BDE",
XX.XX.XX.173 "BDE",
XX.XX.XX.174 "BDE",
XX.XX.XX.175 "BDE",
XX.XX.XX.176 "BDE",
XX.XX.XX.177 "BDE",
XX.XX.XX.178 "BDE",
XX.XX.XX.179 "BDE",
XX.XX.XX.180 "BDE",
XX.XX.XX.181 "BDE",
XX.XX.XX.182 "BDE",
XX.XX.XX.183 "BDE",
XX.XX.XX.184 "BDE",
XX.XX.XX.185 "BDE",
XX.XX.XX.186 "BDE",
XX.XX.XX.187 "BDE",
XX.XX.XX.188 "BDE",
XX.XX.XX.189 "BDE",
XX.XX.XX.190 "BDE",
XX.XX.XX.191 "BDE",
XX.XX.XX.192 "BDE",
XX.XX.XX.193 "BDE",
XX.XX.XX.194 "BDE",
XX.XX.XX.195 "BDE",
XX.XX.XX.196 "BDE",
XX.XX.XX.197 "BDE",
XX.XX.XX.198 "BDE",
XX.XX.XX.199 "BDE",
XX.XX.XX.200 "BDE",
XX.XX.XX.201 "BDE",
XX.XX.XX.202 "BDE",
XX.XX.XX.203 "BDE",
XX.XX.XX.204 "BDE",
XX.XX.XX.205 "BDE",
XX.XX.XX.206 "BDE",
XX.XX.XX.207 "BDE",
XX.XX.XX.208 "BDE",
XX.XX.XX.209 "BDE",
XX.XX.XX.210 "BDE",
XX.XX.XX.211 "BDE",
XX.XX.XX.212 "BDE",
XX.XX.XX.213 "BDE",
XX.XX.XX.214 "BDE",
XX.XX.XX.215 "BDE",
XX.XX.XX.216 "BDE",
XX.XX.XX.217 "BDE",
XX.XX.XX.218 "BDE",
XX.XX.XX.219 "BDE",
XX.XX.XX.220 "BDE",
XX.XX.XX.221 "BDE",
XX.XX.XX.222 "BDE",
XX.XX.XX.223 "BDE",
XX.XX.XX.224 "BDE",
XX.XX.XX.225 "BDE",
XX.XX.XX.226 "BDE",
XX.XX.XX.227 "BDE",
XX.XX.XX.228 "BDE",
XX.XX.XX.229 "BDE",
XX.XX.XX.230 "BDE",
XX.XX.XX.231 "BDE",
XX.XX.XX.232 "BDE",
XX.XX.XX.233 "BDE",
XX.XX.XX.234 "BDE",
XX.XX.XX.235 "BDE",
XX.XX.XX.236 "BDE",
XX.XX.XX.237 "BDE",
XX.XX.XX.238 "BDE",
XX.XX.XX.239 "BDE",
XX.XX.XX.240 "BDE",
XX.XX.XX.241 "BDE",
XX.XX.XX.242 "BDE",
XX.XX.XX.243 "BDE",
XX.XX.XX.244 "BDE",
XX.XX.XY.14 "TEST",
XX.XX.XY.15 "TEST",
XX.XX.XY.16 "TEST",
XX.XX.XY.17 "TEST",
XX.XX.XY.18 "TEST",
XX.XX.XY.19 "TEST",
XX.XX.XY.20 "TEST",
XX.XX.XY.21 "TEST",
XX.XX.XY.22 "TEST",
XX.XX.XY.23 "TEST",
XX.XX.XY.24 "TEST",
XX.XX.XY.25 "TEST",
XX.XX.XY.26 "TEST",
XX.XX.XY.27 "TEST",
XX.XX.XY.28 "TEST",
XX.XX.XY.29 "TEST",
XX.XX.XY.30 "TEST",
XX.XX.XY.31 "TEST",
XX.XX.XY.32 "TEST",
XX.XX.XY.33 "TEST",
XX.XX.XY.34 "TEST",
XX.XX.XY.35 "TEST",
XX.XX.XY.36 "TEST",
XX.XX.XY.37 "TEST",
XX.XX.XY.38 "TEST",
XX.XX.XY.39 "TEST",
XX.XX.XY.40 "TEST",
XX.XX.XY.41 "TEST",
XX.XX.XY.42 "TEST",
XX.XX.XY.43 "TEST",
XX.XX.XY.44 "TEST"
}
@ips содержит все IP-адреса из журнала я должен соответствовать его с диапазоном, который определен в файл, если IP журнала соответствует IP-файлу или диапазон IP-то я должен напечатать имя – Developer
@Developer это просто достаточно. Сначала создайте полный хэш. Это дешевле сделать это один раз, чем выполнять согласование диапазона для каждой линии. – simbabque