我正在尝试制作一个散列数组。这是我的密码。$1、$2等是从正则表达式中匹配的,我已经检查了它们是否存在。
更新:修复了我最初的问题,但现在我遇到了一个问题,即当我将项目推到数组上时,数组的大小没有超过1。。。
更新2:这是一个范围问题,因为@ACL需要在循环之外声明。谢谢大家!
while (<>) {
chomp;
my @ACLs = ();
#Accept ACLs
if($_ =~ /access-lists+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 . "
";
哈希数组似乎并没有变得更大。