::= NUMBER ('.') NUMBER ('.') NUMBER ('.') NUMBER action => joinipv4 ::= NAMECH+ separator => DOT action => joinhostname ... sub joindot { join '.', @_ } sub joinipv4 { shift, ["ipv4", (joindot @_)] } sub joinhostname { shift, ["hostname", (joindot @_)] }