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: