#! /usr/bin/perl -w
use strict;
my @files = <*.profile>;
die "No *.profile files found\n" if !@files;
for my $file (@files) {
print STDERR "processing $file.\n";
open my ($f), '<', $file or die "open $file: $!";
open my ($fnew), '>', "$file.names" or die "create $file.names: $!";
my ($prog) = $file =~ /^(.*)\.profile\z/ or die;
open my ($nm), "nm -n $prog |" or die;
my %nm;
while (<$nm>) {
next if /^\s/;
/^([0-9a-f]{8}) . (.*)/ or die "bad nm";
$nm{$1} = sprintf "%-30s", $2;
}
while (<$f>) {
s/^([0-9a-f]{8})/$nm{$1} || $1/e;
print $fnew $_;
}
}