Я пытаюсь создать массив хэшей.Это мой код$ 1, $ 2 и т. Д. Сопоставляются с регулярным выражением, и я проверил, что они существуют.
Обновление: Исправлена моя первоначальная проблема, но теперь у меня проблема с тем, что мой массивкогда я помещаю на него элементы, размер больше 1 не увеличивается ...
Обновление 2: Это проблема области действия, поскольку @ACL должны быть объявлены вне цикла.Спасибо всем!
while (<>) {
chomp;
my @ACLs = ();
#Accept ACLs
if($_ =~ /access-list\s+\d+\s+(deny|permit)\s+(ip|udp|tcp|icmp)\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(\s+eq (\d+))?/i){
my %rule = (
action => $1,
protocol => $2,
srcip => $3,
srcmask => $4,
destip => $5,
destmask => $6,
);
if($8){
$rule{"port"} = $8;
}
push @ACLs, \%rule;
print "Got an ACL rule. Current number of rules:" . @ACLs . "\n";
Массив хэшей, кажется, не становится больше.