Perl Code
Danny
danny at tweegy.nl
Thu Jan 28 21:38:02 UTC 2016
Op 28-1-2016 om 21:29 schreef Jerry Benton:
> Can someone better than me at Perl, which isn’t really hard to do, try to make some sense of this? I am thinking this isn’t really applicable since Perl has pretty much been standardized. This is at the beginning of /usr/sbin/MailScanner.
>
> I am think I can cut this down to:
>
> require MIME::Base64;
> require MIME::QuotedPrint;
>
>
> ---
>
>
> # Awkard BEGIN block so that we pick up MIME::Base64 from the right place!
> BEGIN {
> my(@oldinc, at safecopy,$path, at corepaths, at notcorepaths);
>
> my $seensv = 0;
> foreach $path (@INC) {
> if ($path =~ /site|vendor/i) {
> $seensv = 1;
> }
> if ($seensv) {
> push @notcorepaths, $path unless $path eq '.';
> next;
> }
> # If it's a simple path before site or vendor, save it for the end
> if ($path =~ m#/usr/(local/)?lib\d*/perl\d*/\d\.\d#) {
> push @corepaths, $path;
> } else {
> push @notcorepaths, $path;
> }
> }
>
> # Now we have all the site and vendor paths in @notcorepaths, and the
> # perl5 paths in @corepaths. We want notcore + core, so the notcore ones
> # take priority.
> #print STDERR '@INC = ' . "\n" . join("\n", @INC) . "\n";
> @INC = (@notcorepaths, @corepaths);
> #print STDERR '@INC = ' . "\n" . join("\n", @INC) . "\n";
>
> # Look in /usr/local/mailscanner/utils for the modules
> @oldinc = @INC;
> @safecopy = @INC;
>
> # Duplicate path with /usr/local/mailscanner/utils stuck on the front
> # of each element
> foreach $path (reverse @oldinc) {
> next unless $path =~ /\//;
> $path =~ s/^\/usr/\/share\/mailscanner\/perl/;
> unshift @INC, $path;
> }
>
> require MIME::Base64;
> require MIME::QuotedPrint;
>
> @INC = @safecopy;
> }
>
I thinks the code wants to make sure a customized version of those MIME
modules located at /usr/share/mailscanner/perl are used if they exist
and the path already exists within @INC.
Regards,
Danny
More information about the MailScanner
mailing list