[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Perl Frage



Norbert Preining <preining@logic.at> writes:
> Beim basteln an den TeX live Debian packages bin ich auf folgendes Problem 
> gestoßen: Ich muss Dateien umbennenen und die Angaben dazu würde ich
> gerne in einer config Datei haben. Bis jetzt noch ganz einfach, jetzt
> wird es kompliziert: Die config Datei sollte auch patterns zulassen
> (auch noch einfach), aber auch auf die eingefangenen Variablen im Target
> zurückgreifen können.
> 
> Beispiel:
> 
> Was man direkt schreiben würde
> 	if ($f =~ m|texmf-doc/man/man(.*)/(.*)$|) {
> 		copy ($f, "$newdest/man/man$1/$2");
> 	}
> möchte ich mit einem Eintrag im config file:
> 	texmf-doc/man/man(.*)/(.*):$newdest/man/man$1/$2
> erreichen. Also im neuen Dateinamen sollten
> - Variablen expandiert werden
> - Referenzen auf regexp auch erweitert werden
> 
> Kann mir da wer einen Perl code dazu schicken? 
> 
> Was ich geschafft habe ist eigentlich alles außer die backreferences auf
> die eingefangenen regexps. Ich hoffe da kann mir wer von euch helfen.

Das ist eigentlich eine Frage für de.comp.lang.perl.misc.

Normalerweise sollte folgendes funktionieren:

---------------------->8--------------------------------------------------
#! /usr/bin/perl

my $newdest='somepath';
my $pats='texmf-doc/man/man(.*)/(.*)';
my $replacement='$newdest/man/man$1/$2';
$replacement='"' . $replacement . '"';

my $pat=eval { qr/$pats/ } || die ;

while(my $f = <DATA>)
{
    chomp($f);
    my $temp=$f;
    if( $temp =~ s/$pat/$replacement/ee )
    {
        print(join(' to ', $f, $temp), "\n");
    }
}

__DATA__
texmf-doc/man/man1/latex.1.gz
---------------------->8--------------------------------------------------

Thomas Jahns
-- 
"Computers are good at following instructions,
 but not at reading your mind."
D. E. Knuth, The TeXbook, Addison-Wesley 1984, 1986, 1996, p. 9



Reply to: