in reply to Any hints on how to do this?

The whole processing can be done by one command :)
#!/usr/bin/perl use warnings; use strict; my $str = <<PAIRS; GEORGE 21 GEORGE 45 NICK 12 PETER 27 JIM 18 JIM 87 CHRIS 33 PAIRS my $name =''; $str = join "\n\n", map { sprintf "%-8s %s", ($_->[0] ne $name ? $nam +e = $_->[0] : ''), $_->[1]} map { [split " ", $_, 2] } split /\n+/, $ +str; print $str;
It prints:
GEORGE 21 45 NICK 12 PETER 27 JIM 18 87 CHRIS 33
The snippet assumes that the lines containing the same name follow each other. It clears the name only if it is equal to one in previous line.

     s;;Just-me-not-h-Ni-m-P-Ni-lm-I-ar-O-Ni;;tr?IerONim-?HAcker ?d;print