1#!perl 2 3use strict; 4use warnings; 5 6use Fatal qw( waitpid close ); 7use English qw( -no_match_vars ); 8 9my %manifest; 10 11## no critic (InputOutput::RequireBriefOpen) 12 13open my $manifest, '<', '../MANIFEST' 14 or Carp::croak("open of MANIFEST failed: $ERRNO"); 15 16FILE: while ( my $line = <$manifest> ) { 17 chomp $line; 18 $line =~ s/ \s* [#] .* \z//xms; 19 $manifest{$line} = 1; 20} 21 22close $manifest; 23 24my $pid = open my $rdr, q{-|}, 'svn', 'list', '-R', q{..} 25 or Carp::croak("open of svn list pipe failed: $ERRNO"); 26waitpid $pid, 0; 27 28FILE: while ( my $line = <$rdr> ) { 29 chomp $line; 30 next FILE if $line =~ m{ [/] \z }xms; 31 next FILE if -d $line; 32 next FILE if $manifest{$line}; 33 print "$line\n" or Carp::croak("Cannot print: $ERRNO"); 34} 35