#!/usr/bin/perl -w use strict; while () { chomp; my $separator = qr{(?:%?/ou=)|/cn=}; my @fields = split( $separator, $_ ); shift(@fields); # remove empty first field while (my ($city, $recip, $name) = splice(@fields, 0, 3)) { die "bad $recip format\n" if $recip ne 'Recipients'; print "city: $city name: $name\n"; } } __DATA__ /ou=Boston/cn=Recipients/cn=jdye%/ou=San Francisco/cn=Recipients/cn=onisbett%/ou=Boston/cn=Recipients/cn=acorneau%/ou=Boston/cn=Recipients/cn=kfleming%/ou=Boston/cn=Recipients/cn=amiller%/ou=Boston/cn=Recipients/cn=rcrow%/ou=Boston/cn=Recipients/cn=tgoshco%/ou=San Francisco/cn=Recipients/cn=ldixon /ou=San Francisco/cn=Recipients/cn=medelstein%/ou=Boston/cn=Recipients/cn=thodes%/ou=San Francisco/cn=Recipients/cn=gdistasi%/ou=Boston/cn=Recipients/cn=staylor%/ou=Boston/cn=Recipients/cn=drico%/ou=Boston/cn=Recipients/cn=kkarrman%/ou=Boston/cn=Recipients/cn=tgoshco%/ou=San Francisco/cn=Recipients/cn=rscaife