| #!/usr/bin/perl |
| |
| my %data = (); |
| my %code = (); |
| |
| my @out = (); |
| |
| my $fn = $ARGV[0]; |
| |
| while (<>) { |
| push(@out, $_); |
| /^\s*exports/i and last; |
| } |
| |
| while (<>) { |
| my $key; |
| $arr = /\sDATA\s*$/o ? \%data : \%code; |
| $_ =~ s/^\s+//; |
| my $key = (split(' ', $_))[0]; |
| substr($key, 0, 1) = '' while $key =~ /^_/o; |
| chomp $key; |
| $arr->{$key}->{$_} = 1; |
| } |
| |
| for my $k (sort keys %data) { |
| push(@out, sort {$b cmp $a} keys %{$data{$k}}); |
| } |
| |
| for my $k (sort keys %code) { |
| push(@out, sort {$b cmp $a} keys %{$code{$k}}); |
| } |
| |
| open(R, '>', $fn); |
| print R @out; |
| close R; |