+ # ignore the test extensions, dont install PPPort.so/.dll
+ return if $dir =~ m{\b(?:XS/(?:APItest|Typemap)|Devel/PPPort)\b};
+ return if $name =~ m{\b(?:APItest|Typemap)\.pm$};
+ # ignore the build support code
+ return if $name =~ /\bbuildcustomize\.pl$/;
+ # ignore the demo files
+ return if $dir =~ /\b(?:demos?|eg)\b/;
+ # ignore unneeded unicore files
+ if ( $dir =~ /^unicore/ ) {
+ if ( $name =~ /\.txt\z/ ) {
+ # We can ignore most, but not all .txt files
+ return unless $name =~ /\A(?:Blocks|SpecialCasing|NamedSequences)\.txt\z/;
+ }
+ else {
+ # TestProp only needed during testing
+ return if $name =~ /\ATestProp.pl\z/;
+ # we need version and *.pl files and can skip the rest
+ return unless $name =~ /\A(?:version|\w+\.p[lm])\z/;
+ }
+ }
+
+ # ignore READMEs, MANIFESTs, INSTALL docs, META.ymls and change logs.
+ # Changes.e2x and README.e2x are needed by enc2xs.
+ return if $name =~ m{^(?:README(?:\.\w+)?)$} && $name ne 'README.e2x';
+ return if $name =~ m{^(?:MANIFEST|META\.yml)$};
+ return if $name =~ m{^(?:INSTALL|TODO|BUGS|CREDITS)$}i;
+ return if $name =~ m{^change(?:s|log)(?:\.libnet)?$}i;
+ return if $name =~ m{^(?:SIGNATURE|PAUSE200\d\.pub)$}; # CPAN files
+ return if $name =~ m{^(?:NOTES|PATCHING)$}; # ExtUtils files
+
+ # if using a shared perl library then ignore:
+ # - static library files [of statically linked extensions];
+ # - import library files and export library files (only present on Win32
+ # anyway?) and empty bootstrap files [of dynamically linked extensions].
+ return if $Config{useshrplib} eq 'true' and
+ ($name =~ /$Config{_a}$/ or $name =~ /\.exp$/ or ($name =~ /\.bs$/ and -z $name));