Perl: Howto...

Jan-Benedict Glaw jbglaw at lug-owl.de
Wed Jul 25 12:33:02 CEST 2001


Hallo!

Ich hab' ein kleines Perl-Problem und absolut keine Ahnung[1]:

Das LXR-Projekt (leider etwas eingeschlafen...) soll installiert werden
Um in den Linux-Quellen die #include <asm/blah.h> wiederfinden zu können,
benutzt LXR folgendes Mapping:

1. Architektur-Variable:
	'a'	=> {
		'name'  => 'Architecture',
		'range' => [ qw(i386 alpha arm cris ia64 m68k mips mips64 parisc ppc s390 s390x sh sparc sparc64)]
	},

2. Das Mapping:
	'maps'	=> {
		'/include/asm[^\/]*/'	=> '/include/asm-$a/',
		'/arch/[^\/]+/'		=> '/arch/$a/',
	},

Diese werden mittels

sub mappath {
    my ($self, $path, @args) = @_;
    my %oldvars;
    my ($m, $n);

    foreach $m (@args) {
                if ($m =~ /(.*?)=(.*)/) {
                        $oldvars{$1} = $self->variable($1);
                        $self->variable($1, $2);
                }
    }

    while (($m, $n) = each %{$self->{maps} || {}}) {
                $path =~ s/$m/$self->varexpand($n)/e;
    }

    while (($m, $n) = each %oldvars) {
                $self->variable($m, $n);
    }

    return $path;
}


auf einen Pfad angewendet, um z.B. für i386 aus /include/asm/blah.h
/include/asm-i386/blah.h zu machen. Mein Problem ist nun, daß es
in gaaaaaanz frühen Kerneln diese Architektur-Unterscheidungen noch
nicht gab. Ich habe versucht, eine weitere Architektur "noarch"
einzufügen sowie das Mapping

	'/include/asm-noarch/' => '/include/asm/'

aber das hat leider nicht funktioniert. Kann mir jemand sagen, wie ich
sowas machen kann?

MfG, JBG
[1] ...das bezieht sich natürlich nur auf Perl =8-]




More information about the Linux mailing list