36 lines
		
	
	
		
			581 B
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			581 B
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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;
 |