Perl Regexp

Lutz Donnerhacke lutz at iks-jena.de
Don Jul 13 14:17:43 CEST 2000


* Nils Juenemann wrote:
>lutz at iks-jena.de wrote:
>> Mit ($a, $b) = ($1, $2) if /^(.*)\.([^.]*)$/ kannst Du den letzten Punkt
>> nehmen.
>
>Das funktioniert aber nur bei gleicher Punktanzahl.

Nein.

>> Noch effizienter ist aber rindex und substr.
>
>Ich habs jetzt so gemacht:
[...einen Schrei gelöscht...]

>Das Problem war ich habe tausende von files, welche alle 
>noch etwas vor die Dateierweiterung bekommen sollen.
>
>Also aus blafasel.123.test.txt soll blafasel.123.test.neu.txt
>werden. Wobei die Anzahl der Punkte variert.

$ perl -pe '
    chomp;
    @_ = split(/\./, $_);
    $_ = join(".", @_[$[..$#_-1]).".neu".$_[$#_];
'
blafasel.123.test.txt
blafasel.123.test.neu.txt

Oder besser:
$ perl -pe 's/^(.*)\.([^.]*)$/$1.neu.$2/'
blafasel.123.test.txt 
blafasel.123.test.neu.txt