1 |
dpavlin |
1 |
#! /usr/bin/perl -w |
2 |
|
|
|
3 |
|
|
use strict; |
4 |
|
|
|
5 |
|
|
my @files = <*.profile>; |
6 |
|
|
|
7 |
|
|
die "No *.profile files found\n" if !@files; |
8 |
|
|
|
9 |
|
|
for my $file (@files) { |
10 |
|
|
print STDERR "processing $file.\n"; |
11 |
|
|
|
12 |
|
|
open my ($f), '<', $file or die "open $file: $!"; |
13 |
|
|
open my ($fnew), '>', "$file.names" or die "create $file.names: $!"; |
14 |
|
|
|
15 |
|
|
my ($prog) = $file =~ /^(.*)\.profile\z/ or die; |
16 |
|
|
open my ($nm), "nm -n $prog |" or die; |
17 |
|
|
|
18 |
|
|
my %nm; |
19 |
|
|
while (<$nm>) { |
20 |
|
|
next if /^\s/; |
21 |
|
|
/^([0-9a-f]{8}) . (.*)/ or die "bad nm"; |
22 |
|
|
$nm{$1} = sprintf "%-30s", $2; |
23 |
|
|
} |
24 |
|
|
|
25 |
|
|
while (<$f>) { |
26 |
|
|
s/^([0-9a-f]{8})/$nm{$1} || $1/e; |
27 |
|
|
print $fnew $_; |
28 |
|
|
} |
29 |
|
|
} |