2013-02-01T15:52:21 Superfrank
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#! /usr/bin/perl use strict; use warnings; use File::Basename qw( basename ); my $dir = 'aaa/bbb/ccc.php'; # nicht ersetzen, sondern einfangen; spart Arbeit my ($last_part) = $dir =~ m{([^/]+)$}; # basename nutzen my $basename = basename($dir); # oder alles ersetzen (nicht nur den letzten Teil) $dir =~ s{.*?([^/]+)$}{$1}; print "Matched: $last_part\n", "basename: $basename\n", "Replaced: $dir\n", ; __DATA__ Result should be: Matched: ccc.php basename: ccc.php Replaced: ccc.php
1 2 3 4 5
my $dir = 'aaa/bbb/ccc.php'; my $dateiname = (split /\//,$dir)[-1]; # Dateinamen aufsplitten nach Pfadtrenner # -1 = letzter Eintrag in Array mit den split-Ergebnissen
s/^.*\/([^\/]{1,})$/$1/
2013-02-05T12:10:58 FIFOSo handabe ich das auch, /x und strukturiert.Wenn ich aber bei einer RegEx nach 2 Wochen zweimal hinschauen muss, um sie wieder zu verstehen, ändere ich sie lieber, meist mit /x und optischen Lücken und klarer Trennung von search- und replace-Teil.