local $/ = ","; my $dn = ""; while(<>) { my $complete_dn; if(m/ \A (.+) \n ( \w+ = .+ ,) \z /sx) { $complete_dn = $dn . $1; $dn = $2; } else { $dn .= $_; } if($_ = $complete_dn) { s/\n+//g; do_whatever_with($_); } } #### local $/ = ","; my $dn = ""; while(<>) { my $complete_dn; if(m/ \A (.+ = .+) \n ( \w+ = .+ ,) \z /sx) { $complete_dn = $dn . $1; $dn = $2; } else { $dn .= $_; } if($_ = $complete_dn) { s/\n+//g; print $_, "\n"; } } #### #!/usr/bin/perl -w use strict; undef $/; my $data = ; my @munged = ($data) x length $data; substr $munged[$_], $_, 0, "\n" for 0 .. $#munged; print @munged; __END__ cn=Perl Monks,ou=Dining Hall,ou=Monastery,c=Universe