На самом деле не всё так сложно. В примере используется конвеер справа налево.
1. cначала команда split(/PATTERN/, EXPR) делит строку в массив (в примере скобки опущены);
2. затем массив передаётся команде grep {/PATTERN/}, которая отфильтровывает строки в соответствии с шаблоном;
3. оставшиеся строки сохраняются в массиве @local_domains_acl.
Если перед grep написать sort, то массив, прошедший фильтр grep, ещё и отсортируется (@local_domains_acl = sort grep ...)